🏃 Cap 02: Métodos Ágeis: Manifesto, Scrum, Kanban e XP
Guia Extra: Engenharia de Software e Modelagem UML • Bloco 1: Processo de Software
🗺️ Mapa Conceitual do Capítulo
flowchart TD
MAN["Manifesto Ágil (2001)\n4 Valores Fundamentais · 12 Princípios"] --> MET["Abordagens Ágeis Complementares"]
MET --> SCR["Scrum (Ken Schwaber & Jeff Sutherland)\nGestão Iterativa em Sprints de 1 a 4 semanas"]
MET --> KAN["Kanban (David J. Anderson)\nGestão de Fluxo Contínuo e Limites de WIP"]
MET --> XP["Extreme Programming - XP (Kent Beck)\nExcelência em Práticas Técnicas de Engenharia"]
subgraph SCRUM_CORE["Estrutura Canônica do Scrum (Guia 2020)"]
S_RESP["3 Responsabilidades: PO · Scrum Master · Developers"]
S_EVEN["5 Eventos: Sprint · Planning · Daily · Review · Retrospective"]
S_ARTE["3 Artefatos & Compromissos: Backlog (Meta) · Sprint Backlog (Meta) · Incremento (DoD)"]
S_RESP --- S_EVEN --- S_ARTE
end
SCR --> SCRUM_CORE
subgraph KANBAN_CORE["Métricas de Eficiência de Fluxo"]
K_METR["Lead Time (Visão do Cliente) · Cycle Time (Visão Técnica) · CFD"]
K_LEI["Lei de Little: WIP = Throughput × Lead Time"]
K_METR --- K_LEI
end
KAN --> KANBAN_CORE
subgraph XP_CORE["Práticas Técnicas do XP"]
X_PRAT["TDD · Programação em Par · Integração Contínua · Refatoração"]
end
XP --> XP_CORE
style MAN fill:#ede7f6,stroke:#512da8,stroke-width:2px
style MET fill:#e1f5fe,stroke:#0288d1,stroke-width:2px
style SCR fill:#e8f5e9,stroke:#4caf50,stroke-width:2px
style KAN fill:#fff3e0,stroke:#ff9800,stroke-width:2px
style XP fill:#fce4ec,stroke:#e91e63,stroke-width:2px
📜 1. O Manifesto Ágil (2001) e sua Filosofia
Em fevereiro de 2001, no resort The Lodge at Snowbird, em Utah, 17 líderes e pensadores do desenvolvimento de software (incluindo Kent Beck, Martin Fowler, Robert C. Martin, Jeff Sutherland e Ken Schwaber) redigiram o Manifesto para o Desenvolvimento Ágil de Software.
O Manifesto não propôs a abolição da disciplina ou da documentação, mas sim uma mudança profunda de prioridades através de quatro pilares axiomáticos:
| Valorizamos Mais… (Esquerda) | …Do Que (Direita) | Justificativa Arquitetural e de Negócio |
|---|---|---|
| Indivíduos e interações | Processos e ferramentas | Ferramentas sofisticadas não salvam equipes com comunicação fragmentada. |
| Software em funcionamento | Documentação abrangente | A única medida real de progresso técnico é código executável entregando valor. |
| Colaboração com o cliente | Negociação de contratos | Contratos rígidos incentivam disputas jurídicas; parcerias geram produtos melhores. |
| Responder a mudanças | Seguir um plano cego | Em mercados dinâmicos, a capacidade de pivotar supera planos feitos com dados incertos. |
🎯 Princípio Vital: “Mesmo havendo valor nos itens da direita, valorizamos mais os itens da esquerda.” O manifesto nunca disse “não faça documentação”, e sim que a documentação deve ser enxuta e a serviço do produto.
🔁 2. Scrum: O Framework de Gestão Empírica
O Scrum é um framework deliberadamente incompleto fundado no Empirismo (o conhecimento vem da experiência e as decisões são tomadas com base no que é observado) e no pensamento Lean (redução de desperdícios). Ele se sustenta em três pilares: Transparência, Inspeção e Adaptação.
Conforme o Scrum Guide oficial (versão 2020), a estrutura é composta rigorosamente por:
As 3 Responsabilidades (Papéis)
- Product Owner (PO): Responsável por maximizar o valor do produto resultante do trabalho do time. É o único proprietário do Product Backlog, definindo prioridades de negócio.
- Scrum Master (SM): Líder servidor que garante que o time compreenda e aplique o Scrum. Remove impedimentos organizacionais e protege o time de interferências externas.
- Developers (Desenvolvedores): Profissionais multidisciplinares comprometidos em criar qualquer aspecto de um Incremento utilizável a cada Sprint.
Os 3 Artefatos e Seus Respectivos Compromissos
Para manter foco e transparência absoluta, cada artefato possui um compromisso explícito associado:
| Artefato Scrum | Compromisso Associado | Definição do Compromisso |
|---|---|---|
| Product Backlog | Meta do Produto (Product Goal) | O estado futuro do produto que serve como alvo de longo prazo para a equipe. |
| Sprint Backlog | Meta da Sprint (Sprint Goal) | O objetivo único e negociável a ser alcançado durante a iteração corrente. |
| Incremento | Definição de Pronto (Definition of Done - DoD) | Lista formal e compartilhada de critérios de qualidade que o código deve cumprir. |
Os 5 Eventos Formais (Time-boxed)
- Sprint: O container para todos os outros eventos (duração fixa de 1 a 4 semanas).
- Sprint Planning: O time define Por que a Sprint é valiosa, O que pode ser feito e Como o trabalho será executado.
- Daily Scrum: Reunião diária de 15 minutos para os desenvolvedores inspecionarem o progresso rumo à Meta da Sprint.
- Sprint Review: Sessão de demonstração do incremento funcional aos stakeholders para coleta de feedback.
- Sprint Retrospective: Reunião interna do time para inspecionar pessoas, processos e ferramentas, planejando melhorias contínuas.
📋 3. Kanban: Gestão de Fluxo Contínuo e a Lei de Little
Originado no Sistema Toyota de Produção e adaptado para o trabalho do conhecimento por David J. Anderson, o Kanban não trabalha com caixas de tempo (time-boxes) ou iterações fixas, mas com Fluxo Contínuo:
graph LR
B["Backlog"] --> A["Análise (WIP: 2)"] --> D["Desenvolvimento (WIP: 3)"] --> T["Testes (WIP: 2)"] --> P["Pronto (Deploy)"]
Princípios Fundamentais do Kanban
- Visualizar o Fluxo de Valor: Mapear todas as etapas reais em um quadro visível.
- Limitar o Trabalho em Progresso (WIP Limits): O princípio central é “Pare de começar e comece a terminar”. Limitar a quantidade de tarefas simultâneas em cada coluna evita a sobrecarga cognitiva da alternância de contexto (context switching).
- Métricas de Fluxo:
- Lead Time: Tempo total decorrido desde a solicitação do cliente até a entrega final em produção.
- Cycle Time: Tempo decorrido desde o momento em que a equipe começa ativamente a trabalhar no item até sua conclusão.
- Throughput (Vazão): Quantidade de itens de trabalho entregues por unidade de tempo (ex: 8 histórias por semana).
📐 A Lei de Little Aplicada ao Software: \(\text{Lead Time Médio} = \frac{\text{Trabalho em Progresso (WIP)}}{\text{Throughput (Vazão)}}\) A matemática prova que, mantendo a vazão da equipe constante, a única maneira sustentável de reduzir o tempo de entrega aos clientes é diminuir o limite de WIP.
🛠️ 4. Extreme Programming (XP): Engenharia de Alta Disciplina
Enquanto o Scrum foca na gestão do projeto, o XP (Extreme Programming), concebido por Kent Beck, foca nas práticas técnicas de engenharia de software que tornam as mudanças de código baratas e seguras:
- Desenvolvimento Guiado por Testes (TDD): Escrever o teste unitário automatizado que falha antes de escrever a linha de código de produção.
- Programação em Par (Pair Programming): Dois engenheiros trabalham no mesmo código (Piloto e Copiloto), garantindo revisão contínua e disseminação de conhecimento.
- Refatoração Contínua: Melhorar a estrutura interna do código sem alterar seu comportamento observável, eliminando dívida técnica precocemente.
- Integração Contínua (CI): Integrar e testar o código na branch principal múltiplas vezes ao dia.
- Design Simples: Implementar a solução mais simples que faça os testes passarem, sem abstrações especulativas prévias (YAGNI - You Aren’t Gonna Need It).