Estimativas de tamanho de software e APF
|
As métricas de tamanho de software surgiram com o objetivo de
estimar o esforço(número de pessoas-hora) e o prazo associados ao
desenvolvimento de sistemas.
|
Para saber o custo de um projeto de software precisamos saber
o esforço necessário para desenvolvê-lo e para determinar o esforço precisamos
saber o tamanho do projeto de software. Desta forma , determinar o tamanho de um
projeto de software é uma das primeiras e principais atividades relacionadas às
estimativas a serem efetuadas durante o clico de vida do projeto.
"A estimativa de tamanho de software é o coração do
processo de estimativas de um projeto de software" . (PUTMAN,1992)
Realizar uma estimativa de tamanho de um projeto não é uma
tarefa trivial , pois exige um conhecimento sobre técnicas de estimativas , base
histórica e conhecimento sobre o projeto a ser estimado.
De acordo com Tom Demarco (DEMARCO,1991) as duas principais
maneiras de estimar o tamanho de um projeto de software são :
1-) Por Analogia – As estimativas de tamanho do projeto atual
são baseadas em estimativas já realizadas em projetos similares.
2- ) Realizando medições das características do produto e
usando uma metodologia e algoritmo para converter a medição em uma estimativa de
tamanho.
Existem várias técnicas de estimativas de tamanho de software
, e a seguir são apresentadas , de forma resumida, as mais importantes:
- COCOMO ( Constructive Cost Model) [COCOMOII] – Modelo desenvolvido
para estimar o esforço de desenvolvimento, prazos e tamanho da equipe para
projetos de software. Utiliza equações desenvolvidas por Boehm (BARRY,1981)
para prever o número de programadores-mês e o tempo de desenvolvimento; podem
ser calculados usando medidas de linhas de código ou Pontos de Função. Devem
ser realizados ajustes nas equações a fim de representar as influências sobre
os atributos , hardware e software durante o ciclo de vida do projeto. Uma
desvantagem desta técnica é que os coeficientes da métrica (a,b,c,d) não são
aplicáveis a tamanho ou seja a produtividade é diferente, o que torna difícil
realizar comparações.
- Linhas de Código – (LOC) – A técnica de mensuração por linhas de código é
uma das mais antigas medidas de tamanho de projeto de desenvolvimento de
software. Ela consiste na contagem da quantidade de número de linhas de código
de um programa de software. Além de ser muito simples é também muito fácil
automatizar sua implementação , mas, apresenta algumas desvantagens dentre as
quais citamos: a dependência da linguagem de software e do desenvolvedor
(PRESSMAN,1995); ausência de padrão de contagem e o fato de somente poder ser
aplicada na fase de codificação.
- Metricas de Hasltead – È um conjunto de métricas proposto por Maurice
Halstead (HASLTEAD,1977). O princípio desse método está na análise e
quantificação de operandos e operadores e no conceito de que a partir do
conhecimento das medidas, consegue-se quantificar os vocábulos e a extensão do
algoritmo do estudo.
- Puttnam´s Slim Model
(PUTMAN,1978) – È um modelo de estimativa que
busca medir esforço e prazo através da dinâmica de múltiplas variáveis que
pressupõe distribuição de esforços específicos ao longo da existência de um
projeto de software. Relaciona o número de linhas de código ao tempo e esforço
de desenvolvimento. Uma desvantagem da técnica é sua vinculação a linguagem
usada e a exigência de certo tempo para obter-se valores reais para os
parâmetros da fórmula.
- Delphi – È uma técnica que se resume à consulta de especialistas de
determinada área, em determinada linguagem e/ou determinado assunto para que,
usando sua experiência e entendimento do projeto proposto, façam estimativas
devidas. Devem ser feitas várias estimativas do mesmo projeto, pois é comum
que elas carreguem influências e tendências dos especialistas. É um método
empírico, baseado em experiências profissionais que podem ser subjetivas.(Boehm,1981)
- PSP – Personal Software Process – (HUMPHREY,1995) – È uma técnica
derivada do SEI-CMM (Software Engineering Institute – Capability Matutiry
Model) que foi desenvolvida com a função de capacitar , melhorar e
otimizar o processo individual de trabalho. A técnica divide-se em sete
etapas, sendo que nas etapas PSP0, PSP0.1 e PSP1 estima-se o tamanho e o tempo
necessário para o desenvolvimento do produto.
- PCU – Pontos por Caso de Uso – Foram criados por Gustav Karner em 1993
como uma adaptação específica dos Pontos de Função para medir o tamanho de
projetos de software orientados a objeto. Explora o modelo e descrição do caso
de uso, substituindo algumas características técnicas proposta pelos Pontos de
Função. É um método simples e de fácil utilização mas ainda esta em fase de
pesquisas e não existem regras de contagem padronizadas. Têm se estudado a
aplicação em conjunto da PCU e APF tentando explorar a relação entre elas
existente.(EDMÉIA,2004)
- Análise por Pontos de Função (ALBRECHT,1983)
– Busca medir a complexidade
do produto pela quantificação de funcionalidade expressa pela visão que o
usuário tem do mesmo. O modelo mede o que é o sistema , o seu tamanho
funcional e não como este será, além de medir a relação do sistema com
usuários e outro sistemas. È independente da tecnologia usada e mede uma
aplicação pelas funções desempenhadas para/e por solicitação do usuário
final.; podendo também ser usada em estimativas.
- Contagem de Pontos de Função segundo o NESMA – Netherlands Function
Point Users Group – (NESMA,2005). Além do IFPUG , o NESMA também
promove o uso de pontos de função e publica o seu próprio manual de contagem
complacente com o manual do IFPUG. O manual da NESMA apresenta três tipos de
contagens por pontos de função: a contagem indicativa de ponto de função, a
contagem estimada de ponto de função e a contagem detalhada de pontos de
função. A contagem indicativa é muito usada , nela são identificados os
grupamentos de dados relativos à natureza do negócio, conforme a visão do
usuário. Estes grupamentos são classificados como Internos (mantidos pela
aplicação e Externos (referenciados ou consultados pela aplicação). Para
calcular o tamanho de uma aplicação em Pontos de Função não Ajustados (PFNA) a
NESMA recomenda a seguinte fórmula: PFNA = ( 35 * I) + ( 15 * E ).
A estimativa de tamanho de um projeto de software é uma
atividade crítica pois tem um impacto tanto na solução técnica apresentada como
no gerenciamento do projeto de software devendo ser efetuada não somente no
início do projeto mas durante o ciclo de vida do projeto.
As técnicas apresentadas acima são apenas algumas dentre as
muitas existentes, sendo que cada uma abrange uma determinada área; não existe
uma métrica que completa o estudo por si só, desta forma, recomenda-se que seja
utilizada a técnica mais adequada para medir projeto de software ou a utilização
de mais de uma técnica em conjunto.
Dentre as técnicas descritas, a mais popular atualmente é a
técnica de Análise por Pontos de Função. Esta técnica é respaldada pelo IFPUG
(International Function Point Users Group), que é responsável, entre outros,
pela elaboração e divulgação de um manual de práticas de contagem (CPM –
Counting Practices Manual), além de manter um programa de certificação de
profissionais especializados em aplicar a técnica APF.
A Análise de Pontos de Função (APF) é uma das métricas de
estimativa de tamanho mais sedimentadas no mercado e que proporciona resultados
cada vez mais precisos à medida que artefatos da fase de análise e projeto são
gerados (CALDIEIRA et al., 1998).
Análise por Pontos de Função
A técnica da Análise por Pontos de Função – APF , surgiu na
IBM, no início da década de 70, como uma alternativa ás métricas baseadas em
linhas de código. Os conceitos desta técnica foram introduzidos por Allan J.
Albrecth, em uma conferência do GUIDE – Grupo de Usuários IBM, em 1979.
A técnica foi refinada por Albert em 1984 , e , a partir
desta data houve um aumento considerável na sua utilização , o que levou a
necessidade de definir um padrão para aplicação da técnica. Com este objetivo
foi criado em 1986 o International Function Point Users Group (IFPUG) que
passou a ser responsável pela definição das regras de contagem, treinamento e
certificação dos usuários da técnica. Em 1990 foi lançada a primeira versão do
Manual de Práticas de Contagem ou CPM – Counting Practices Manual
com o objetivo de padronizar a técnica. (VAZQUEZ,2005)
Atualmente a APF é a técnica mais usada para estimativa de
tamanho de software. Em 1998, foi constituído o BFPUG – Brazilian Function
Point Users Group – o representante do IFPUG no Brasil. Uma pesquisa
realizada pela Secretaria de Política de Informática – SEPIN , em 2001, indicou
que a utilização da APF vem crescendo no Brasil, conforme mostra a tabela 2.1:
Tabela 2.1: Métricas primitivas utilizadas para medir a
qualidade dos processos de software.
Categorias |
Nº de organizações |
Percentual(%) |
Linhas de código ( LOC ) |
25 |
5,6 |
Pontos por função ( Function Point ) |
43 |
9,6 |
Outras métricas |
26 |
5,8 |
Não utiliza |
363 |
81,4 |
Base |
446 |
100 |
Fonte: SEPIN , 2005
A APF tem como objetivo medir o tamanho do projeto de
software a partir do ponto de vista do usuário do software, levando em conta
basicamente as características do sistema do ponto de vista da sua fronteira com
o usuário independente da tecnologia usada. A unidade de medida é o Ponto de
Função e representa a quantificação das funções implementadas sob o ponto de
vista do usuário, ou seja , as funcionalidades fornecidas ao usuário.
A APF permite uma contagem indicativa no início do projeto ,
quando não se conhece os detalhes do modelo de dados; podendo ser definida na
fase de projeto quando se têm um maior conhecimento das funções do software,
gerando uma estimativa; até o término do desenvolvimento quando se efetua uma
contagem detalhada com base no conhecimento das funções levantadas durante todo
o processo de desenvolvimento do software.(IFPUG,1999)
Pode-se enumerar os principais objetivos da APF, que segundo
o IFPUG , são:
- Medir o que foi requisitado e recebido pelo usuário;
- Medir independentemente da tecnologia utilizada para implementação;
- Prover uma métrica de medição para apoiar a análise de produtividade e
qualidade;
- Prover uma forma de estimar o tamanho de software, e
- Prover um fator de normalização para comparação de software.
Além destes objetivos o processo de contagem de Pontos de
Função deve ser:
- Simples para minimizar o trabalho adicional do processo de medição;
- Conciso para permitir consistência, ao longo do tempo, dos projetos, e
entre os usuários da técnica.
Além de ser usada para medir o tamanho de um projeto de
software , quando usada em combinação com outras medidas , a APF pode ser usada
para determinar:
- O nível de produtividade da equipe;
- Esforço de desenvolvimento de software;
- O custo de software;
- Taxa de produção de software;
- Taxa de manutenção de software;
Devido a sua versatilidade a APF pode ser aplicada a
aplicações já implantadas bem como a aplicações em desenvolvimento e também a
aplicações em manutenção conforme definição a seguir :
- Dimensionamento de uma aplicação – Cálculo usado para determinar o tamanho
real de um projeto de software em pontos de função. O valor representa a
funcionalidade da aplicação do ponto de vista do usuário. Não inclui as
funções do processo de conversão de dados.
- Dimensionamento de um projeto de desenvolvimento – Cálculo usado para
determinar o tamanho em pontos de função de um projeto de desenvolvimento de
um novo projeto de software. Têm como objetivo quantificar as funções
solicitadas e entregues ao usuário pela nova aplicação , incluindo o processo
de conversão de dados.
- Dimensionamento de um projeto de manutenção – Cálculo usado para
determinar o tamanho de um projeto de manutenção em uma aplicação já
existente. Tem como objetivo medir todas as modificações (inclusões,
alterações e exclusões) de funções do usuário. Em geral a modificação é uma
melhoria ou adição de funcionalidade na aplicação. Inclui as funções providas
pelo processo de conversão de dados.
Considerando que a APF é uma das técnicas funcionais mais
antigas, que possui um dos grupos de usuários mais bem estruturados e atuantes e
que a partir de 2002 passou a condição de padrão internacional através da norma
ISO/IEC 20926 a técnica pode ser considerada como uma das melhores alternativas
de medição de tamanho do projeto de software.
Além de ser usada para determinar o tamanho do projeto de
software e auxiliar na estimativa de esforço de desenvolvimento a APF pode ser
usada na implantação de programas de métricas para melhorar estimativas,
gerenciar a qualidade e para monitorar a produtividade, servindo também como um
instrumento para acompanhar estimativas de custo e recursos requeridos para o
desenvolvimento e manutenção de software.
O procedimento para contagem de pontos de função compreende
sete etapas assim definidas: (DIAS,2004)
- Determinar o tipo de contagem – O que vou medir ? Definição do objeto a
ser medido como sendo um projeto de desenvolvimento, manutenção ou aplicação.
- Identificar o escopo de contagem e fronteira da aplicação –Definição do
escopo do sistema objeto da avaliação sob a perspectiva do usuário. São
identificados todos os relacionamentos do sistema com o seu exterior , a
persistência de dados e os processos suportados pelo sistema. O escopo irá
definir se a contagem irá abranger parte de um sistema ou mais de um sistema.
- Contagem de pontos de função não ajustados – Compreende o conjunto de
funções disponibilizadas ao usuário. Segundo Albrecht (ALBRECHT,1983) , cinco
tipos de componentes lógicos ou funções da aplicação (figura 2.2) afetam de
forma distinta o tamanho de um sistema: funções do tipo dados ( Arquivos
lógicos Internos – ALI e Arquivos de Interface Externa – AIE) e funções do
tipo transação ( Entradas Externas – EE, Saídas Externas – SE e Consultas
Externas – CE). As funções do tipo dado e transação são classificadas de
acordo com sua complexidade que pode ser baixa, média ou alta conforme
definida em tabela do manual de contagem.
Figura 2.2: Fronteiras da aplicação e tipos de arquivos.(HAZAN,2001)
- Cálculo do fator de ajuste – O fator de ajuste é baseado em 14
características gerais de sistemas(ver ANEXO "A") que avaliam a funcionalidade
geral da aplicação que esta sendo contada definindo os seus níveis de
influência. O nível de influência de uma característica é definido de acordo
em uma escala de 0(nenhuma influência) a 5 (forte influência);
- Contagem dos Pontos de Função ajustados – Realiza a correção das possíveis
distorções cometidas durante o cálculo dos pontos de função não ajustados.
Dias (DIAS,2004) enumera os seguintes benefícios que podem
ser alcançados com utilização da APF em projetos de Software :
- Permite dimensionar o tamanho de um software a ser desenvolvimento;
- Permite realizar estimativas de custo, cronograma e recursos para o
desenvolvimento e manutenção de softwares;
- Pode ser usada como uma unidade de medida para comparação entre projetos
de softwares;
- Permite realizar um maior controle de qualidade sobre do projeto;
- Pode ser usada como uma ferramenta de auxílio gerencial;
- Pode ser usada para implantar um programa de métricas;
- Pode ser usada como uma ferramenta para auxiliar a decisão entre a compra
de um pacote ou o desenvolvimento do aplicativo da empresa.
A Análise por Pontos de Função mudou o paradigma da contagem
e difundiu-se no mercado proporcionando um processo maduro para avaliar o
tamanho lógico do software com base em requisitos funcionais dos usuários. Para
Aguiar (AGUIAR,2003) , dentre as principais razões para a utilização da APF como
métrica têm-se :
- Os PF são mantidos por uma organização internacional sem fins lucrativos ,
o International Function Point Users Group – IFPUG , desde 1986;
- Os PF possuem suporte no Brasil através do chapter – Brazilian
Function Point Users – BFPUG;
- Os PF são padronizados pela ISSO através da norma ISSO/IEC 20296;
- Existe um grande acervo de dados sobe PF armazenados nas diversas
organizações o que permite estudos e comparações;
- Os PF modelam os requisitos a um nível de abstração mais alto e
independente dos artefatos e podem ser usados por organizações que usam
qualquer forma de representação de requisitos;
- Os PF são usados em contratos e licitações no Brasil em organizações
governamentais e pelo mercado em geral.
Referências:
COCOMO - Constructive Cost Model. Disponível em:
http://sunset.usc.edu/research/COCOMOII/ - Acesso em: set. 2005.
DEMARCO, TOM. Controle de Projetos de Software. 9.ed.
Rio de Janeiro: Editora Campus, 1991.
HAZAN, CLÁUDIA - Implantação de um Processo de medições de
software – agosto, 2002 . Disponível em:
http://www.bfpug.com.br/artigos.htm. Acesso em: out. 2005.
HAZAN, CLÁUDIA - Análise de Pontos por Função – agosto, 2001 .
Disponível em:
http://www.inf.ufes.br/~falbo/download/aulas/es-g/2005-1/APF.pdf. Acesso em:
out. 2005
McGARRY, J. et. Al. – Pratical Software Measurement – Addison-Wesley,
2002.
SPR - Software Productivity Research – Disponível em:
http://www.spr.com/. Acesso em: out. 2005.
VAZQUEZ, C. E.;SIMÕES, G. S; ALBERT, R. M. Análise de
Pontos de Função – Medição, Estimativas e Gerenciamento de Projetos de Software.
3.ed. São Paulo: Editora Érica, 2005.
José Carlos Macoratti