XPManager - Extreme Programming

A Extreme Programming (XP) é uma metodologia ágil de desenvolvimento de software criada no ano de 1996 por Kent Beck, Ward Cunningham e Ron Jeffries durante o desenvolvimento do sistema C3, para a montadora de automóveis Chrysler, nos Estados Unidos. A XP especialmente indicada para equipes pequenas e médias de desenvolvimento, que tem que lidar com requisitos vagos ou em constante mudança.

Alguns dos princípios da XP vão contra as técnicas de engenharia de software tradicionais, uma vez que nela o principal foco é nas pessoas (vistas pelas metodologias tradicionais como meras peças que devem ser facilmente substituíveis dentro da máquina de desenvolvimento de software) e não nos processos formais exaustivamente documentados e teoricamente compreensíveis por qualquer desenvolvedor dentro da empresa. Além disto, também vai contra o senso comum a técnica de projetar apenas o que é necessário para a iteração em que se está trabalhando, mantendo o projeto simples e enxuto, e não projetar e modelar todo o sistema no início, onde ainda é muito vago, até mesmo para o cliente, o que ele realmente deseja.

A XP prega que a comunicação é mais importante que a documentação, mas a XP não é apenas uma desculpa para não documentar software. Esta é a principal crítica feita por pessoas que não conhecem a metodologia, pois o aspecto que mais se houve falar a respeito dela é que praticamente inexiste documentação. Mas a XP na verdade é uma metodologia que exige muita disciplina para que seja utilizada com sucesso.

 A XP se baseia em um conjunto de valores e uma série de técnicas, conhecidas como melhores práticas, que podem ser utilizadas individualmente, mas que tem uma maior efetividade quando utilizadas  em conjunto, uma vez que uma técnica dá suporte à outra. Muitas das técnicas propostas pela XP são apenas bom senso, e fazem parte da rotina de muitos desenvolvedores que já se utilizam das mesmas, mesmo sem saber que estão utilizando XP. Algumas delas são tão antigas quanto a programação. Então por que “Extreme” no nome? Porque a XP pega os princípios conhecidos e os coloca em níveis extremos:

·        Se revisão de código é bom, o código será revisado o tempo todo (pair programming).

·        Se teste é bom, todos vão testar o código o tempo todo (unit testing), até mesmo o cliente (functional testing).

·        Se projeto é bom, será parte do dia-a-dia de todos (refactoring).

·        Se simplicidade é bom, o sistema estará sempre na forma mais simples que suporte as funcionalidades necessárias para o momento (the simpliest thing that could possibly work).

·        Se arquitetura é importante, todos estarão definindo e refinando a arquitetura todo o tempo (metaphor).

·        Se testes de integração são bons, a integração será feita várias vezes por dia (contínuos integration).

·        Se iterações curtas são boas para que se possa ter um feedback rápido do cliente, elas serão planejadas para que possam ser suficientemente pequenas (small releases) permitindo a entrega de novas funcionalidades constantemente para o cliente (the planning game).

A Extreme Programming é uma metodologia ágil que se baseia no conceito de  aplicar as best practices a níveis extremos, o tempo todo. Como toda nova idéia, causa diversas percepções entre a comunidade de desenvolvedores, tendo grandes admiradores e opositores.