Críticas sobre Extreme Programming Francisco Hillesheim Roteiro ► Extreme Programming ► Principais Críticas Estudo de Caso: Empresa Canadas ► Conclusão Extreme Programming ► Valores: Simplicidade Comunicação Coragem Feedback Extreme Programming ► Características Desenvolvimento incremental (Small releases) Programação em pares Refactoring Design simples Interação com o usuário final (Onsite Costumer) Código coletivo Escrever testes antes de implementar Principais Críticas ► Várias críticas são remetidas a XP Inovador Abordagem diferente com relação as metodologias tradicionais ► Principais Falta de documentação Representante do cliente acoplado ao projeto Programação em pares TDD Principais Críticas ► Falta de documentação Dificulta o uso e a manutenção do código Muito centrado no código ►Dificuldade de leitura ►Maior manutenção de código Alternativa ►Automatizar o processo de documentação Utilizando XML, por exemplo Estudo de caso ►Código é documentado ►Alguns requisitos Principais Críticas ► Representante projeto do cliente acoplado ao Dedicação 100% ao projeto Membros experientes dificilmente aceitariam tal tarefa Grande dificuldade de encontrar um representante Exemplo: Saída do representante no projeto C3 (Chrysler) Principais Críticas ► Representante projeto do cliente acoplado ao Alternativa ►Definir uma especificação de requisitos concisa ►Não precisa ser completa Estudo de caso ►Representante do cliente é um membro da empresa Principais Críticas ► Programação em pares 100% do tempo é exagero Programar sozinho favorece a criatividade Pode gerar aborrecimentos ►Programadores de níveis diferentes Com relação a inspeção e revisão de código ►Existem estudos mostrando que não há evidências sobre a eficácia da programação em pares Principais Críticas ► Programação em pares Alternativa ►Utilizar programação mútua ►Um programador garante a qualidade do software do outro e vice-versa Estudo de caso ►Programação em pares é utilizada na maioria das vezes ►Útil na questão de treinamento (e também feedback) Principais Críticas ► TDD Testes podem conter bugs Testes de unidade e aceitação ►Baixo nível -> unidade ►Alto nível -> aceitação ►Lacuna entre os dois Automatização 100% dos testes é impraticável ►Testes manuais ainda são necessários ►Maior esforço para criação de “small releases” Principais Críticas ► TDD Alternativa ►Utilizar não somente testes, mas também revisões e inspeções do código modificado Estudo de caso ►Principal desafio ►Testes são feitos manualmente e via JUnit Conclusão ► XP é um processo simbiótico Todas as práticas ou nada feito Requer disciplina Problemas: ►Quando alguma prática não é bem realizada ►Efeito cascata