O que é estimativa de software?
No Ciclo de Vida do Software, a estimativa é um processo que é utilizado para predizer de forma mais precisa o esforço necessário para uma etapa, ou projeto inteiro.
O esforço estimado é utilizado para definir cronogramas, construir orçamento e planejar entregas.
No entanto, a estimativa não é um compromisso: é um cone de incerteza. A estimativa serve como um apoio para se chegar a um compromisso, que pode ou não ser atingido.
Assim, estimar tem como finalidade responder à pergunta: é viável estabelecer um compromisso?
Portanto, para que a estimativa resulte em um compromisso viável, é preciso que algumas questões sejam levadas em consideração. Qual métrica será utilizada, qual a riqueza de informações que se tem para fazer a estimativa e principalmente ter experiência para tomar essas e outras decisões.
Riscos da estimativa e como tratar.
Estimativas, assim como software, são extremamente voláteis e sujeitas a inúmeras mudanças. Portanto, é necessário conhecer os riscos que podem afetá-las.
Podemos resumir os riscos em: intrínsecos, que são parte da execução do projeto, e extrínsecos, que não são de completo controle.
Os riscos intrínsecos são:
- Os requisitos não são bem entendidos;
- Os testes não capturam falhas e;
- O desenvolvimento é feito de forma não manutenível.
Os riscos extrínsecos são:
- Integrante sai do projeto e;
- Tecnologia utilizada falha.
Para considerar os riscos em sua estimativa, a solução mais natural é estimar frequentemente o esforço, atualizando sempre as expectativas em torno da construção do sistema.
Outra possível solução para tratar os riscos é estabelecer um processo formal de preparação para obter uma estimativa mais precisa.
- Estabelecer estimativa de escopo e finalidade;
- Estabelecer base técnica, regras básicas, e premissas;
- Coletar dados;
- Medir tamanho do Software;
- Preparar base estimativa;
- Quantificar os riscos e análise de risco;
- Estimativa, validação e revisão;
- Gerar um plano de projeto;
- Documento de estimativa e lições aprendidas e;
- Acompanhar projeto ao longo do desenvolvimento.
Por que fazer estimativa?
A primeira razão é que, às vezes, lançamentos de software e / ou introdução de recursos precisam ser orientados por uma data fixa. Exemplos disso incluem ter um prazo de entrega ao cliente, uma conferência ou evento, ou até mesmo uma excelente oportunidade de marketing que seja sensível ao tempo. Este são motivos bastante legítimos e devem ser tratados de acordo.
A segunda razão potencial é que as estimativas são recursos bastante satisfatórios para algumas pessoas chave, normalmente clientes, gerentes seniores ou executivos. Essas pessoas estão interessadas em métricas, atualizações de status e relatórios para obter visibilidade, transparência e insights sobre iniciativas de outros departamentos, produtos e ações executadas voltadas para atingir os objetivos e metas da empresa.
Essas métricas e relatórios são projetados para fornecer indicações e medições da eficácia, progresso e impacto como resultado dessas ações e entregas. Esses também são motivos legítimos se as métricas fornecidas forem significativas, valiosas e precisas o suficiente para garantir o planejamento de tempo e custo.
Como o software pode ser desenvolvido sem planejamento extensivo, e mesmo sem uma compreensão completa do problema a ser resolvido, o mercado geralmente exige que isso seja feito dessa maneira.
Dito de outra forma: ninguém pede a um pequeno empreiteiro para construir um prédio gigantesco em 6 meses, mas os clientes das empresas de software frequentemente esperam que isso seja feito, de forma análoga, para os sistemas de software.
Uma pesquisa recente da CA Technologies perguntou a membros de 70.000 equipes de Scrum sobre as técnicas de estimativa que eles usavam. A partir daí, fizeram uma correlação dessas técnicas com a velocidade de entrega.
Eles descobriram que aqueles que evitaram estimativas apresentaram alguns dos tempos de entrega mais lentos. Por outro lado, aqueles que empregaram estimativas baseadas em escopo apresentaram os resultados mais rápidos.
Quais são as métricas-chave?
A escolha de uma métrica ideal consegue garantir que você obtenha as seguintes características relacionadas a seu sistema:
- Duração
- Esforço
- Tamanho
- Produtividade
- Confiabilidade
Dentre as métricas mais utilizadas no mercado, podemos destacar as seguintes:
- Ponto de Função: Um dos 5 padrões reconhecidos pela ISO (ISO/IEC 20926) como forma de medir o tamanho funcional de softwares, é utilizado para medir as funcionalidades percebidas pelo usuário no sistema. Esse método é amplamente utilizado, desde organizações governamentais até pequenas fábricas de software.
- Story Points: A forma de estimativa adotada pela metodologia ágil Scrum, essa métrica é elaborada através da atividade de Planning Poker. Ela permite medir o esforço necessário para o desenvolvimento baseado nas histórias de usuário.
- COCOMO: Esta forma estima o esforço necessário para construir o software com base no tamanho do código que se estimou ser necessário ser construído.
Como saber qual métrica usar?
Para se conseguir chegar em uma estimativa com maior precisão, é preciso utilizar uma métrica adequada para medição de seu software. A escolha se baseia desde o processo utilizado até a fase do projeto que se está fazendo a estimativa.
Cada fase do projeto traz um nível de detalhe diferente dos requisitos necessários para realizar a estimativa. Portanto, é preciso escolher um nível de precisão da métrica de estimativa para se adequar ao seu conhecimento sobre o sistema em cada um dos momentos a seguir:
- Durante um estudo de viabilidade ou fase inicial de iniciação;
- Durante a fase de coleta de requisitos;
- Durante a fase de design detalhado ou planejamento de Sprint e;
- Durante o tempo de construção ou planejamento do Sprint.
E então? Você está conseguindo acompanhar bem os seus projetos? Está encontrando dificuldades em estimar esforços, custos e prazos?
Conheça a nossa solução e não fique mais no escuro com seus projetos!