Você está na página 1de 7

eXtreme Programming eXtreme Programming (XP)

Metodologia gil para equipes pequenas a mdias desenvolvendo software com requesitos vagos ou 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 desenvolver software fazendo-o ns mesmos e ajudando outros a faz-lo. Atravs desse trabalho, passamos a valorizar:
Indivduos e interaes mais que processos e ferramentas; Software em funcionamento mais que documentao abrangente; Colaborao com o cliente mais que negociao de contratos; Responder a mudanas mais que seguir um plano.
Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn, Ward Cunningham, 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

Partes do XP
1. Values (valores): estabelecem a forma do desenvolvimento XP Principles (princpios): guiam o desenvolvimento do software Activities (atividades): devem ser executadas por todo o ciclo de vida XP Practices (prticas): so utilizadas pelas equipes XP para desenvolver sistemas

1. Valores do XP
Communication - (comunicao) Simplicity - (simplicidade) Feedback - (retroalimentao) Courage - (coragem)

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

Preferncia comunicao mais gil

Simplicity (simplicidade)
XP incentiva ao extremo prticas que reduzam a complexidade do sistema A soluo adotada deve ser sempre a mais simples que alcance os objetivos esperados
Use as tecnologias, algoritmos e tcnicas mais simples que permitiro atender aos requisitos do usurio-final Design, processo e cdigo podem ser simplificados a qualquer momento

Feedback (retroalimentao)
Vrias prticas de XP garantem um rpido feedback sobre vrias etapas/partes do processo
Feedback sobre qualidade do cdigo (testes de unidade, programao em pares, posse coletiva) Feedback sobre estado do desenvolvimento (estrias do usurio-final, integrao contnua, jogo do planejamento)

Permite maior agilidade


Erros detectados e corrigidos imediatamente Requisitos e prazos reavaliados mais cedo Permite estimativas mais precisas

Courage (coragem)
Testes, integrao contnua, programao em pares e outras prticas de XP aumentam a confiana do programador e ajudam-no a ter coragem para
melhorar o cdigo que est funcionando para torn-lo mais simples investir tempo no desenvolvimento de testes mexer no design em estgio avanado pedir ajuda aos que sabem mais abandonar processos formais e ter o projeto e a documentao em forma de cdigo

2. Princpios XP
Rapid Feedback - (retorno rpido) Assume Simplicity - (simplicidade) Incremental Change - (mudanas incrementais) Embrace Change - (aceitar mudanas) Quality work - (trabalho de qualidade)

Rapid Feedback (retorno rpido)


O retorno entre os desenvolvedores rpido
Cliente sabe se o produto que est sendo desenvolvido atende s suas necessidades

Assuma Simplicity (simplicidade)


Deixe o seu modelo to simples quanto possvel e assuma que a soluo mais simples a melhor O design do sistema deve ser feito para a iterao corrente. No deve ser feito design sobre uma possvel necessidade futura.

Modele um pouco, mostre ao cliente e ento modele novamente.


Garante que o seu modelo ser preciso enquanto seu conhecimento do projeto aumenta

Incremental Change (mudanas incrementais)


O modelo no ser perfeito na primeira tentativa, ele ir mudar de acordo com o desenvolvimento do projeto Os problemas devem ser solucionados com um conjunto de pequenas modificaes

Embrace Change (aceitar mudanas)


Mudanas ocorrero no projeto de acordo com o crescimento do entendimento do mesmo Aceite as mudanas e tenha coragem para reconstruir

Quality work (trabalho de qualidade)


A qualidade do trabalho nunca deve ser comprometida XP eleva a importncia da codificao e do teste antes da programao test-first programming

3. Atividades XP
Listening - (escutar) Testing - (testar) Coding - (codificar) Designing (projetar)

Listening (escutar)
XP baseado em comunicao Menor importncia na documentao formal, maior necessidade de uma comunicao verbal de qualidade Alm de dizer que os desenvolvedores devem escutar os clientes, XP tem prticas que dirigem e guiam para uma comunicao melhor

Testing (testar)
Teste um passo integrado no processo de desenvolvimento Desenvolvedores escrevem os teste antes de desenvolverem o cdigo

Coding (codificar)
Escrever cdigo que refinado atravs de prticas como:
Refactory - refatorao Pair programming programao em pares Code review reviso de cdigo

Designing (projetar)
O design no esttico nem designado a um cargo (pessoa), ele dinmico e de responsabilidade de toda equipe XP aceita a evoluo natural do sistema, o que implica em mudanas constantes

4. Prticas XP
Whole Team Equipe Plannig Game Jogo do planejamento Customer Tests Testes de aceitao Small releases Verses pequenas Simple Design Projeto simples Pair programming Programao em pares Test-driven Development Desenvolvimento orientado a testes (TDD)

Prticas XP
Refactoring Refinamento do projeto Continuos Integration Integrao contnua Collective Ownership Posse coletiva Coding Standards Padres de codificao Metaphor Metfora Sustainable Place Ritmo saudvel

A equipe (Whole Team)


Todos em um projeto XP so parte de uma equipe. A equipe deve incluir um representante do cliente: estabelece os requisitos do projeto define as prioridades controla o rumo do projeto Outros papis assumidos pelos integrantes da equipe: programadores testadores (que ajudam o cliente com testes de aceitao) analistas (que ajudam o cliente a definir requerimentos) gerente (garante os recursos necessrios) coach (orienta a equipe, controla a aplicao de XP) tracker (coleta mtricas)

Jogo do Planejamento (Planning Game)


Dois passos chaves:
Planejamento de um release
Cliente prope funcionalidades desejadas (estrias) Programadores avaliam a dificuldade de implement-las

Planejamento de uma iterao


Cliente define as funcionalidades prioritrias para a iterao; Programadores as quebram em tarefas e avaliam o seu custo (tempo de implementao)

Teste de aceitao (Customer Tests)


Testes de aceitao so elaborados pelo cliente
So testes automticos Quando rodarem com sucesso, funcionalidade foi implementada Devem ser rodados novamente em cada iterao Oferecem feedback: pode-se saber, a qualquer momento, quanto do sistema j foi implementado e quanto falta.

Verses Pequenas (Small Releases)


Disponibiliza, a cada iterao, software 100% funcional
Benefcios do desenvolvimento disponveis imediatamente Menor risco (se o projeto no terminar, parte existe e funciona) Cliente pode medir com preciso quanto j foi feito Feedback do cliente permitir que problemas sejam detectados cedo e facilita a comunicao entre o cliente e os desenvolvedores

Lanamento pode ser destinado a


usurio-cliente (que pode test-lo, avali-lo, oferecer feedback) usurio-final (sempre que possvel)

Design simples (Simple Design)


Design est presente em todas as etapas no XP
Projeto comea simples e se mantm simples atravs de testes e refinamento do design (refactory). No permitido que se implemente nenhuma funo adicional que no ser usada na atual iterao

Programao em duplas (Pair programming)


Todo o desenvolvimento em XP feito em pares
Um computador, um teclado, dois programadores Um piloto, um co-piloto Papis so alternados freqentemente Pares so trocados periodicamente Melhor qualidade do design, cdigo e testes Reviso constante do cdigo Nivelamento da equipe Maior comunicao

Implementao ideal aquela que


Roda todos os testes Expressa todas as idias que voc deseja expressar No contm cdigo duplicado Tem o mnimo de classes e mtodos

Benefcios

TDD (Test-driven Development)


"Test first, then code"
Programadores XP escrevem testes primeiro, escrevem cdigo e rodam testes para validar o cdigo escrito Cada unidade de cdigo s tem valor se seu teste funcionar 100% Testes so a documentao executvel do sistema

Refatorao (Refactoring)
No existe uma etapa isolada de projeto em XP
O cdigo o projeto!

O projeto melhorado continuamente atravs de refactory


Mudana proposital de cdigo que est funcionando Objetivos: melhorar o design, simplificar o cdigo, remover cdigo duplicado, aumentar a coeso, reduzir o acoplamento Realizado o tempo todo, durante o desenvolvimento

Integrao contnua
Projetos XP mantm o sistema integrado o tempo todo
Integrao de todo o sistema pode ocorrer vrias vezes ao dia (pelo menos uma vez ao dia) Todos os testes (unidade e integrao) devem ser executados

Posse coletiva (Collective Ownership)


Em um projeto XP qualquer dupla de programadores pode melhorar o sistema a qualquer momento. Todo o cdigo em XP pertence a um nico dono: a equipe
Todo o cdigo recebe a ateno de todos os participantes resultando em maior comunicao Maior qualidade (menos duplicao, maior coeso) Menos riscos e menos dependncia de indivduos

Benefcios
Expe o estado atual do desenvolvimento (viabiliza lanamentos pequenos e freqentes) Estimula design simples, tarefas curtas, agilidade Oferece feedback sobre todo o sistema Permite encontrar problemas de design rapidamente

Todos compartilham a responsabilidade pelas alteraes

Padres de codificao (Coding Standards)


O cdigo escrito em projetos XP segue um padro de codificao, definido pela equipe Padro para nomes de mtodos, classes, variveis Organizao do cdigo (chaves, etc.) Cdigo com estrutura familiar facilita e estimula Posse coletiva Comunicao mais eficiente Simplicidade Programao em pares Refinamento do design

Metfora ( Metaphor)
Pode ser uma analogia com algum outro sistema (computacional, natural, abstrato) que facilite a comunicao entre os membros da equipe e cliente Facilita a escolha dos nomes de mtodos, classes, campos de dados, etc.
Serve de base para estabelecimento de padres de codificao

Ritmo saudvel (Sustainable Place)


Projetos com cronogramas apertados que sugam todas as energias dos programadores no so projetos XP
"Semanas de 80 horas" levam baixa produtividade Produtividade baixa leva a cdigo ruim, relaxamento da disciplina (testes, refactoring, simplicidade), dificulta a comunicao, aumenta a irritao e o stress da equipe Tempo "ganho" ser perdido depois

Dificuldades
Vencer barreiras culturais
Deixar algum mexer no seu cdigo Trabalhar em pares
Ter coragem de admitir que no sabe Pedir ajuda

Vencer hbitos antigos


Manter as coisas simples (e no tentar prever o futuro escrevendo "design flexvel") Jogar fora cdigo desnecessrio Escrever testes antes de codificar Refactory com freqncia (vencer o medo)

Eventuais horas extras so aceitveis quando produtividade maximizada ao longo prazo

Quando no usar XP
Equipes grandes e espalhadas geograficamente
Comunicao um valor fundamental de XP No fcil garantir o nvel de comunicao requerido em projetos XP em grandes equipes

Concluses
Extreme Programming (XP) uma metodologia de desenvolvimento de software baseada nos valores simplicidade, comunicao, feedback e coragem. Para implementar XP no preciso usar diagramas ou processos formais. preciso fazer uma equipe se unir em torno de algumas prticas simples, obter feedback suficiente e ajustar as prticas para a sua situao particular. XP pode ser implementada aos poucos, porm a maior 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.

Situaes onde o feedback demorado


Testes muito difceis, arriscados e que levam tempo Programadores espalhados em ambientes fsicos distantes e sem comunicao eficiente

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