Você está na página 1de 7

eXtreme Programming

Metodologia gil para equipes pequenas a mdias


desenvolvendo software com requesitos vagos ou
eXtreme Programming (XP) que mudam freqentemente. [Beck 2000]
Em XP, codificao principal tarefa
Baseia-se em
reviso permanente do cdigo, testes freqentes,
participao do usurio final, refatorao contnua,
refinamento contnuo da arquitetura, integrao
contnua, planejamento, projeto e reprojeto a qualquer
hora

Metodologia gil
Estamos descobrindo maneiras melhores de
Partes do XP
desenvolver software fazendo-o ns mesmos e
ajudando outros a faz-lo. Atravs desse trabalho,
passamos a valorizar: 1. Values (valores): estabelecem a forma do
Indivduos e interaes mais que processos e desenvolvimento XP
ferramentas; Principles (princpios): guiam o
Software em funcionamento mais que documentao desenvolvimento do software
abrangente;
Colaborao com o cliente mais que negociao de Activities (atividades): devem ser executadas
contratos; por todo o ciclo de vida XP
Responder a mudanas mais que seguir um plano. Practices (prticas): so utilizadas pelas equipes
Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn, Ward Cunningham,
XP para desenvolver sistemas
Martin Fowler, James Grenning, Jim Highsmith, Andrew Hunt, Ron Jeffries, Jon Kern,
Brian Marick, Robert C. Martin, Steve Mellor, Ken Schwaber, Jeff Sutherland, Dave
Thomas

1. Valores do XP Communication (comunicao)


Vrias prticas do XP promovem uma maior
Communication - (comunicao) comunicao entre os membros da equipe
Simplicity - (simplicidade) A comunicao no limitada por procedimentos
formais.
Feedback - (retroalimentao) Usa-se o melhor meio possvel, que pode ser
Uma conversa ou reunio informal
Courage - (coragem)
Um e-mail, um bate-papo, um telefonema
O prprio cdigo
Preferncia comunicao mais gil

1
Simplicity (simplicidade) Feedback (retroalimentao)
Vrias prticas de XP garantem um rpido
XP incentiva ao extremo prticas que feedback sobre vrias etapas/partes do processo
reduzam a complexidade do sistema Feedback sobre qualidade do cdigo (testes de unidade,
A soluo adotada deve ser sempre a mais programao em pares, posse coletiva)
Feedback sobre estado do desenvolvimento (estrias do
simples que alcance os objetivos esperados usurio-final, integrao contnua, jogo do
Use as tecnologias, algoritmos e tcnicas mais planejamento)
simples que permitiro atender aos requisitos Permite maior agilidade
do usurio-final Erros detectados e corrigidos imediatamente
Design, processo e cdigo podem ser Requisitos e prazos reavaliados mais cedo
simplificados a qualquer momento Permite estimativas mais precisas

Courage (coragem) 2. Princpios XP


Testes, integrao contnua, programao em
Rapid Feedback - (retorno rpido)
pares e outras prticas de XP aumentam a
confiana do programador e ajudam-no a ter Assume Simplicity - (simplicidade)
coragem para Incremental Change - (mudanas
melhorar o cdigo que est funcionando para torn-lo incrementais)
mais simples
investir tempo no desenvolvimento de testes Embrace Change - (aceitar mudanas)
mexer no design em estgio avanado Quality work - (trabalho de qualidade)
pedir ajuda aos que sabem mais
abandonar processos formais e ter o projeto e a
documentao em forma de cdigo

Rapid Feedback (retorno rpido) Assuma Simplicity (simplicidade)


O retorno entre os desenvolvedores rpido Deixe o seu modelo to simples quanto
Cliente sabe se o produto que est sendo possvel e assuma que a soluo mais
desenvolvido atende s suas necessidades simples a melhor
Modele um pouco, mostre ao cliente e ento O design do sistema deve ser feito para a
modele novamente. iterao corrente. No deve ser feito design
Garante que o seu modelo ser preciso sobre uma possvel necessidade futura.
enquanto seu conhecimento do projeto aumenta

2
Incremental Change (mudanas Embrace Change (aceitar
incrementais) mudanas)
O modelo no ser perfeito na primeira Mudanas ocorrero no projeto de acordo
tentativa, ele ir mudar de acordo com o com o crescimento do entendimento do
desenvolvimento do projeto mesmo
Os problemas devem ser solucionados com Aceite as mudanas e tenha coragem para
um conjunto de pequenas modificaes reconstruir

Quality work (trabalho de


3. Atividades XP
qualidade)
A qualidade do trabalho nunca deve ser Listening - (escutar)
comprometida Testing - (testar)
XP eleva a importncia da codificao e do Coding - (codificar)
teste antes da programao test-first Designing (projetar)
programming

Listening (escutar) Testing (testar)


XP baseado em comunicao Teste um passo integrado no processo de
Menor importncia na documentao desenvolvimento
formal, maior necessidade de uma Desenvolvedores escrevem os teste antes de
comunicao verbal de qualidade desenvolverem o cdigo
Alm de dizer que os desenvolvedores
devem escutar os clientes, XP tem prticas
que dirigem e guiam para uma comunicao
melhor

3
Coding (codificar) Designing (projetar)
Escrever cdigo que refinado atravs de O design no esttico nem designado a um
prticas como: cargo (pessoa), ele dinmico e de
Refactory - refatorao responsabilidade de toda equipe
Pair programming programao em pares XP aceita a evoluo natural do sistema, o
Code review reviso de cdigo que implica em mudanas constantes

4. Prticas XP Prticas XP
Whole Team Equipe Refactoring Refinamento do projeto
Plannig Game Jogo do planejamento Continuos Integration Integrao contnua
Customer Tests Testes de aceitao
Collective Ownership Posse coletiva
Small releases Verses pequenas
Coding Standards Padres de codificao
Simple Design Projeto simples
Pair programming Programao em pares
Metaphor Metfora
Test-driven Development Desenvolvimento Sustainable Place Ritmo saudvel
orientado a testes (TDD)

A equipe (Whole Team) Jogo do Planejamento (Planning


Todos em um projeto XP so parte de uma equipe. Game)
A equipe deve incluir um representante do cliente:
estabelece os requisitos do projeto
Dois passos chaves:
define as prioridades Planejamento de um release
controla o rumo do projeto Cliente prope funcionalidades desejadas (estrias)
Outros papis assumidos pelos integrantes da equipe: Programadores avaliam a dificuldade de
implement-las
programadores
testadores (que ajudam o cliente com testes de Planejamento de uma iterao
aceitao) Cliente define as funcionalidades prioritrias para a
analistas (que ajudam o cliente a definir requerimentos) iterao;
gerente (garante os recursos necessrios) Programadores as quebram em tarefas e avaliam o
seu custo (tempo de implementao)
coach (orienta a equipe, controla a aplicao de XP)
tracker (coleta mtricas)

4
Teste de aceitao Verses Pequenas (Small Releases)
(Customer Tests) Disponibiliza, a cada iterao, software 100%
funcional
Testes de aceitao so elaborados pelo cliente Benefcios do desenvolvimento disponveis
imediatamente
So testes automticos
Menor risco (se o projeto no terminar, parte existe e
Quando rodarem com sucesso, funcionalidade foi funciona)
implementada Cliente pode medir com preciso quanto j foi feito
Devem ser rodados novamente em cada iterao Feedback do cliente permitir que problemas sejam
Oferecem feedback: pode-se saber, a qualquer detectados cedo e facilita a comunicao entre o cliente
momento, quanto do sistema j foi implementado e e os desenvolvedores
quanto falta. Lanamento pode ser destinado a
usurio-cliente (que pode test-lo, avali-lo, oferecer
feedback)
usurio-final (sempre que possvel)

Design simples (Simple Design) Programao em duplas


Design est presente em todas as etapas no XP (Pair programming)
Projeto comea simples e se mantm simples atravs de
Todo o desenvolvimento em XP feito em pares
testes e refinamento do design (refactory).
Um computador, um teclado, dois programadores
No permitido que se implemente nenhuma funo
adicional que no ser usada na atual iterao Um piloto, um co-piloto
Papis so alternados freqentemente
Implementao ideal aquela que
Pares so trocados periodicamente
Roda todos os testes
Expressa todas as idias que voc deseja expressar Benefcios
No contm cdigo duplicado Melhor qualidade do design, cdigo e testes
Tem o mnimo de classes e mtodos Reviso constante do cdigo
Nivelamento da equipe
Maior comunicao

TDD (Test-driven Development) Refatorao (Refactoring)


"Test first, then code" No existe uma etapa isolada de projeto em XP
Programadores XP escrevem testes primeiro, O cdigo o projeto!
escrevem cdigo e rodam testes para validar o O projeto melhorado continuamente atravs de
cdigo escrito refactory
Cada unidade de cdigo s tem valor se seu Mudana proposital de cdigo que est funcionando
teste funcionar 100% Objetivos: melhorar o design, simplificar o cdigo,
remover cdigo duplicado, aumentar a coeso, reduzir o
Testes so a documentao executvel do acoplamento
sistema Realizado o tempo todo, durante o desenvolvimento

5
Integrao contnua
Posse coletiva (Collective
Projetos XP mantm o sistema integrado o tempo Ownership)
todo
Em um projeto XP qualquer dupla de
Integrao de todo o sistema pode ocorrer vrias vezes
ao dia (pelo menos uma vez ao dia) programadores pode melhorar o sistema a
Todos os testes (unidade e integrao) devem ser qualquer momento.
executados Todo o cdigo em XP pertence a um nico dono: a
Benefcios equipe
Expe o estado atual do desenvolvimento (viabiliza Todo o cdigo recebe a ateno de todos os
lanamentos pequenos e freqentes) participantes resultando em maior comunicao
Estimula design simples, tarefas curtas, agilidade Maior qualidade (menos duplicao, maior coeso)
Oferece feedback sobre todo o sistema Menos riscos e menos dependncia de indivduos
Permite encontrar problemas de design rapidamente Todos compartilham a responsabilidade pelas
alteraes

Padres de codificao
(Coding Standards) Metfora ( Metaphor)
O cdigo escrito em projetos XP segue um padro de
codificao, definido pela equipe Pode ser uma analogia com algum outro
Padro para nomes de mtodos, classes, variveis sistema (computacional, natural, abstrato)
Organizao do cdigo (chaves, etc.) que facilite a comunicao entre os
Cdigo com estrutura familiar facilita e estimula membros da equipe e cliente
Posse coletiva
Comunicao mais eficiente Facilita a escolha dos nomes de mtodos,
Simplicidade classes, campos de dados, etc.
Programao em pares Serve de base para estabelecimento de padres
Refinamento do design de codificao

Ritmo saudvel (Sustainable


Dificuldades
Place)
Projetos com cronogramas apertados que sugam Vencer barreiras culturais
todas as energias dos programadores no so Deixar algum mexer no seu cdigo
projetos XP Trabalhar em pares
Ter coragem de admitir que no sabe
"Semanas de 80 horas" levam baixa produtividade
Pedir ajuda
Produtividade baixa leva a cdigo ruim, relaxamento da
disciplina (testes, refactoring, simplicidade), dificulta a Vencer hbitos antigos
comunicao, aumenta a irritao e o stress da equipe Manter as coisas simples (e no tentar prever o futuro
Tempo "ganho" ser perdido depois escrevendo "design flexvel")
Jogar fora cdigo desnecessrio
Eventuais horas extras so aceitveis quando
produtividade maximizada ao longo prazo Escrever testes antes de codificar
Refactory com freqncia (vencer o medo)

6
Quando no usar XP Concluses
Extreme Programming (XP) uma metodologia de
Equipes grandes e espalhadas geograficamente desenvolvimento de software baseada nos valores
Comunicao um valor fundamental de XP simplicidade, comunicao, feedback e coragem.
No fcil garantir o nvel de comunicao requerido Para implementar XP no preciso usar diagramas ou
em projetos XP em grandes equipes processos formais. preciso fazer uma equipe se unir em
torno de algumas prticas simples, obter feedback
Situaes onde o feedback demorado suficiente e ajustar as prticas para a sua situao
Testes muito difceis, arriscados e que levam tempo particular.
Programadores espalhados em ambientes fsicos XP pode ser implementada aos poucos, porm a maior
distantes e sem comunicao eficiente parte das prticas essencial.
Nem todos os projetos so bons candidatos a usar uma
metodologia gil como XP. XP mais adequado a
equipes pequenas ou mdias.

Referncias
Beck, K. Extreme Programming Explained:
Embrace Change, 2000. Addison-Wesley.
Manifesto for Agile Software Development,
Agile Alliance, 2001, webpage: Manifesto-for-
Agile-Software-Dev

Você também pode gostar