Um pouco sobre o Método XP (Extreme Programming)

Micheli Rigon
Codengage
Published in
4 min readFeb 27, 2020
  • É uma metodologia ágil para desenvolvimento de software;
  • Leve e não prescritivo;
  • Com foco na agilidade das equipes e na qualidade dos projetos;
  • Recomendado para equipes pequenas e médias de até 12 pessoas;
  • Indicado para desenvolvimento de software com requisitos vagos e em constante mudança;
  • Desenvolvimento de sistemas orientados a objetos e incremental;
  • A principal tarefa é a codificação;
  • Necessário constante acompanhamento e realização de pequenos ajustes durante o desenvolvimento.

“Na hora do desenvolvimento do software, para aplicar os princípios e valores, o XP sugere uma série práticas porque há uma grande confiança na união entre elas pois os pontos fracos de cada uma são cobertos pelo ponto forte das outras.” (Vinícius Teles)

Valores

  • Simplicidade — Conceito de simplificar e tentar não complicar, otimizando a codificação;
  • Comunicação — A comunicação precisa ser muito clara, deve levar a informação correta para o público alvo;
  • Feedback — Retornos constantes em relação ao time (profissionais);
  • Coragem — Ambiente encorajador;
  • Respeito — Ambiente respeitoso entre os membros do time.

Princípios

  • Feedback rápido — Se existe a oportunidade para feedback, use;
  • Presumir simplicidade — Codificar de forma simples;
  • Mudanças incrementais — XP está aberto para mudanças no seu projeto;
  • Abraçar mudanças — Aceitar as mudanças que chegam no seu projeto;
  • Trabalho de alta qualidade — Realizar um trabalho que gera valor.

Práticas

Para aplicar os valores e princípios durante o desenvolvimento de software, XP propõe uma série de práticas, essas são divididas em 3 grupos:

  • Práticas organizacionais;
  • Práticas de equipe;
  • Práticas de pares.

Práticas Organizacionais

Equipe Inteira (Whole Team)

  • É composto pelo cliente (customer), a equipe (desenvolvedores, analistas de negócios, equipe de qualidade) e coach/facilitador/gerente.

Jogos de Planejamento (Planning Games)

  • Planejamento e priorização das entregas e releases (lançamentos para o usuário final);
  • No início da semana, desenvolvedores e cliente reúnem-se para priorizar as funcionalidades, as estórias já devem estar criadas.
  • Ao final de cada semana, o cliente recebe novas funcionalidades, completamente testadas e prontas para serem liberadas em produção.

Entregas Curtas (Small Releases)

  • Liberação de pequenas versões (releases) em curtos períodos de tempo, é importante para obter-se feedback.

Testes de Usuário/Aceitação (Customer Tests)

  • São testes construídos pelo cliente em conjunto com analistas e testadores, para aceitar o requisito do sistema.

Reuniões em pé (Stand-up Meeting)

  • Reuniões em pé para não se perder o foco nos assuntos, produzindo reuniões rápidas, apenas abordando tarefas realizadas e tarefas a realizar pela equipe.

Práticas de Equipe

Propriedade Coletiva (Colletive Code Ownership)

  • O código não possui um dono ou responsável, toda a equipe pode trabalhar nele, sem necessidade de solicitar permissão.

Padronização de Código (Code Standards)

  • Criar padronização de código para que todos possam ter o mesmo entendimento.

Ritmo Sustentável (Sustainable Pace)

  • Trabalhar em ritmo sustentável (40 horas/semana, 8 horas/dia), evitando excesso de horas extras;
  • Manter a equipe sempre motivada.

Metáfora (Metaphor)

  • Criar metáforas para compartilhar designs e visão técnica. Facilitar a comunicação entre cliente e programadores (negócio x técnico).

Integração Contínua (Continuous Integration)

  • Testes automatizados cada vez que um código é atualizado no repositório. Juntamente com a integração contínua das funcionalidades.

Práticas de Pares

Desenvolvimento Orientado a Teste (“TDD” Test-Driven Development)

  • Primeiro crie os testes unitários (unit tests) e depois crie o código para que os testes funcionem. Os testes unitários são essenciais para que a qualidade do projeto seja mantida.

Refatoração (Refactoring)

  • Refatorar o código melhorando a codificação existente sem alterar o comportamento da funcionalidade, permitindo a melhoria contínua da programação.

Design Simples (Simple Design)

  • Focar na simplicidade. Nem sempre o código mais fácil de ser desenvolvido levará a solução mais simples ao cliente. Código fácil deve ser identificado e substituído por código simples.

Programação em Par (Pair Programming)

  • Enquanto uma pessoa escreve o código, a outra pessoa observa, comenta e fornece feedback. Esse conceito ajuda a disseminar e compartilhar o conhecimento. Além do sistema sempre ser revisto por duas pessoas, evitando e diminuindo assim a possibilidade de defeitos.
Figura 01: Práticas do XP. Fonte: DevMedia

Papéis e funções

Cliente

  • Escrever as estórias;
  • Definir as prioridades;
  • Definir o escopo (entrega) em acordo com os programadores.

Programadores

  • Estima a duração das tarefas;
  • Delega as tarefas internamente.

Gerente

  • Fazer a mediação das interações externas;
  • Formar a equipe;
  • Obter os recursos necessários (reuniões, papel, entre outros);
  • Gerenciar o time;
  • Gerenciar problemas do time.

Já dizia o ditado…

  • Se testar é bom, então, todos testem o tempo todo;
  • Se revisão é bom, então, revisaremos o código o tempo todo;
  • Se o projeto é bom, ele fará parte das funções diárias de todos;
  • Se testes de integração é bom, então, que se integre o tempo todo;
  • Se simplicidade é bom, desenvolva uma solução não apenas que funcione, mas que seja a mais simples possível;
  • Se a arquitetura é importante, todo trabalham para definir e refinar a arquitetura;
  • Se iterações curtas é bom, então mantenha-as realmente curtas.

Referências

CANAL TI. Extreme Programming (XP) — Programação Extrema. Acesso em Fev/19. Disponível em: https://www.youtube.com/watch?v=ALvpFMcL-dI

DEVMEDIA. Agile Development: XP e Scrum em uma Abordagem Comparativa. Acesso em Fev/19. Disponível em: https://www.devmedia.com.br/agile-development-xp-e-scrum-em-uma-abordagem-comparativa/30808

SITE CAMPUS. Aula 8-Método XP. Acesso em Fev/19.Disponível em https://sitecampus.com.br/aula/aula-8-metodo-xp/

--

--