📊 ATIVIDADE 19: MÉTRICAS DE SOFTWARE, ESTIMATIVAS E DORA
Para realizar este laboratório com sucesso, certifique-se de ter compreendido os conceitos apresentados no:
👉 CAPÍTULO 19: GERÊNCIA DE CONFIGURAÇÃO (SCM)
Bem-vindo a mais uma etapa indispensável da sua formação em Engenharia de Software! Nas últimas semanas, focamos intensamente em aspectos técnicos: codificação, arquitetura, testes, infraestrutura e segurança. Hoje, assumiremos o papel de Gestores de TI e Líderes Técnicos (Tech Leads) para responder a uma das perguntas mais desafiadoras feitas pelos diretores de qualquer empresa: "Quando o sistema estará pronto e quão eficiente é a nossa equipe de engenharia?" ⏰💼
Aprenderemos sobre técnicas de estimativas ágeis e conheceremos as famosas Métricas DORA, a referência global e científica de mercado usada para medir a velocidade de entrega e a estabilidade de equipes de alto desempenho em DevOps.
🎯 Objetivos de Aprendizagem do Laboratório
Ao final deste laboratório prático (estimativa: 4 horas presenciais / autoguiadas), você será capaz de:
- Diferenciar estimativas tradicionais de estimativas ágeis (Story Points).
- Calcular a velocidade de desenvolvimento (Velocity) de um time de desenvolvimento.
- Compreender e calcular as 4 Métricas Chaves da DORA (Deployment Frequency, Lead Time, MTTR, Change Failure Rate).
- Mapear e classificar o nível de maturidade operacional de uma equipe de software.
🏢 O Cenário Prático (Seu Desafio)
Na TecProExpress, a diretoria estava insatisfeita. Os projetos sempre atrasavam, as estimativas em "horas" eram imprecisas e, pior, ninguém sabia medir se as recentes automações (CI/CD, Docker e testes JUnit) realmente trouxeram melhorias reais para a velocidade ou se apenas aumentaram a complexidade técnica.
Os gerentes cobravam relatórios baseados em "linhas de código escritas por dia", o que incentivava os programadores a escreverem códigos inchados e ruins apenas para bater a meta.
"Seu desafio como Tech Lead / Agile Coach é reformular a forma de planejar e medir a eficácia do time da TecProExpress. Você calculará a capacidade da equipe em Story Points, estimará a entrega de um backlog crítico de rotas e implantará os indicadores DORA para provar cientificamente os benefícios das práticas DevOps no negócio."
🧠 Fundamentos: A Teoria Traduzida
1. Estimativas Ágeis vs Tradicionais
- Estimativa Tradicional (Horas/Dias): Tenta adivinhar o tempo exato de uma tarefa. Costuma falhar porque ignora a complexidade subjetiva, interrupções e riscos técnicos.
- Story Points (Estimativa de Esforço): Medida relativa baseada na Sequência de Fibonacci (1, 2, 3, 5, 8, 13...) que avalia o esforço, complexidade e incerteza de um item do backlog, comparando-o com tarefas já conhecidas.
- Velocidade (Velocity): A soma de Story Points de tarefas que o time consegue entregar (mudar para o status 'Done') no período de uma Sprint (normalmente 2 semanas).
2. As 4 Métricas DORA (DevOps Research and Assessment)
O grupo de pesquisa do Google (DORA) comprovou estatisticamente que a performance de engenharia de software é classificada por 4 métricas equilibradas entre Velocidade de Entrega e Estabilidade do Sistema:
📊 O Quadrante de Indicadores DORA
flowchart TD
subgraph DORA ["As 4 Métricas Fundamentais DORA"]
direction TB
subgraph Velocidade ["Eficácia & Velocidade (Entrega)"]
direction LR
DF["Deployment Frequency<br/>(Frequência de Deploy)"]
LT["Lead Time for Changes<br/>(Tempo de Espera por Mudança)"]
end
subgraph Estabilidade ["Qualidade & Estabilidade (Segurança)"]
direction LR
CFR["Change Failure Rate<br/>(Taxa de Falha de Mudanças)"]
MTTR["Mean Time to Restore<br/>(Tempo Médio de Recuperação)"]
end
end
style DORA fill:#f9f9f9,stroke:#333,stroke-width:2px
style Velocidade fill:#e1f5fe,stroke:#0288d1,stroke-width:2px
style Estabilidade fill:#ffebee,stroke:#c62828,stroke-width:2px
- Deployment Frequency (DF): Com que frequência sua equipe publica código em produção. (Meta Elite: Múltiplos deploys por dia).
- Lead Time for Changes (LT): Quanto tempo leva para um commit de código sair da máquina do desenvolvedor e rodar com sucesso em produção. (Meta Elite: Menos de 1 hora).
- Change Failure Rate (CFR): Qual a porcentagem de deploys em produção que causam falhas no sistema e exigem correção imediata (hotfix/rollback). (Meta Elite: 0% a 15%).
- Mean Time to Restore (MTTR): Quanto tempo a equipe leva, em média, para recuperar o sistema de uma pane em produção. (Meta Elite: Menos de 1 hora).
📖 Exemplo Guiado: Calculando Capacidade e Métricas DevOps
A equipe de desenvolvimento da TecProExpress possui um histórico de desempenho nas últimas 3 Sprints de 15 dias:
- Sprint 1: Entregou 24 Story Points.
- Sprint 2: Entregou 30 Story Points (equipe mais focada).
- Sprint 3: Entregou 21 Story Points (feriado e impedimento técnico).
1. Calculando a Velocidade Média do Time
$$\text{Velocidade Média} = \frac{24 + 30 + 21}{3} = 25 \text{ Story Points por Sprint}$$
Se o backlog total para o lançamento do novo módulo de motoristas tem um esforço estimado de 100 Story Points, o número de Sprints necessárias para entregar o projeto será: $$\text{Previsão de Sprints} = \frac{100 \text{ SP (Escopo)}}{25 \text{ SP (Velocidade)}} = 4 \text{ Sprints (aproximadamente 2 meses de trabalho)}$$
2. Painel de Indicadores DORA do Projeto (Simulado)
Com a adoção do pipeline CI/CD e Docker, o time registrou a seguinte performance no último mês:
- Deploys em produção: 20 deploys efetuados no mês.
- Deployment Frequency: Aprox. 1 deploy por dia útil (Nível: Alto).
- Tempo de Commit a Produção: Em média 4 horas (desde o merge na main até rodar no servidor).
- Lead Time for Changes: 4 horas (Nível: Alto).
- Falhas pós-deploy: De 20 deploys, apenas 1 causou queda na API e exigiu rollback.
- Change Failure Rate: $1 / 20 = \mathbf{5%}$ (Nível: Elite).
- Tempo de recuperação da falha: O rollback demorou exatamente 20 minutos para ser efetuado.
- Mean Time to Restore (MTTR): 20 minutos (Nível: Elite).
💻 Calculador de Velocidade Ágil & Métricas DORA em Python
Para auditar métricas de desempenho e projetar a capacidade de entrega do time:
# metricas_dora.py
sprints_passadas = [24, 30, 21]
velocidade_media = sum(sprints_passadas) / len(sprints_passadas)
backlog_restante_sp = 100
sprints_necessarias = round(backlog_restante_sp / velocidade_media, 1)
deploys_mes = 20
falhas_deploy = 1
change_failure_rate = (falhas_deploy / deploys_mes) * 100
mttr_minutos = 20
lead_time_horas = 4.0
print("=" * 65)
print("📊 PAINEL DE MÉTRICAS DORA & CAPACIDADE ÁGIL - TECPROEXPRESS")
print("=" * 65)
print(f"🏃 Velocidade Média: {velocidade_media:.1f} Story Points / Sprint")
print(f"📅 Backlog Restante: {backlog_restante_sp} SP -> Previsão de Entrega: {sprints_necessarias} Sprints")
print("-" * 65)
print("🎯 INDICADORES DORA (DevOps Research & Assessment):")
print(f" • Deployment Frequency: {deploys_mes} deploys/mês (Classificação: ALTO)")
print(f" • Lead Time for Changes: {lead_time_horas:.1f} horas (Classificação: ALTO)")
print(f" • Change Failure Rate: {change_failure_rate:.1f}% (Classificação: ELITE)")
print(f" • Time to Restore (MTTR): {mttr_minutos} minutos (Classificação: ELITE)")
print("=" * 65)
🖥️ Saída Esperada no Terminal:
=================================================================
📊 PAINEL DE MÉTRICAS DORA & CAPACIDADE ÁGIL - TECPROEXPRESS
=================================================================
🏃 Velocidade Média: 25.0 Story Points / Sprint
📅 Backlog Restante: 100 SP -> Previsão de Entrega: 4.0 Sprints
-----------------------------------------------------------------
🎯 INDICADORES DORA (DevOps Research & Assessment):
• Deployment Frequency: 20 deploys/mês (Classificação: ALTO)
• Lead Time for Changes: 4.0 horas (Classificação: ALTO)
• Change Failure Rate: 5.0% (Classificação: ELITE)
• Time to Restore (MTTR): 20 minutos (Classificação: ELITE)
=================================================================
🌐 Exemplo de Payload JSON para Telemetria de Métricas DORA (Swagger /docs)
{
"time_id": "TEAM-LOGISTICA-01",
"periodo_coleta": "2026-03",
"metricas_dora": {
"deployment_frequency_mes": 20,
"lead_time_hours": 4.0,
"change_failure_rate_percent": 5.0,
"mean_time_to_restore_minutes": 20
},
"classificacao_geral": "ELITE"
}
🛠️ Prática Obrigatória 1: Estimando o Backlog Ágil
Cenário: Planejando as entregas do projeto final de Engenharia de Software.
- Crie uma tabela Markdown listando 5 requisitos/funcionalidades chave restantes para a consolidação final do seu projeto de grupo.
- Atribua a cada funcionalidade uma estimativa em Story Points usando a escala de Fibonacci (1, 2, 3, 5, 8, 13). Justifique por que uma funcionalidade recebeu pontuação maior (ex: complexidade de banco de dados, API de terceiros) em comparação a uma simples (ex: CRUD básico).
- Defina uma velocidade média hipotética para o seu grupo (ex: 8 SP por Sprint de 1 semana) e calcule em quantas Sprints o grupo entregará o backlog total.
🛠️ Prática Obrigatória 2: Diagnóstico DORA do Time
Cenário: Avaliando a maturidade operacional e qualidade do processo de desenvolvimento.
- Crie uma seção no seu documento Markdown chamada "Painel DORA do Projeto".
- Defina e explique como seu grupo coletará ou simulará cada uma das 4 métricas DORA no fluxo de trabalho de desenvolvimento de vocês.
- Classifique o nível de maturidade simulada da sua equipe (Baixo, Médio, Alto ou Elite) com base em cada indicador de velocidade e estabilidade.
📤 Instruções de Entrega (Microsoft Teams)
Após estruturar os seus planos de estimativas e o painel DORA:
- Salve o arquivo de especificações com o nome
Atividade_19.mdna pastaes-atv-19-metricas-estimativas/do seu repositório GitHub. - Certifique-se de fazer o commit e push para o repositório público.
- Submeta o link do seu repositório no Microsoft Teams para avaliação do professor.
💡 Checkpoint de Lógica
Reflexão Profissional: Imagine que um gerente de TI tradicional decida cobrar do time uma meta agressiva de aumentar a Deployment Frequency (Frequência de Deploy) para 5 vezes ao dia, porém sem investir em automação de testes unitários (JUnit) ou pipeline de CI. O que acontecerá inevitavelmente com a métrica Change Failure Rate (Taxa de Falha de Mudanças) e com o MTTR (Tempo de Recuperação) da equipe? Por que as métricas DORA devem ser analisadas de forma equilibrada? (Resposta: Aumentar a velocidade de deploy sem automação de testes fará com que códigos não-validados sejam publicados muito mais rápido, disparando a taxa de falhas pós-deploy (CFR) para níveis alarmantes. Além disso, sem testes ou infraestrutura resiliente, o time gastará muito mais tempo localizando a origem de bugs em produção, aumentando drasticamente o MTTR. As métricas DORA são propositalmente balanceadas: a velocidade de entrega (DF e LT) deve sempre caminhando de mãos dadas com a estabilidade e qualidade (CFR e MTTR), garantindo rapidez sem sacrificar a segurança). 📊⚖️🧠
📊 Rubrica Formativa de Avaliação
| Critério de Avaliação | Insuficiente (0% - 40%) | Regular (41% - 70%) | Excelente (71% - 100%) |
|---|---|---|---|
| Estimativas Ágeis (Story Points & Fibonacci) | Atribui pontos arbitrários sem usar a sequência de Fibonacci ou sem calcular a velocidade. | Pontua 5 tarefas mas sem justificar as diferenças de complexidade técnica. | Estimativa em Story Points impecável justificando complexidades técnicas e calculando a previsão realista de Sprints. |
| Diagnóstico de Métricas DevOps (DORA) | Omite os 4 indicadores DORA (DF, LT, CFR, MTTR). | Mapeia os indicadores mas sem classificar os níveis de maturidade da equipe. | Painel DORA completo diagnosticando a velocidade e a estabilidade com reflexão sobre a métrica equilibrada. |
| Entrega no GitHub | Entrega fora da pasta `es-atv-19-metricas-estimativas/`. | Arquivo entregue mas sem tabelas organizadas em Markdown. | Submete `Atividade_19.md` com tabelas de estimativas e painel DORA perfeitamente formatados. |