e X treme P rogramming (XP)

  • View
    32

  • Download
    0

Embed Size (px)

DESCRIPTION

e X treme P rogramming (XP). eXtreme Programming. “Metodologia ágil para equipes pequenas a médias desenvolvendo software com reques itos vagos ou que mudam freqüentemente.” [Beck 2000] Em XP, codificação é principal tarefa Baseia-se em - PowerPoint PPT Presentation

Text of e X treme P rogramming (XP)

  • eXtreme Programming (XP)

  • eXtreme ProgrammingMetodologia gil para equipes pequenas a mdias desenvolvendo software com requesitos vagos ou que mudam freqentemente. [Beck 2000]Em XP, codificao principal tarefaBaseia-se emreviso 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 gilEstamos 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 XPValues (valores): estabelecem a forma do desenvolvimento XPPrinciples (princpios): guiam o desenvolvimento do softwareActivities (atividades): devem ser executadas por todo o ciclo de vida XPPractices (prticas): so utilizadas pelas equipes XP para desenvolver sistemas

  • 1. Valores do XPCommunication - (comunicao)Simplicity - (simplicidade)Feedback - (retroalimentao)Courage - (coragem)

  • Communication (comunicao)Vrias prticas do XP promovem uma maior comunicao entre os membros da equipeA comunicao no limitada por procedimentos formais.Usa-se o melhor meio possvel, que pode serUma conversa ou reunio informalUm e-mail, um bate-papo, um telefonemaO prprio cdigoPreferncia comunicao mais gil

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

  • Feedback (retroalimentao)Vrias prticas de XP garantem um rpido feedback sobre vrias etapas/partes do processoFeedback 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 agilidadeErros detectados e corrigidos imediatamenteRequisitos e prazos reavaliados mais cedoPermite 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 paramelhorar o cdigo que est funcionando para torn-lo mais simplesinvestir tempo no desenvolvimento de testesmexer no design em estgio avanadopedir ajuda aos que sabem maisabandonar processos formais e ter o projeto e a documentao em forma de cdigo

  • 2. Princpios XPRapid 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 rpidoCliente sabe se o produto que est sendo desenvolvido atende s suas necessidadesModele um pouco, mostre ao cliente e ento modele novamente.Garante que o seu modelo ser preciso enquanto seu conhecimento do projeto aumenta

  • Assuma Simplicity (simplicidade)Deixe o seu modelo to simples quanto possvel e assuma que a soluo mais simples a melhorO design do sistema deve ser feito para a iterao corrente. No deve ser feito design sobre uma possvel necessidade futura.

  • Incremental Change (mudanas incrementais)O modelo no ser perfeito na primeira tentativa, ele ir mudar de acordo com o desenvolvimento do projetoOs 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 mesmoAceite as mudanas e tenha coragem para reconstruir

  • Quality work (trabalho de qualidade)A qualidade do trabalho nunca deve ser comprometidaXP eleva a importncia da codificao e do teste antes da programao test-first programming

  • 3. Atividades XPListening - (escutar)Testing - (testar)Coding - (codificar)Designing (projetar)

  • Listening (escutar)XP baseado em comunicaoMenor importncia na documentao formal, maior necessidade de uma comunicao verbal de qualidadeAlm 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 desenvolvimentoDesenvolvedores escrevem os teste antes de desenvolverem o cdigo

  • Coding (codificar)Escrever cdigo que refinado atravs de prticas como:Refactory - refatoraoPair programming programao em paresCode review reviso de cdigo

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

  • 4. Prticas XPWhole Team EquipePlannig Game Jogo do planejamentoCustomer Tests Testes de aceitaoSmall releases Verses pequenasSimple Design Projeto simplesPair programming Programao em paresTest-driven Development Desenvolvimento orientado a testes (TDD)

  • Prticas XPRefactoring Refinamento do projetoContinuos Integration Integrao contnuaCollective Ownership Posse coletivaCoding Standards Padres de codificaoMetaphor MetforaSustainable 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 prioridadescontrola o rumo do projetoOutros papis assumidos pelos integrantes da equipe:programadorestestadores (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 releaseCliente prope funcionalidades desejadas (estrias)Programadores avaliam a dificuldade de implement-lasPlanejamento de uma iteraoCliente 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 clienteSo testes automticosQuando rodarem com sucesso, funcionalidade foi implementadaDevem ser rodados novamente em cada iteraoOferecem 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% funcionalBenefcios do desenvolvimento disponveis imediatamenteMenor risco (se o projeto no terminar, parte existe e funciona)Cliente pode medir com preciso quanto j foi feitoFeedback do cliente permitir que problemas sejam detectados cedo e facilita a comunicao entre o cliente e os desenvolvedoresLanamento 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 XPProjeto 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 iteraoImplementao ideal aquela queRoda todos os testesExpressa todas as idias que voc deseja expressarNo contm cdigo duplicadoTem o mnimo de classes e mtodos

  • Programao em duplas(Pair programming)Todo o desenvolvimento em XP feito em paresUm computador, um teclado, dois programadoresUm piloto, um co-pilotoPapis so alternados freqentementePares so trocados periodicamenteBenefciosMelhor qualidade do design, cdigo e testesReviso constante do cdigoNivelamento da equipeMaior comunicao

  • TDD (Test-driven Development)"Test first, then code"Programadores XP escrevem testes primeiro, escrevem cdigo e rodam testes para validar o cdigo escritoCada 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 XPO cdigo o projeto!O projeto melhorado continuamente atravs de refactoryMudana proposital de cdigo que est funcionandoObjetivos: melhorar o design, simplificar o cdigo, remover cdigo duplicado, aumentar a coeso, reduzir o acoplamentoRealizado o tempo todo, durante o desenvolvimento

  • Integrao contnuaProjetos XP mantm o sistema integrado o tempo todoIntegrao de todo o sistema pode ocorrer vrias vezes ao dia (pelo menos uma vez ao dia)Todos os testes (unidade e integrao) devem ser executadosBenefciosExpe o estado atual do desenvolvimento (viabiliza lanamentos pequenos e freqentes)Estimula design simples, tarefas curtas, agilidadeOferece feedback sobre todo o sistemaPermite 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 equipeTodo o cdigo recebe a ateno de todos os participantes resultando em maior comunicaoMaior qualidade (menos duplicao, maior coeso)Menos riscos e menos dependncia de indivduosTodos compartilham a responsabilidade pelas alteraes

  • Padres de codificao(Coding Standards)O cdigo escrito em projetos XP segue um padro decodificao, definido pela equ