01/11/2018 Maycon Amorim dos Santos

É possível estimar desenvolvimento de software em Pontos de Função?

Quando pensamos em produtividade, a grosso modo significa a relação entre a quantidade produzida de algum “item” ou serviço dividida pelos insumos ou recursos necessários para sua produção. Ou seja, o conceito produtividade pode ser aplicado em qualquer tipo de trabalho e/ou serviço quando tratamos do meio empresarial. O maior desafio da maioria das empresas é ter uma alta produtividade, com produtos/serviços de qualidade e baixo custo de execução.

Os Pontos de Função no contexto de desenvolvimento de software

Pontos de função em desenvolvimento de software

Em uma fábrica de produtos como pneus, parafusos, portas, etc. definir as variáveis que serão utilizadas para o cálculo de produtividade é relativamente simples quando comparamos com fábricas de serviço, ou sendo mais específico, uma fábrica de software. Isso pois um sistema não depende de uma máquina programada para executar o serviço, depende exclusivamente de desenvolvedores de software, que são pessoas capacitadas para tal atividade, e como todos sabemos, pessoas nunca são iguais.

Atualmente existem diversas métricas de software que são utilizadas para controle de produtividade e estimativa de prazos como Snap, Cosmic, Unidade de Serviço Técnico (UST), entre outras, mas uma das mais utilizadas nos últimos anos é a Pontos de Função (PF). Essa métrica teve sua origem na década de 70 e vem sendo aprimorada pelo International Function Point Users Group (IFPUG) desde 1986 em conformidade com a ISO/IEC 14143-1:2007.

Pontos de Função consiste em mensurar o software conforme a “visão do usuário”, que são as funcionalidades esperadas por quem irá utilizar o sistema (Exemplo: Cadastro de pessoas, consultar relatórios, lançamento de nota fiscal, etc.) portanto ela é independente da tecnologia utilizada e quantidade de linhas de código escritas.

Como aplicar Pontos de Função

Quando definimos a utilização da métrica Pontos de Função, é muito importante que o software a ser desenvolvido contenha documentação, pois ela é a base para estimar o que será desenvolvido e possivelmente quanto tempo irá demorar. Com a documentação em mãos um analista de pontos de função poderá iniciar a mensuração do sistema conforme manda a métrica, e no futuro realizar uma nova mensuração, porém utilizando de fato o sistema que foi desenvolvido. Essas contagens são chamadas de estimada e detalhada, respectivamente.

Com a contagem detalhada é possível definir a produtividade do time que está trabalhando no software, pois temos a “quantidade produzida” (exemplo: 150 PF) e os “recursos utilizados” (exemplo: 450 Horas), gerando assim uma produtividade de 3 Horas/PF. Assim podemos dizer que para desenvolver esse sistema foram gastas 3 horas para cada ponto de função.

Quando possuímos uma base histórica dos nossos indicadores de produtividade, é possível prever o tempo necessário para se produzir uma determinada quantidade de itens. Um exemplo são empresas de manufatura. Se uma máquina historicamente produz 50 parafusos por hora, caso o fluxo siga normalmente, é possível afirmar que durante 8 horas em funcionamento, a mesma máquina irá produzir 400 parafusos, certo? Correto. Mas como funciona em uma empresa de software que trabalha com a métrica Pontos de Função? Basicamente a mesma coisa, o que muda é a quantidade de riscos envolvidos, pois pessoas não são máquinas pré-programadas.

Para exemplificar como funciona em uma fábrica de software que utiliza Pontos de Função, foi utilizado amostras de 2 sistemas, sendo coletado o indicador de produtividade de 12 ciclos de desenvolvimento cada. Para a construção da base histórica, foram calculadas 4 médias, sendo eles com os 3 primeiros ciclos, 6 primeiros, 9 primeiros e 12 primeiros (Tabela 1).

Tabela 1 – Base histórica de produtividade dos sistemas analisados.Produtividade horas por ponto de função

Utilizando a base histórica levantada e a quantidade de Pontos de Função entregue em cada ciclo de desenvolvimento, foi possível estimar quanto tempo seria necessário para entregar aquela quantidade de Pontos de Função. Além disso, pudemos comparar com o tempo que de fato foi necessário, e em ambos os sistemas foi possível chegar em uma diferença média entre 20-25%, quando considerados:

  • Os ciclos que possuem uma alta diferença entre o tempo estimado e realizado
  • Os principais motivos podem ser saída de desenvolvedor e/ou entrada de novo desenvolvedor
  • Alteração de escopo pelo cliente
  • Alto índice e erros no desenvolvimento
  • Alto índice de entregas estruturais do sistema (sem percepção funcional para o usuário, ou seja, não gera pontos de função conforme o método)
  • Entre outros.

Os gráficos a seguir demonstram as diferenças citadas:

Gráfico 1 – Comparação entre as horas estimadas e realizadas.

Comparação entre horas estimadas e realizadas

Gráfico 2 – Comparação entre as horas estimadas e realizadas.

Gráfico 2 - Comparação entre as horas estimadas e realizadas

A resposta final: é possível?

Baseado na análise realizada, podemos chegar em uma resposta para a pergunta do título desse artigo: É possível estimar desenvolvimento de software em Pontos de Função? Sim, é possível! Caso exista uma base histórica referente à produtividade do time e uma contagem de Pontos de Função estimada baseada na documentação inicial, é possível prever quanto tempo será gasto para desenvolver as funcionalidades ou sistema proposto. Porém, como visto nos gráficos, em alguns momentos a diferença entre o estimado e realizado se torna grande por conta de diversos motivos já citados, sendo assim é recomendável utilizar uma diferença de 20% a mais ou a menos no tempo estimado, mas essa diferença pode menor dependendo dos riscos levantados para o ciclo de desenvolvimento, maturidade do time, perfil do cliente e qualidade da documentação utilizada para a contagem de Pontos de função, sendo então essencial o papel do gestor do projeto, pois é ele quem vai saber utilizar melhor os recursos que ele tem em mãos.

Comentários

comentários

Sobre o autor

Maycon Amorim dos Santos Maycon Amorim dos Santos é formado em Engenharia de Produção pela Universidade Estadual de Maringá. Faz parte da equipe de Qualidade da DB1 Global Software, atuando como Analista de Métricas. Trabalha com métricas de software, indicadores organizacionais, projetos de melhorias e OKR (Objective Key Results).