Hospedagem Profissional

Hospedagem Profissional
Clique aqui e ganhe US$ 10,00 para testar durante 1 mês a melhor hospedagem: Digital Ocean!

quarta-feira, 29 de outubro de 2008

Extreme Programming (XP)

Metodologia adequada a equipes pequenas (até 10 pessoas), parte do princípio de que a melhor documentação é o código fonte: qualquer outra documentação fica logo desatualizada e por isso perde a confiabilidade.

Baseada em práticas, como programação aos pares, semana de 40 horas e reuniões em pé. Frases conhecidas: 1) Sem um processo, só uma pessoa excepcional consegue desenvolver um sistema... Com muito processo,pessoas excepcionais não conseguem desenvolver sistemas excepcionais 2) Uma boa equipe pequena produz mais que grandes equipes

Desenvolvida em 1996 por Kent Beck, é uma metodologia bastante nova que renega todos os paradigmas do desenvolvimento tradicional de software. Para a XP®, a arquitetura do sistema é uma metáfora. A arquitetura é na verdade desenvolvida ao longo do projeto onde todo o código escrito é constantemente reconstruído para aumentar a simplicidade e objetividade do mesmo. A XP® vem ganhando inúmeros adeptos dentre os programadores mais experientes.

O manifesto Ágil

“Estamos evidenciando maneiras melhores de desenvolver software fazendo-o nós mesmos e ajudando outros a fazê-lo. Através desse trabalho, passamos a valorizar:- Indivíduos e interação MAIS QUE processos e ferramentas; - Software em funcionamento MAIS QUE documentação abrangente; - Colaboração com o cliente MAIS QUE negociação de contratos; - Responder a mudanças MAIS QUE seguir um plano. Ou seja, mesmo tendo valor os itens à direita, valorizamos mais os itens à esquerda.

As Práticas do XP

  • The Customer is Always Available - O cliente está sempre disponível para resolver dúvidas, alterar o escopo de uma iteração e definir prioridades.
  • Metaphor - O time se comunica sobre o software em termos de uma metáfora, caso consiga encontrar uma boa.
    Planning Game
    - Os jogadores do jogo do planejamento são o cliente e os técnicos. O objetivo: colocar em produção as funcionalidades de maior valor possível durante o decorrer do jogo.
  • Small Releases - O software é entregue em pequenas versões para que o cliente possa obter o seu ganho o mais cedo possível e para minimizar riscos.
  • Acceptance Tests - São definidos pelo usuário e são os critérios de aceitação do software.
  • Test First Design - Primeiro são escritos os testes, depois é feita a implementação e por último trabalha-se o design. Continuous Integration - Os diversos módulos do software são integrados diversas vezes por dia e todos os testes unitários são executados. O código não passa até obter sucesso em 100% dos testes unitários.
  • Simple Design- O código está, a qualquer momento, na forma mais simples que passe todos os testes.
  • Refactoring - A cada nova funcionalidade adicionada, é trabalhado o design do código até ficar na sua forma mais simples.
  • Pair Programming - Todo código de produção é desenvolvido por duas pessoas trabalhando com o mesmo teclado, o mesmo mouse e o mesmo monitor.
  • Move People Around - As duplas de programação são revezadas em média a cada 2h.
  • Collective Code Ownership - E equipe como um todo é responsável por cada arquivo de código. Não é preciso pedir autorização para alterar qualquer arquivo.
  • Coding Standards - Todo código é desenvolvido seguindo um padrão.
  • 40 Hour Week - Trabalhar por longos períodos é contraproducente.


Valores do XP

  • Simplicidade O design do software é simplificado continuamente. É isso que sustenta a premissa extrema. O processo em si também é adaptado, a cada dia, se alguém vir como torná-lo mais simples.
  • Comunicação Prefira: chat a eMail, telefonemas a chat, conversar pessoalmente a telefonemas, trabalhar na mesma sala a ter salas isoladas, trabalhar em conjunto a revisar o resultado final.
  • Coragem É preciso coragem para: apontar um problema no projeto, parar quando você está cansado, pedir ajuda quando necessário, simplificar código que já está funcionando, dizer ao cliente que não será possível implementar um requisito no prazo estimado, fazer alterações no processo de desenvolvimento. Ou seja, fazer a coisa certa mesmo que não seja a coisa mais popular naquele momento.
  • Feedback Todo problema é evidenciado o mais cedo possível para que possa ser corrigido o mais cedo possível. Toda oportunidade é descoberta o mais cedo possível para que possa ser aproveitada o mais cedo possível.