Uma técnica para medição de projetos de software sob o ponto de vista do usuário.

A Análise de Pontos de Função (APF) é uma técnica para medição de projetos de desenvolvimento de software que fornece uma medida objetiva e comparável do tamanho das funcionalidades de um software, sob o ponto de vista do usuário. A APF quantifica as funcionalidades de um software, em uma medida que é fortemente relacionada aos requisitos do negócio, e que é independente da linguagem de programação ou de qualquer das tecnologias selecionadas para a implementação do mesmo. A unidade de medida da APF é o Ponto de Função (PF), o qual define uma relação empírica baseada em medidas de contagem do domínio de aplicação do software.

Objetivo

O objetivo da Análise de Pontos de Função é medir o que o software faz, e determinar o tamanho do mesmo. A partir dessa medida de tamanho é possível derivar estimativas de esforço, de produtividade, de custo e de recursos para um projeto de software. Um dos princípios da APF é ser baseada na visão do usuário e, portanto, ser de fácil compreensão por desenvolvedores e analistas, bem como por usuários leigos.

Origem

A técnica de Análise de Pontos de Função foi elaborada por Allan Albrecht, em meados da década de 1970, a partir de um estudo sobre a produtividade em projetos de software. Albrecht tinha o objetivo de elaborar uma medida que observasse aspectos externos (funcionalidades) do software, independente da tecnologia utilizada, melhorando assim o nível de assertividade das estimativas. Esse estudo foi publicado em 1979.

Atualmente o padrão de APF é mantido pelo International Function Point Users Group (IFPUG), entidade sem fins lucrativos cuja finalidade é promover um melhor gerenciamento dos processos de desenvolvimento e manutenção de software. O IFPUG mantém o Manual de Práticas de Contagem de Pontos de Função, que é o principal guia de APF reconhecido pelo mercado.

Como funciona

A técnica de APF consiste em atribuir um índice numérico a cada uma das funcionalidades do software, conforme a sua complexidade, a partir de um conjunto de critérios padronizados. A partir desses índices é determinada uma medida inicial de tamanho, a qual é normalizada através da incorporação de um conjunto de fatores relacionados ao software como um todo. Como resultado tem-se a quantidade de Pontos de Função do software. A técnica compreende todas as atividades relacionadas à construção e entrega dos requisitos funcionais, desde a especificação dos requisitos, passando pela análise e modelagem, até a codificação e testes, incluindo também artefatos tais como manuais de utilização.

Os passos para chegar ao número de Pontos de Função são listados a seguir.

1)    Identificar o propósito da contagem: para uma Análise de Pontos de Função bem sucedida, é necessário determinar e deixar claro qual é o problema a ser resolvido a partir da contagem.

2)    Determinar o tipo de contagem: existem três tipos de contagem de pontos de função. São eles:

  • Projeto de desenvolvimento: contagem que leva em conta todas as funções do projeto a ser desenvolvido.
  • Projeto de melhoria: contagem que leva em conta somente as funções a serem alteradas, incluídas ou excluídas.
  • Aplicação: contagem das funções de um software já instalado.

3)    Identificar a fronteira da aplicação e do escopo da contagem: envolve a delimitação da interface conceitual entre o software e o usuário, e quais elementos farão parte da contagem.

4)    Contagem das funções do tipo dado: funções que se referem aos requisitos de armazenamento. Os elementos de funções do tipo dado são:

  • Arquivos Lógicos Internos (ALI): grupos de dados logicamente relacionados mantidos pela aplicação.
  • Arquivos de Interface Externa (AIE): grupos de dados logicamente relacionados referenciados em outras aplicações.

5)    Contagem das funções do tipo transação: funções que se referem aos requisitos de processamento do usuário. Os elementos de funções do tipo transação são:

  • Entradas Externas (EE): transações que atualizam as ALI’s.
  • Consultas Externas (CE): transações que recuperam dados de ALI’s ou AIE’s.
  • Saídas Externas (SE): transações que apresentam informação e envolvem lógica de processamento.

A figura abaixo apresenta um template de contagem de pontos de função. A partir dos tipos de função citados acima são calculados valores, de acordo com a complexidade estabelecida para cada funcionalidade.

Exemplo de contagem de pontos de função
Fonte: http://pt.slideshare.net/claudiomartins2000/estimativa-de-software-usando-pontosfuncao

6)    Cálculo do fator de ajuste: considera a influência dos requisitos técnicos e de qualidade (requisitos não funcionais), bem como as restrições. O fator de ajuste é determinado pela análise de cada uma das 14 características gerais do sistema quanto à sua influência no sistema. São elas:

  • Comunicação de dados
  • Processamento de dados distribuído
  • Desempenho
  • Configuração do equipamento
  • Entrada de dados on-line
  • Interface com o usuário
  • Atualização on-line
  • Processamento complexo
  • Reusabilidade
  • Facilidade de implantação
  • Facilidade operacional
  • Múltiplos locais
  • Facilidade de mudanças

7)    Cálculo dos pontos de função ajustados: consiste em multiplicar o fator de ajuste pelos pontos de função não ajustados, aplicando uma fórmula para cada tipo de contagem especificada no passo 2.

Prós

A Análise de Pontos de Função auxilia nas atividades de gerenciamento de projetos, desde a avaliação e planejamento, até a gerência e controle da produção de software, passando pelo gerenciamento de escopo e de requisitos. Em conjunto com outras métricas de esforço, defeitos e custo, apoia a análise da qualidade e produtividade, e funciona como entrada para modelos de estimativa de custo e recursos. Além disso, a APF pode também ser utilizada para fundamentar a negociação de contratos, pois permite o estabelecimento de um preço unitário para o ponto de função e a estimativa de esforço (quantidade de horas) para o desenvolvimento de um software, a partir da seguinte fórmula:

Q = P x TF, onde

Q é o esforço (quantidade em horas) para o desenvolvimento do software
P é a produtividade (quantidade em horas por ponto de função) da equipe
TF é o tamanho funcional (quantidade de pontos de função) do software

Cabe à empresa determinar a produtividade que será utilizada para a estimativa. Essa produtividade varia de empresa para empresa, de equipe para equipe, e é influenciada por fatores como a tecnologia utilizada, a ferramenta de desenvolvimento, a área de negócio, entre outros. Cabe também à empresa determinar o preço do ponto de função, de acordo com a complexidade do trabalho, o padrão técnico e de qualidade, a tecnologia escolhida, a produtividade e a experiência da equipe, bem como a quantidade de artefatos exigidos pelo cliente.

Contras

Alguns estudiosos afirmam que a técnica de Análise de Pontos de Função não se trata de uma métrica, e sim de uma avaliação subjetiva da complexidade do software, não devendo, portanto, ser utilizada para estimar esforço ou na negociação de contratos. Essa afirmação baseia-se no fato de a técnica ser muito antiga, de difícil transposição para o contexto de aplicações modernas, além de não considerar questões como a tecnologia selecionada e a usabilidade e experiência do usuário na determinação da complexidade das funcionalidades.

Certificações

Existe um exame de certificação de APF, elaborado e mantido pela IFPUG. Esse exame consiste de 150 questões de múltipla escolha baseadas no Manual de Práticas de Contagem. A certificação é válida por três anos, e pode ser renovada através de um programa de extensão que envolve ministrar cursos, escrever artigos ou livros, entre outras atividades que comprovem a utilização da técnica. A certificação tem dois níveis:

  • CFPS (Certified Function Point Specialist) – concedida a quem acertar 90% ou mais das questões do exame.
  • CFPP (Certified Function Point Practitioner) – concedida a quem acertar entre 80% e 89% das questões do exame.

Conclusão

A técnica de Análise de Pontos de Função, apesar de controversa, é largamente utilizada, servindo para diversos propósitos dentro do universo do desenvolvimento de softwares. Sua utilidade consiste em minimizar a subjetividade das estimativas de esforço, custo e prazos, a partir da padronização de critérios de definição de complexidade das funcionalidades de uma aplicação, sendo, portanto, de fundamental importância para o profissional de TI, seja ele analista, desenvolvedor ou gestor, senão conhecer a fundo, ao menos se familiarizar com a mesma.

Autora: Patrícia Cristina Hübner

Fonte de referências:

FATTO. Perguntas e Respostas sobre Análise de Pontos de Função (APF). Disponível em: <http://fattocs.com/pt/faq-apf>

Cryer, A. B. Function Points – Numerology for Software Developers. Disponível em: <http://www.cryer.co.uk/glossary/f/fp/function_point_numerology_for_software_developers.htm>

Martins, Cláudio R. Estimativas e Medição em Projetos de Software. Disponível em: <http://pt.slideshare.net/claudiomartins2000/estimativa-de-software-usando-pontosfuncao>