- A arte de realizar estimativas com APF


Realizar estimativas é uma das atividades mais desafiadoras e importantes em um projeto de software. O planejamento e controle de um projeto de software não seria possível sem a realização de estimativas confiáveis.(DEMARCO,1991)

"A estimativa é a essência da dificuldade que temos em controlar projetos de software."(DEMARCO,1991)

Cada projeto de software tende a se constituir em uma experiência única devido a particularidades em relação aos seus requisitos , tecnologia empregada e a equipe de trabalho. Diante desta realidade definir com exatidão o custo final e a data de conclusão de um projeto de software somente é possível quando o projeto estiver finalizado.

Toda a atividade e cálculo feito durante o ciclo de vida do projeto são estimativas. Contudo as informações obtidas através de estimativas , mesmo não sendo totalmente precisas, são de grande valia para constituir uma coleção de dados históricos que pode ser usada para extrair indicadores de produtividade e qualidade cada vez mais próximos da realidade e cada vez mais confiáveis. (VAZQUEZ,2005)

Conforme Vazquez (2005) , o processo de estimativa de um projeto de software envolve basicamente quatro atividades:

  1. Estimar o tamanho do produto a ser gerado;
  2. Estimar o esforço empregado na execução do projeto;
  3. Estimar a duração do projeto;
  4. Estimar o custo do projeto.

Estimativa de Tamanho

O processo tem início com a estimativa de tamanho do projeto tendo como base a declaração do escopo que pode ser uma descrição formal dos requisitos do sistema. Conforme mais informações forem sendo obtidas nesta fase, as estimativas iniciais podem e devem ser refeitas e refinadas. Nesta atividade pode-se utilizar a técnica de Análise por Pontos de Função para determinar o tamanho do projeto. Desta forma o valor obtido será expresso em Pontos de Função (PF).

Uma das técnicas usadas para determinar o tamanho de um projeto de software em pontos de função é a analogia simples. A técnica compara o projeto atual com dados de projetos idênticos anteriores obtidos na base histórica da organização. A partir do conhecimento do tamanho de um projeto similar estima-se o tamanho do projeto atual como um percentual do tamanho do projeto passado. (VAZQUEZ, 2005)

A contagem dedutiva é outra técnica muito usada para estimar o tamanho de um projeto de software em pontos de função. Nesta técnica faz-se a contagem de um único componente da análise de pontos de função para a aplicação, em geral o número de Arquivos Lógicos Internos (ALI) , derivando-se o resto da contagem a partir de bases estatísticas. (VAZQUEZ, 2005)

A contagem indicativa da NESMA é uma abordagem para essa técnica. Nela é preciso somente realizar a identificação dos AIE e ALI considerando-se 35 PF para cada ALI e 15 PF para cada AIE identificado. Estes números representam as médias de pontos de função identificados para cada tipo de arquivo, para projetos que tenham em média três EE, duas SE e uma CE para cada ALI e uma SE e uma CE para cada AIE. (VAZQUEZ, 2005)

De acordo com as informações que se têm sobre a fase do projeto de software pode-se escolher a estimativa que maior precisão trará em seus resultados , com base nisso, Galvão(2005) apresenta a seguinte tabela que relaciona o material disponível para estimativa e o tipo de contagem a ser usada:

Tabela 2.2 : Relacionamento entre material disponível para estimativa e o tipo de contagem em Pontos de Função

Material Disponível para Estimativa de esforço

Tipo de Contagem

Modelo Preliminar de Dados

Contagem Indicativa

Modelo e funções básicas

Contagem Estimativa

Projeto Detalhado / Protótipo

Contagem Detalhada

(Fonte: GALVÃO, 2005)

Assim , a contagem Indicativa fornece um valor indicativo da quantidade de pontos de função do sistema proposto sem conhecer detalhes do modelo nem do processo. Pode ser usada na fase inicial da proposta de desenvolvimento, quando não se conhece detalhes do processo , mas se têm um modelo preliminar de dados.

A contagem Estimativa fornece um valor estimado da quantidade de pontos de função do sistema proposto sem a precisão do grau de complexidade das funções. Pode ser usada na fase inicial da proposta de desenvolvimento, quando não se têm detalhes do processo, mas , somente informações preliminares e o modelo de dados.

A contagem Detalhada fornece a quantidade de pontos de função do sistema , obtido a partir do grau de complexidade das funções levantadas. Pode ser utilizada em qualquer fase de desenvolvimento , desde que se possua detalhes do processo e do modelo de dados ,como descrição de telas e relatórios ou um protótipo do sistema.

Outra técnica importante é a técnica da Complexidade Média (CM) . Esta técnica apresentada na versão 5 do ISBSG Benchmark usa uma média de complexidade para os projetos de desenvolvimento distribuídas por tipos de funções mostrada na tabela 2.3. (VAZQUEZ, 2005)

Tabela 2.3 : Média de PF não ajustados, por tipo de função, do ISBSG comparado na tabela de complexidade do IFPUG

Tipo de Função

Média de PF

IFPUG(baixa)

IFPUG(média)

IFPUG(alta)

ALI

         7,4

     7

           10

      15

AIE

         5,5

     5

            7

      10

EE

         4,3

     3

            4

      6

SE

        5,4

     4

            5

      7

CE

       3,8

     3

            4

    6

Fonte: (VAZQUEZ, 2005. p.159)

Após identificar o número de todos os componentes funcionais faz-se o relacionamento de cada um com sua complexidade média. A fórmula abaixo é então usada para determinar o tamanho funcional.

CM = # EE x 4,3 + # SE x 5,4 + # CE x 3,8 + # ALI x 7,4 + # AIE x 5,5 (VAZQUEZ,2005 p.159)

Onde : # é o número do componente funcional.

A NESMA simplificou ainda mais a abordagem acima em sua Contagem Estimativa (CE). Nesta técnica após efetuar a identificação de todas as funcionalidades do projeto, se usa a classificação de complexidades do IFPUG aplicando a complexidade baixa para cada ALI e AIE e média para cada EE, SE ou CE. (VAZQUEZ,2005).A fórmula para estimativa do tamanho ficou assim definida:

CE = # EE x 4 + # SE x 5 + # CE x 4 + # ALI x 7 + # AIE x 5 (VAZQUEZ,2005 p.160)

Onde:

# - representa a quantidade do componente funcional identificado

EE – Entradas Externas – atribuída a complexidade Média (4 PF)

CE – Consultas Externas - atribuída a complexidade Média (4 PF)

SE – Saídas Externas – atribuída a complexidade Média (5 PF)

ALI – Arquivo Lógico Interno – atribuída a complexidade Baixa (7 PF)

AIE – Arquivo de Interface Externa - atribuída a complexidade Baixa (5PF)

Ambas as técnicas mostradas estão baseadas em pontos de função não ajustados.

Cabe também mencionar o método de Estimativa por Percentual oriundo de uma pesquisa feita pela empresa SPR – Software Productivity Research com dados coletados em mais de 120 projetos onde verificou-se a relação entre os vários tipos de funções de uma aplicação , que pode ser expressa na seguinte forma:

Com base nesta estatística basta identificar a quantidade de um dos tipos de função da aplicação para derivar a quantidade dos demais aplicando-se ainda as seguintes regras:

As técnicas e métodos apresentados permitem realizar estimativas de acordo com o grau de conhecimento do sistema, e, efetuar o seu refinamento á medida que este conhecimento vai aumentando. Assim, mesmo na fase inicial do projeto, é possível, quando necessário, realizar uma estimativa com certo grau de precisão afim de servir de base para uma tomada de decisão.

No próximo artigo será mostrado um estudo de caso onde a metodologia apresentada será aplicada para exemplificar a utilização e eficácia da APF como ferramenta para realizar medidas de tamanho, prazo e custo de software.

Nota: Veja uma introdução sobre APF e exemplo de cálculo de estimativas usando APF nos artigos  :

Referências:

DeMARCO, T. Controle de Projetos de Software. 9.ed. Rio de Janeiro: Editora Campus, 1991
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
(IFPUG,1999) – CPM – Counting Practices Manual , Release 4.1.1. 1999 - International Function Point Users Group. Disponível em http://www.ifpug.org acessado em : nov. 2005


José Carlos Macoratti