Definição – O que significa Extreme Programming (XP)?
Extreme Programming (XP) é uma metodologia de desenvolvimento de software intensa, disciplinada e ágil com foco na codificação dentro de cada estágio do ciclo de vida de desenvolvimento de software (SDLC). Esses estágios são: Integração contínua para descobrir e reparar problemas no início do processo de desenvolvimento Envolvimento do cliente e feedback rápido Essas disciplinas da metodologia XP são derivadas dos seguintes quatro valores-chave de Kent Beck, originador do XP: Comunicação: A comunicação entre os membros da equipe e os clientes deve ocorrer com frequência e resultam em discussões abertas sobre o projeto, sem medo de represálias. Simplicidade: envolve o uso do design, tecnologia, algoritmos e técnicas mais simples para satisfazer as necessidades do cliente para a iteração do projeto atual. Feedback: o feedback deve ser obtido em vários níveis distintos, por exemplo, testes de unidade, revisão de código e integração. Coragem: implemente decisões difíceis, mas necessárias.
Definirtec explica Extreme Programming (XP)
Além dos valores-chave, a implementação da metodologia XP também requer o suporte dos três princípios de mudança incremental, abrangendo mudança e trabalho de qualidade. Doze práticas-chave também devem ser seguidas: Alguns praticantes da metodologia tradicional criticam o XP como um processo “irreal” que causa codificação imprudente. Vários desenvolvedores de software tradicionais consideram o XP inflexível, com baixa funcionalidade e pouco potencial criativo. Críticas adicionais são que XP: Não tem estrutura. Carece de documentação essencial. Não tem entregas claras, ou seja, estimativas realistas são difíceis porque todo o escopo dos requisitos do projeto não está totalmente definido. (Essa falta de requisitos detalhados torna o XP altamente sujeito a variação de escopo.) Necessita de mudança cultural para adoção. (Pode funcionar apenas para desenvolvedores seniores) É caro, ou seja, requer comunicação / reuniões frequentes às custas do cliente, o que pode levar a negociações difíceis. Possível ineficiência devido a mudanças frequentes de código em várias iterações. Claro, como acontece com qualquer metodologia de desenvolvimento, tudo isso é muito subjetivo e depende das preferências pessoais.