Estimação dos Custos de Software
A estimação dos custos de
software envolve, na
realidade, vários tipos de
estimação, nomeadamente
a estimação de custos,
recursos, agenda,
qualidade, fiabilidade,
manutenção e melhoria. No
fundo, esta actividade
envolve a previsão da
calendarização, dos
recursos e dos custos
necessários para a
produção e manutenção
dos produtos previstos
num projecto de software.
Os produtos previstos num projecto de software envolvem necessariamente o código,
mas também a produção de documentos relacionados com requisitos, planos,
especificações, ou manuais de utilizador. De igual modo, é necessário encontrar e
resolver os bugs. A produção de documentos é normalmente mais cara do que o
desenvolvimento de código. No entanto, a actividade mais dispendiosa do
desenvolvimento de software é a identificação e resolução de bugs.
De uma forma geral, as empresas de maior sucesso da indústria de software seguem
os oito passos que apresentamos a seguir para a estimação dos seus custos de
software.
1. Avaliar a Dimensão
A avaliação da dimensão tem a ver com a necessidade de prever o esforço
necessário para a produção dos principais entregáveis. Alguns dos aspectos mais
importantes a ter em conta nesta avaliação são os documentos em papel
(especificações, planos, manuais), o código fonte (novo código, código reutilizável),
os casos de teste (novos e reutilizáveis) e os potenciais problemas/defeitos
(requisitos, design, código, documentos, más resoluções de problemas/defeitos ou
problemas/defeitos secundários).
2. Identificar as Actividades a Serem Incluídas
Existem métodos de estimação que propõem listas predefinidas de actividades
correntes a nível do desenvolvimento de software, incluindo requisitos, análise,
design interno e externo, aquisição de código reutilizável, aquisição de pacotes,
desenvolvimento de código novo, modificação de código existente, integração,
inspecções de código e de design, testes, produção de documentos para o utilizador,
etc.
Apesar da proposta destas listas, é necessário identificar as actividades e as tarefas
que é necessário realizar no âmbito de um dado projecto. Por exemplo, os projectos
cliente/servidor de pequena dimensão só utilizam normalmente menos de uma
dezena das 25 actividades previstas na lista SPR. As aplicações mainframe utilizam
cerca de dezena e meia e os projectos de software que envolvem grandes sistemas
precisam de identificar ainda mais actividades (cerca de duas dezenas).
Os projectos de software militar são os mais exigentes a este nível, uma vez que
envolvem todas as actividades previstas na lista SPR. Seja qual for a complexidade
dos projectos de software, é praticamente impossível efectuar estimações realistas
(ou com grande exactidão) sem se conhecerem bastante bem as actividades que vão
ser realizadas.
3. Estimar os Defeitos Potenciais do Software e os Métodos de Resolução
A parte mais dispendiosa (em termos de tempo e de dinheiro) nos projectos de
desenvolvimento de software é a identificação dos bugs e a sua resolução. Desta
forma, não é possível criar estimativas de custo de software realistas sem prever os
potenciais defeitos e sem conhecer a eficácia dos vários tipos de análises,
inspecções e fases de teste planeados no âmbito do projecto.
Os gestores de projecto deverão assim recorrer a ferramentas de estimação que
incluam capacidades de estimação de defeitos e que suportem os vários tipos
conhecidos de remoção de defeitos. A utilização deste tipo de ferramentas é
necessária porque o esforço total, o tempo e o custo inerentes a uma série completa
de análises, inspecções e testes multinível serão muito maiores do que os envolvidos
na produção do código fonte.
4. Estimar as Necessidades de Recursos Humanos
Cada entregável previsto num projecto de software tem uma abrangência de
atribuição característica. Ou seja, a quantidade de trabalho que pode ser atribuída a
uma única pessoa. Por exemplo, a um programador poderá ser atribuída, em média,
uma carga de trabalho entre as 5000 e as 15000 declarações de código (entre cerca
de 50 e 2000 pontos de função).
Até aqui parece fácil. No entanto, os grandes sistemas também têm outros tipos de
especialistas, nomeadamente administradores de base de dados, especialistas em
qualidade, especialistas em escrita técnica, especialistas de testes, etc. Para a
estimação dos custos de software é necessário identificar as várias categorias de
trabalhadores necessárias à prossecução do projecto, assim como o número de
trabalhadores de cada categoria.
5. Ajustar as Previsões com Base nas Capacidades e na Experiência
As pessoas envolvidas num projecto de software podem ser desde especialistas de
topo (com muitos anos de experiência) até pessoas que estão a participar pela
primeira vez num projecto de software real. Depois de terem sido identificadas as
categorias técnicas necessárias (passo anterior), será necessário proceder aos
ajustamentos necessários. Nesta tarefa, é muito importante ter em conta aspectos
como a experiência e as aptidões de cada indivíduo.
De uma forma geral, os indivíduos especialistas e mais experientes poderão assumir
maior volume de trabalho e conseguirão realizá-lo mais rapidamente do que os
recursos menos experientes. Isto significa que os recursos experientes terão uma
abrangência de atribuição maior e níveis de produção mais elevados do que os seus
congéneres com menos experiência. Outros tipos de ajustes incluem as férias e os
feriados, as horas extra que são pagas e as que não são pagas, ou ainda aspectos
relacionados com a eventual dispersão geográfica da equipa do projecto.
6. Estimar Recursos e Calendarização
As estimações de recursos e de calendarização estão bastante interligadas e são
efectuadas frequentemente de forma iterativa. Para uma estimação realista dos
recursos é necessário conhecer bastante bem a equipa de software (em termos de
número de indivíduos e de níveis de experiências). De igual modo, é imprescindível
conhecer a dimensão (volume de trabalho necessário) dos entregáveis que é
suposto produzir ao longo do projecto.
Para a estimação da agenda de um projecto de desenvolvimento de software é
necessário conhecer bem as actividades que irão ser realizadas, a dimensão dos
vários resultados previstos, a sobreposição de actividades com dependências
mútuas, ou o número de indivíduos e os níveis de experiência da equipa de software.
7. Estimar os Custos
A estimação dos custos de um projecto de software é o último passo do trabalho de
estimação. Os custos dos projectos desta natureza variam normalmente em função
de vários factores. Por exemplo:
•
•
•
•
O salário médio dos trabalhadores varia conforme as empresas, região ou
indústria;
Os custos operacionais aplicados aos salários de software variam ainda
mais do que a compensação básica;
Nos projectos de longo prazo, a inflação tem que ser tida em conta;
Nos projectos internacionais, é necessário considerar as taxas de conversão
entre unidades monetárias diferentes.
Além das variações referidas atrás (entre outras), existem alguns custos especiais
em que os projectos de software podem incorrer e que será necessário considerar de
forma independente. Como exemplos desses custos, podemos referir:
•
•
•
•
•
A aquisição de licenças de software necessárias à prossecução do projecto;
Os custos de capital para novo equipamento;
Os custos relacionados com novos membros da equipa (mudanças e outras
despesas de manutenção);
Os custos de viagens e outros (dependendo dos projectos);
Os custos relacionados com fornecedores contratados e subcontratados.
8. Manter e Melhorar a Estimação
Os projectos de software podem continuar a ser utilizados e modificados ao longo do
tempo. Desta forma, a manutenção e o melhoramento das estimações é essencial.
Inclusivamente, esta actividade é mais complexa do que a estimação de custos para
novos projectos. Uma forma útil de lidar com essa complexidade é recorrer a
ferramentas de estimação que suportem o melhoramento e manutenção das
estimativas para um mínimo de cinco anos e um máximo de 20 anos após a
implementação inicial.
A estimação dos custos de software e o planeamento de software são duas
actividades relacionadas. Consequentemente, tem-se assistido a aquisições e fusões
entre fornecedores de ferramentas de planeamento e fornecedores de ferramentas
de estimação.
Baseado no artigo “Software Project Management in the Twenty-First Century”, de
Capers Jones, Chief Scientist na Artemis Management Systems.
Tel: (+351) 239 497 230 / 2 • Fax: (+351) 239 497 231
E-mail: [email protected] • Internet: www.engenharia-software.com
Download

Estimação dos Custos de Software