APFCustoEsforçoestimativaFPAmétricasorçamentoPlanejamento
By Plínio Ventura	 On 27 out, 2015 Last updated 4 jan, 2021 3
Unidades de Medida e Composição de Preço do Software
Precificar um produto ou serviço é uma tarefa relativamente simples.
Basicamente, trata-se de somar custos de produção + impostos + margem de lucro e o valor final é o preço a ser cobrado pelo produto ou serviço.
Em algumas áreas existe um fator adicional que são as Unidades de Medida utilizadas para compor o preço.
Quando falamos de água temos o metro cúbico (m³), em energia elétrica temos o kilowatt (kW), em construção civil temos o metro quadrado (m²).
Na área de software temos algumas Unidades de Medida que utilizamos para dar tamanho ao software, dentre as quais temos o Ponto de Função (PF) como uma das mais utilizadas.
Descobrir o custo para fechar o preço do sistema
No segmento de métricas e estimativas sempre fazem a seguinte pergunta: "qual o valor do ponto de função?".
A finalidade é obter a resposta para utilizá-la como referência ou base para definição do valor do ponto de função a ser cobrado em algum projeto.
Mas essa pergunta não tem uma resposta simples. Mas infelizmente muitas empresas acreditam que tem.
Se a empresa XYZ cobra R$ 800,00 por um ponto de função, isso significa que a empresa ABC deve cobrar o mesmo valor?
Isso se aplicaria somente se todas as variáveis para composição de preço fossem iguais nas duas empresas, o que na vida real, é quase impossível.
O preço (valor) de um Ponto de Função, excetuando os impostos e margem de lucro, é calculado com base no custo de se produzir o Ponto de Função.
O mais importante antes de se pensar no valor a cobrar por um Ponto de Função é entender "em todos os detalhes" quanto custa produzir um ponto de função. O "todos os detalhes" é a parte mais crítica, e onde mora um cupim de margem de lucro de muitas empresas de software.
Definir o custo de produção do Ponto de Função
Outra pergunta muito comum é: "qual a produtividade do ponto de função em C#?", ou "qual a produtividade do ponto de função em Java?".
A finalidade é obter a resposta para utilizá-la como referência ou base para definição da produtividade para produção do ponto de função em alguma linguagem de programação específica.
E isso também não tem resposta simples.
A produtividade para se produzir um ponto de função não pode ser medida tendo-se como base apenas a linguagem de programação utilizada.
Se a empresa XYZ consegue produzir um ponto de função utilizando C# em 8h, isso não significa que a empresa ABC conseguirá produzir um mesmo ponto de função em 8h.
Fatores que precisam ser avaliados
Arquitetura do software a ser produzido (utilização de ORM, camadas e padrões de projeto aplicados etc.).
Utilização de framework para construção (frameworks proprietários [não framework .net ou JDK por exemplo]).
Perfil da equipe envolvida no projeto (quantidade de profissionais conforme experiência [júnior/pleno/sênior]).
Segmento de negócio para o qual o software está sendo produzido (ERP para bancos tende a ser algo bem mais complexo que ERP para Posto de Gasolina).
Nível de acesso ao cliente (agilidade no acesso ao cliente para tirar dúvidas, validar especificações etc.).
Metodologia aplicada ao ciclo de vida do projeto (Waterfall ou Iterativo/Incremental, por exemplo).
Modelo organizacional ao qual o projeto foi submetido (desenvolvido internamente, contratação de fábrica de software etc.)
Produto final do projeto (primeira versão de um software, projeto de melhoria, customizações etc.).
Como então definir o valor do Ponto de Função?
A melhor maneira é descobrir quanto custou o Ponto de Função em projetos semelhantes. Isso é possível com análise de base histórica.
Não havendo base histórica de projetos, o melhor a fazer é:
Identificar os projetos semelhantes produzidos pela empresa.
Levantar a quantidade de horas gastas (esforço realizado) em cada projeto.
Identificar as variáveis de cada projeto (linguagem de programação, nível de senioridade da equipe, segmento de negócio que o sistema atendeu, banco de dados utilizado, arquitetura etc.).
Levantar o custo de cada projeto.
Realizar uma contagem de pontos de função atualizada de cada projeto.
Dividir o total de pontos de função pelo custo do projeto.
Se não há como extrair tal histórico a saída é tentar avaliar todas as variáveis envolvidas com o máximo de cuidado possível, e obter parâmetros de mercado, estimar a produtividade viável para o projeto, e então calcular o risco.
E partir do primeiro projeto, começar a montar a base histórica!
E se o valor do Ponto de Função for estabelecido pelo cliente?
Isso é muito comum em contratos de governo, por exemplo.
Neste caso, a avaliação sobre vender ou não o projeto é fundamental.
Se for vendido, deve-se adequar a realidade do projeto ao valor do ponto de função estabelecido pelo cliente, visando obter-se a maior produtividade, para que o custo de produção seja o mínimo possível e margem de lucro a maior possível.
/* Eu já vi empresas assumirem projetos de porte significativo – 3000 pontos de função por exemplo – e no meio do projeto arrependerem-se amargamente de vender o projeto. Muitas das vezes quem vende o projeto e fixa o valor do ponto de função não considera que um valor muito baixo inviabiliza o fornecedor de realizar uma entrega, e isso nunca dá coisa boa. */
Obs.: tão importante quanto o cuidado na definição do ponto de função é saber realizar a métrica com a maior acuracidade possível. De nada adianta saber calcular-se o valor do ponto de função com qualidade, se os pontos de função foram calculados incorretamente. Para reflexão, veja a importância de uma métrica bem feita.
Salvo quando o valor do ponto e função é pré-estabelecido pelo cliente (sem margem para negociação), não deve haver um valor único para todos os projetos.
Cada projeto é singular, e todo cuidado é pouco na definição do preço a ser cobrado. Procure sempre garantir a melhor concepção possível do software, fazer toda a diferença para um negócio mais justo para todas as partes.