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:

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 (CPMCounting 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 CPMCounting 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:

Além destes objetivos o processo de contagem de Pontos de Função deve ser:

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:

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 :

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)

  1. 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.
  2. 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.
  3. 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)

  4. 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);
  5. 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 :

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 :

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