como-estimar-o-esforço-para-o-desenvolvimento-de-software
Ambiente de trabalho

Como estimar o esforço para o desenvolvimento de software

como-estimar-o-esforço-para-o-desenvolvimento-de-software
Rafael Miranda
29 de maio de 2020
como-estimar-o-esforço-para-o-desenvolvimento-de-software

Um desenvolvedor de software se depara com uma série de desafios em seu dia a dia de trabalho, e um dos principais obstáculos enfrentados por um “dev” é como estimar o real esforço necessário para entregar o projeto de software. Demonstrar a quem financia o projeto a necessidade de recursos para a sua conclusão é fundamental, e caso essa etapa não seja satisfatória, o projeto pode nem começar. 

Diante das atividades diárias de um desenvolvedor de software, resolvi criar um texto com um pouco da minha experiência com a missão de estimar. 

Por que fazer estimativa de desenvolvimento de software? 

Quando estamos diante de um projeto de software, a principal pergunta que nos é apresentada é: “Quanto tempo você vai levar para entregar essa demanda?”. Nesse momento, por mais experiente que um dev seja, estimar tempo e prazo sempre será uma tarefa desafiadora. 

Podemos citar alguns dos motivos que atrapalham os profissionais na hora de estimar os prazos para o desenvolvimento de software:  

  • Desconhecimento dos requisitos do projeto;
  • Falta de conhecimento dos devs de como metrificar os processos de software;
  • Falta de análise dos requisitos antes de estimar;
  • Solicitações de mudança de escopo após o início do projeto;
  • Diferença na experiência e produtividade dos devs que fazem parte da equipe. 

Planejar é uma das principais atividades dentro de qualquer projeto, quando falamos em software não é diferente. Estimar prazos da melhor maneira possível é a garantia de que ao final o sucesso será alcançado. 

Quando o desenvolvimento não segue como planejado, os atrasos aparecem e os prazos estabelecidos não são cumpridos. Isso pode afetar toda a empresa, aumentando os custos e até causando prejuízos. 

Técnicas de estimativa 

Antes de qualquer coisa, é imprescindível decompor o projeto em atividades menores. Estimar o projeto como todo torna a tarefa ainda mais difícil e assim o risco de não prever alguns problemas se torna maior e o sucesso pode não ser alcançado. 

Existem inúmeras técnicas de estimativas para o desenvolvimento de software, e vamos listar aqui algumas para poder auxiliar nessa tarefa. 

Planning Poker 

A utilização dessa técnica é bem simples e pode ser utilizada em qualquer projeto. Para isso é necessário um baralho com os números das cartas baseado na sequência de Fibonacci (1,2,3,5,8,13,21,34 e 55), se a tarefa for maior que isso, ela é considerada grande de mais e deve ser quebrada em mais de uma tarefa. 

São necessários dois devs que vão ler os requisitos e então escolher uma carta que representa a quantidade de horas que ele levará para concluir a tarefa. Ambos mostram as cartas e se forem diferentes os tempos, eles devem explicar os motivos. Em seguida, refazem o processo e se ainda sim forem divergentes o maior valor é escolhido. 

Comparação 

Geralmente os times de desenvolvimento contam com profissionais bastante experientes e que já participaram de diversos projetos e assim, a técnica de comparação pode ser empregada utilizando dados de projetos anteriores como base de planejamento atual. 

Para isso acontecer da forma correta, é preciso manter uma documentação consistente onde seja possível buscar informações de prazos anteriores.  

Decomposição 

Essa técnica é bem simples, porém pode ser complexa e demorada quando se trata de projetos grandes. A ideia é dividir as atividades dentro do projeto até atingir tarefas mínimas que possam ser estimadas com maior exatidão. Podemos citar o exemplo do cadastro de clientes, deve-se dividir em cadastrar, editar e excluir dessa forma, fica mais fácil de estimar o tempo real de cada parte e para saber o tempo total do cadastro de cliente basta somar todas as estimativas. 

PERT ou Técnica dos três pontos 

Para calcular a estimativa, basta utilizar a fórmula PERT que aplica um peso maior para a estimativa mais provável sem deixar de considerar a pessimista e a otimista. 

PERT = (Pessimista + 4 x Provável + Otimista) / 6 

Exemplo: 

Otimista: 20 dias 

Pessimista: 35 dias 

Provável: 25 dias  

35+25*4+20/6=25,83

Nesse caso, a estimativa PERT para a tarefa é se 25,83 dias. 

Desvio Padrão  

Indica o quanto a duração calculada na fórmula ainda poderá variar para mais ou para mesmo. 

Desvio Padrão: Pessimista – Otimista / 6 

Seguindo o exemplo, temos: 

Desvio Padrão: 35 – 20 / 6 = 2,5 dias 

Ou seja, a atividade pode varia 2,5 dias para mais ou para menos. Para descobrir qual o desvio padrão do projeto como um todo, calcule a variância de cada atividade, some e tire a raiz quadrada do resultado para encontrar o Desvio Padrão do Projeto. e não somar os desvios padrão de cada tarefa.  

Variância: ((Pessimista – Otimista)) ² 
               6 

Considerações finais 

Estimativas de software são uma tarefa desafiadora para qualquer profissional de TI. Existe certa pressão e ocorre excesso de confiança em uma percepção subjetiva. No entanto, os maiores problemas na estimativa se derivam da forma como os requisitos chegam até a equipe: incompletos, subjetivos ou inexistentes. Então é iniciado um processo em que os devs tem o trabalho de tentar extrair o maior número de informações e decompor para transformar um requisito abstrato em um conjunto de partes concretas. 

Particularmente eu gosto de utilizar uma combinação das técnicas de decomposição e PERT (quando o projeto permite). Com a decomposição, tenho fluxos e processos menores o que facilita o entendimento da demanda e a técnica PERT mostra os pontos de atenção e que podem extrapolar os prazos. Com essa informação em mãos, a equipe pode tomar a decisão de detalhar melhor o requisito ou iniciar o projeto sabendo que tal tarefa necessita de mais atenção para garantir o sucesso da entrega. 


Escrito por

Rafael Miranda
Bacharel em sistemas de informação pela Universidade do Oeste Paulista – UNOESTE e Mestre em ciências pela Universidade Tecnológica Federal do Paraná – UTFPR (Curitiba). Atualmente trabalha como desenvolvedor de software na DB1 Global Software.

Inscreva-se e receba nossa newsletter!

Estamos sempre gerando conteúdos inéditos para compartilhar conhecimento com você, além das últimas notícias de tecnologia.