Introdução aos Pontos de Função
Durante nossas aulas de engenharia de software, um dos maiores desafios é conseguir estimar o esforço necessário para construir um sistema. Diferente de simplesmente contar linhas de código (LOC), a Análise de Pontos de Função (APF) nos permite medir o tamanho funcional do software do ponto de vista do usuário. Isso significa que, independente da tecnologia utilizada (Java, Python, etc.), conseguimos ter uma medida objetiva das funcionalidades que o sistema deve entregar. O conceito foi introduzido por Allan Albrecht na IBM nos anos 70 e até hoje é amplamente utilizado para estimativas de custo, prazo e produtividade.
Tipos de Função na APF
A APF classifica as funcionalidades em cinco tipos básicos:
- Entradas Externas (EE): Processam dados ou informações de controle que entram no sistema (ex: um formulário de cadastro).
- Saídas Externas (SE): Geram dados ou informações que saem do sistema (ex: um relatório, um dashboard).
- Consultas Externas (CE): Combinação de entrada e saída, onde uma consulta é feita e uma resposta é imediatamente gerada (ex: uma busca de CEP).
- Arquivos Lógicos Internos (ALI): Grupo de dados logicamente relacionados mantido pelo sistema (ex: tabela de usuários).
- Arquivos de Interface Externa (AIE): Grupo de dados referenciado pelo sistema, mas mantido por outro sistema (ex: dados de um serviço externo de autenticação).
Complexidade e Pontuação das Funções
Agora chegamos ao ponto crucial da nossa aula de hoje. Como pontuar cada uma dessas funções? A pontuação não é um valor arbitrário. Ela depende da complexidade da função, que é determinada por dois fatores principais:
- DETs (Data Element Types / Elementos de Dados): O número de campos únicos na interface da função. Quantos campos um formulário de entrada tem? Quantas colunas um relatório de saída possui?
- AERs (Arquivos Lógicos Referenciados) / FTRs (File Types Referenced): O número de arquivos lógicos (internos ou externos) que a função precisa ler ou alterar para realizar seu propósito.
A matriz de contribuição define a pontuação de cada função (Baixa, Média, Alta). Por exemplo, uma Entrada Externa com baixa complexidade vale 3 pontos de função. Uma Saída Externa com alta complexidade pode valer até 7 pontos. O total de pontos de função brutos (não ajustados) do sistema é a soma de todas as suas funções elementares.
| Complexidade | AERs 0-1 | AERs 2-3 | AERs 4+ |
|---|---|---|---|
| DETs 1-5 | Baixa (3 PF) | Baixa (3 PF) | Média (4 PF) |
| DETs 6-19 | Baixa (3 PF) | Média (4 PF) | Alta (6 PF) |
| DETs 20+ | Média (4 PF) | Alta (6 PF) | Alta (6 PF) |
Estimativa de Projeto com Pontos de Função
Com o total de pontos de função calculado, podemos partir para a estimativa. A fórmula básica é:
- Esforço Estimado = Tamanho (PF) × Produtividade (Horas/PF)
- Prazo Estimado = Esforço Total / Número de Desenvolvedores
- Custo Estimado = Esforço Total × Custo Médio da Hora de Trabalho
A produtividade (Horas/PF) pode ser obtida através de dados históricos da sua equipe ou benchmarks da indústria. Por isso é tão importante começar a medir hoje! A APF permite que você refine suas estimativas ao longo do tempo, tornando seu planejamento cada vez mais preciso.
Exemplo Prático
Vamos a um exemplo para fixar. Imagine uma função de consulta (CE) que exibe os dados de um cliente. Ela possui 5 campos (DETs) e referencia apenas o arquivo de clientes (1 AER). Pela tabela de contribuição de consultas, essa função se enquadra em complexidade Baixa, valendo 3 pontos de função. Agora imagine que essa mesma consulta precise exibir dados de clientes e de seus pedidos (2 AERs, 5 DETs). Ela pode subir para Média (4 PF). É assim que, na prática, "com base no tamanho da entrada e saída de uma função, qual a pontuação dela".
Podemos generalizar o cálculo: o ponto de função não é apenas uma ferramenta de estimativa, mas também uma métrica de produtividade. Se sua equipe entrega 20 PF por mês, você consegue prever prazos com muito mais segurança. É uma forma de alinhar as expectativas do cliente com a capacidade real do time de desenvolvimento.
Perguntas Frequentes (FAQ)
Qual a principal vantagem dos Pontos de Função sobre linhas de código?
PF mede o que o sistema faz (funcionalidade), enquanto LOC mede como foi feito (implementação). PF é independente de tecnologia e pode ser estimado nas fases iniciais do projeto, com requisitos ainda em alto nível.
A APF serve apenas para projetos de desenvolvimento?
Não. Ela é excelente para projetos de manutenção evolutiva, melhoria e até mesmo para benchmarking entre diferentes fornecedores. Você pode medir o tamanho de uma alteração específica.
Pontos de função são aplicáveis em Metodologias Ágeis?
Sim, perfeitamente! Em metodologias ágeis como Scrum, podemos usar a velocidade da equipe em PF por sprint para planejar o backlog. É uma forma de estimativa mais tangível do que as Story Points relativos, principalmente em contratos de outsourcing ou projetos que exigem alta previsibilidade.
Onde posso aprender as regras oficiais da APF?
O órgão oficial é o IFPUG (International Function Point Users Group). Eles publicam o Manual de Práticas de Contagem (Counting Practices Manual - CPM), que é a referência definitiva sobre o assunto.