A Extreme Programming (XP) uma Metodologia gil para equipes
pequenas e mdias que desenvolvem software baseado em requisitos vagos e que se modificam rapidamente. Entre as principais diferenas da XP em relao s Metodologias Clssicas esto o feedback constante, a abordagem incremental e o encorajamento da comunicao entre as pessoas. A maioria das regras da XP causa surpresa no primeiro contato e muitas no fazem sentido se aplicadas isoladamente. a fora de seu conjunto que sustenta o sucesso da XP, trazendo uma verdadeira revoluo no desenvolvimento de software. O principal objetivo da XP dar agilidade ao desenvolvimento do projeto e busca garantir a satisfao do cliente. As prticas, regras, e os valores da XP garantem um agradvel ambiente de desenvolvimento de software para os seus seguidores, que so conduzidos por quatro princpios bsicos:
Princpio da Comunicao - busca manter o melhor relacionamento possvel entre clientes e desenvolvedores, preferindo conversas pessoais a outros meios de comunicao.
Princpio da Simplicidade - entende-se como simplicidade, a busca do objetivo de implementar o software com o menor nmero possvel de classes e mtodos. Outra idia importante deste princpio procurar implementar apenas requisitos atuais, evitando assim adicionar funcionalidades que podem ser importantes apenas no futuro. A aposta da XP que melhor fazer algo simples hoje do que implementar algo complicado hoje que talvez no venha a ser usado.
Princpio do Feedback - A prtica do feedback constante significa que o desenvolvedor ter informaes constantes do cdigo e do cliente. A informao do cdigo dada pelos testes constantes, que indicam os erros tanto individuais quanto do software integrado.
Princpio da Coragem - Sabe-se que no so todas as pessoas que possuem facilidade de comunicao e tm bom relacionamento interpessoal, este princpio tambm d suporte simplicidade, pois assim que a oportunidade de simplificar o software percebida, a equipe pode experimentar e buscar novas solues, alm disso, preciso coragem para obter e cobrar constantemente um feedback do cliente.
Principais prticas da Extreme Programming (XP)
Planejamento - Define o que ou no necessrio ser feito no projeto. A XP baseia-se em requisitos atuais para desenvolvimento de software, no em requisitos futuros.
Entregas Frequentes - Baseiam-se no desenvolvimento de um software simples, e conforme os requisitos aparecem, h a atualizao da verso do software. Cada verso entregue deve ter o menor tamanho possvel, contendo os requisitos de maior valor para o negcio. recomendado que as verses devem ser entregues a cada ms, ou no mximo a cada dois meses, aumentando a possibilidade de feedback rpido do cliente.
Metfora - So as descries de um software sem a utilizao de termos tcnicos com o objetivo de guiar o desenvolvimento do software com a maior transparncia possvel para o cliente.
Projeto simples - O software desenvolvido de acordo com a metodologia XP deve ser o mais simples possvel e satisfazer os requisitos atuais, sem a preocupao de requisitos futuros. Eventuais requisitos futuros devem ser adicionados assim que eles realmente existirem.
Testes - A Extreme Programming (XP) prioriza a validao do projeto durante todo o processo de desenvolvimento. Os desenvolvedores implementam o software criando primeiramente os testes.
Programao em pares - A implementao do cdigo feita em dupla, ou seja, dois desenvolvedores trabalham em um nico computador. Procurando identificar erros sintticos e semnticos, pensando estrategicamente em como melhorar o cdigo que est sendo implementado. Esses papis podem e devem ser alterados sempre que possvel.
Refatorao - Focaliza a lapidao do projeto do software e est presente em todas as etapas do desenvolvimento. A refatorao deve ser feita sempre que possvel, buscando principalmente simplificar o cdigo atual sem perder nenhuma funcionalidade.
Propriedade coletiva - O cdigo do projeto pertence a todos os membros da equipe. Isto significa que qualquer pessoa que percebe que pode adicionar valor a um cdigo, mesmo que ele prprio no o tenha desenvolvido, pode faz-lo, desde que faa os testes necessrios e no prejudique as funcionalidades atuais. Isto possvel porque na XP todos so responsveis pelo software. Uma grande vantagem desta prtica que, caso um membro da equipe deixe o projeto antes do fim, a equipe consegue continuar o projeto sem grandes dificuldades, pois todos conhecem todas as partes do software, mesmo que no seja de forma detalhada.
Integrao contnua - a prtica de interagir e construir o sistema de software vrias vezes por dia, mantendo os programadores em sintonia, alm de possibilitar processos rpidos. Integrar apenas um conjunto de modificaes de cada vez uma prtica que funciona bem porque fica bvio quem deve fazer as correes quando os testes falham. Esta prtica facilitada com o uso de apenas uma mquina de integrao, que deve ter livre acesso a todos os membros da equipe.
40 horas de trabalho semanal - a XP assume que no se deve fazer horas extras constantemente. Caso seja necessrio trabalhar mais de 40 horas pela segunda semana consecutiva, existe um problema srio no projeto que deve ser resolvido no com aumento de horas trabalhadas, mas com melhor planejamento.
Cliente presente - fundamental a participao do cliente durante todo o desenvolvimento do projeto. O cliente deve estar sempre disponvel para sanar todas as dvidas de requisitos, evitando atrasos e at mesmo construes erradas. Uma idia interessante manter o cliente como parte integrante da equipe de desenvolvimento (Tester).
Cdigo padro - Baseia-se na padronizao da arquitetura do cdigo, para que este possa ser compartilhado entre todos os programadores e at mesmo entre outros softwares.
Vantagens
As prticas do XP so usadas pelos integrantes da equipe, para facilitar no desenvolvimento e agregar qualidade no projeto. Um dos benefcios que a mesma oferece tornar o processo mais gil e flexvel. As prticas do XP so criadas para funcionarem juntas e fornecer mais valor do que cada uma poderia fornecer individualmente. Anlise prvia de tudo que pode acontecer durante o desenvolvimento do projeto, oferecendo qualidade, confiana, data de entregas e custos promissores. O XP ideal para ser usada em projetos em que o cliente no sabe exatamente o que deseja e pode mudar muito de opinio durante o desenvolvimento do projeto. Com feedback constante, possvel adaptar rapidamente eventuais mudanas nos requisitos. Estas alteraes nos requisitos so muitas vezes crticas nas metodologias tradicionais, que no apresentam meios de se adaptar rapidamente s mudanas. Outro ponto positivo das metodologias geis so as entregas constantes de partes operacionais do software. Desta forma, o cliente no precisa esperar muito para ver o software funcionando, como nas metodologias tradicionais.
Desvantagens
frequente acontecer bugs em todos os projetos de desenvolvimento de software. Existem pontos fracos no uso dessa metodologia, como: No existe uma avaliao de riscos, devendo, portanto implementar uma anlise e estratgias que buscam diminuir os erros. A anlise de requisitos informal e com isso pode no ser bem vista pelos clientes, que podero se sentir inseguros quanto ao bom funcionamento do sistema. A falta de documentao caracterstica do processo XP, pois, o mesmo no d muita nfase em burocracias como documentos, formulrios, processos, entre outros. Sendo, portanto, importante elaborao de documentos e diagramas que facilitem no entendimento e identificao do problema. Alm dessas desvantagens, existem algumas situaes em que no indicado o uso do XP conforme apresentado a seguir: A maior barreira para o sucesso de um projeto XP a cultura empresarial. Qualquer negcio que gerencie projetos tentando apontar o carro para a direo certa logo de cara ter conflitos com o time que insiste em ir acertando a direo continuamente. Outra cultura que no contribui para o XP aquela na qual voc requisitado a trabalhar horas e mais horas para provar o seu comprometimento com a empresa. Voc no consegue executar o XP se estiver cansado. Se aquilo que o seu time produz trabalhando em velocidade mxima no suficiente para a sua empresa ento o XP no a soluo. Outra barreira tecnolgica para o XP um ambiente no qual necessrio um longo tempo para se obter feedback. Por exemplo, se o seu sistema leva 24 horas para compilar e linkar, ser difcil integrar, compilar e testar vrias vezes ao dia.