XP Extreme Programming
Conceito
Trata-se de uma metodologia ágil para equipes pequenas e médias desenvolvendo softwares com requisitos vagos e em constante mudança. Os programadores trabalham em pares e desenvolvem testes para cada tarefa antes da escrita do código-fonte em si.
Cada tarefa representa uma característica discreta/isolada do sistema e um teste unitário pode então ser projetado para essa tarefa.
Práticas
- Programação em Pares: Os desenvolvedores trabalham em pares, um verificando o trabalho do outro. Utilizam o mesmo mouse, teclado e monitor.
- Refactoring: Recriam o código continuamente tão logo os aprimoramentos do código forem encontrados.
- Integração contínua: Assim que uma tarefa é concluída, este é integrado ao sistema como um todo.
- Planejamento incremental: Os requisitos são registrados em cartões de histórias e as histórias a serem incluídas em um release são determinadas pelo tempo disponível e sua prioridade relativa. Essas histórias viram tarefas.
- Desenvolvimento test-first: Um framework automatizado de teste unitário é usado para escrever os testes para uma nova parte da funcionalidade antes que seja implementada. TDD
- Pequenos releases: O conjunto mínimo útil de funcionalidade que agrega valor ao negócio é desenvolvido primeiro. Releases do sistema são frequentes e adicionam funcionalidade incrementalmente ao primeiro release.
- Reuniões em pé: Ajuda a não se perder o foco nos assuntos.
- Protótipo operacional: Denominados soluções pontuais, que devem ser implementados e avaliados com objetivo de reduzir o risco para quando a verdadeira implementação iniciar e validar as estimativas originais para a história contendo o problema de projeto.
- Time Coeso
- Propriedade Coletiva: Os pares de desenvolvedores trabalham em todas as áreas do sistema, de forma que não se formem ilhas de conhecimento. Qualquer um pode mudar qualquer coisa.
- Ritmo sustentável: 40horas semanas.
- Client on-site: Um representando do usuário final do sistema deve estar disponível em tempo integral.
- Metáforas: Utilização de metáforas para ajudar na comunicação com o usuário.
Processos
- Planejamento
- Projeto
- Codificação
- Teste
Valores
- Comunicação
- Simplicidade
- Feedback
- Coragem
- Respeito