Você está na página 1de 38

eXtreme Programming (XP)

Temas: principios, valores, atividades e prticas XP

Grupo 02 - Aldison Diego - Ekson Guevara - Thiago de Oliveira

eXtreme Programming

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

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.

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)

Simplicity (simplicidade)

Feedback (retroalimentao)
Vrias prticas de XP garantem um rpido feedback sobre vrias etapas/partes do processo Feedback sobre qualidade do cdigo Feedback sobre estado do desenvolvimento Permite maior agilidade

Courage (coragem)

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 Modele um pouco, mostre ao cliente e ento modele novamente.

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.

Incremental Change (mudanas incrementais)

Embrace Change (aceitar mudanas)

Quality work (trabalho de qualidade)

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

Prticas XP

Whole Team Planning Game Customer Tests Small releases Simple Design Pair programming Test-drivem development

Refactoring Continuos Integration Collective Ownership Coding Standards Metaphor Sustainable Place

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 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

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 Benefcios Melhor qualidade do design, cdigo e testes Reviso constante do cdigo Nivelamento da equipe Maior comunicao

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 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

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 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 Eventuais horas extras so aceitveis quando produtividade maximizada ao longo prazo

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)

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 Situaes onde o feedback demorado Testes muito difceis, arriscados e que levam tempo Programadores espalhados em ambientes fsicos distantes e sem comunicao eficiente

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.

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

Você também pode gostar