Extreme Programming
Kent BeckCriador do XP Programming e Test Driven Development
Engenheiro de softwarePopularizoucartões CRC e desenvolveu o JUnitjunto a Erich GammaKent Beck
Leva as práticas benéficas de outros modelos de desenvolvimento a níveis “extremos”, na teoria de que se algo é bom, mais é melhor.Programação Extrema
Metodologiaágilparaequipespequenas e médias.Desenvolvimento de softwares com requisitosvagos e emconstantemudança.Constanteacompanhamento e realização de váriospequenosajustesdurante o desenvolvimento.O Queé?
CodificarTestarOuvirModelarAtividades
O único produto realmente importante do processo de desenvolvimento de software é o código. Sem o código, não há um produto funcional.Pode-se usar código para facilitar a comunicação: o código é sempre claro e conciso, não possibilitando ambiguidade.Codificar
Se alguns testes podem eliminar algumas falhas, muitos testes podem eliminar muitas falhas.Testes de Unidade determinam se uma funcionalidade funciona como desejado.Testes de aceitação determinam se os requisitos compreendidos pelos programadores satisfazem o cliente.“Testathon”: evento em que programadores se juntam para desenvolver testes, como um “brainstorm de testes”.Testar
Programadoresdevemouvir o que o clienteprecisaque o sistemafaça.Deve-se compreender as necessidades o suficienteparapassar um feedbacksobrecomopodemserresolvidas, ounãopodem.Ouvir
Um bom modelo evita várias dependências no sistema, de forma que alterar uma parte do sistema não afeta as outras.Na teoria seria mais simples apenas codificar, mas após um certo ponto o sistema se torna muito complexo e suas dependências deixam de ser claras.Modelar
ComunicaçãoSimplicidadeFeedbackCoragemRespeitoValores
Passar a todososdesenvolvedoresumavisão do sistemaqueequivaleàvisão dos usuáriosfinais.Designs simplesMetáforascomunsColaboração de usuários e desenvolvedoresComunicação verbal frequente.Comunicação
Começar com a solução mais simples. Funcionalidades extras podem ser adicionadas depois.Não investir em requisitos que podem ser alterados antes de se tornarem relevantes.Facilidade na Comunicação.Simplicidade
Feedback do Sistema: testes de unidade, testes de integração. Feedback direto do estado do sistema.Feedback do Cliente: testes funcionais, de aceitação. O cliente pode direcionar o desenvolvimento.Feedback da Equipe: novos requisitos, alteração nos requisitos. A equipe estima diretamente o tempo de implementação.Feedback
Reestruturar o código quando necessário.Revisar o sistema atual e modificá-lo para que futuras implementações sejam mais simples.Saber quando descartar código obsoleto, não importando o esforço de sua implementação.Persistência! Pode-se perder um dia inteiro em um problema e resolvê-lo rapidamente no dia seguinte.Coragem
Respeitopelos outros e peloprópriotrabalho.Programadoresnuncadevemsubmeteralteraçõesquedeixam de compilar, fazem testes de unidadeexistentesfalharemouatrasam de alguma forma o trabalho de outros.Ninguémdeve se sentirignorado: alto nível de motivação e dedicaçãoaoprojeto.Respeito
Jogo do planejamento: reuniãosemanal entre desenvolvedores e clienteemque se identificamprioridades e estimativaspara as funcionalidades.Reuniõesempé:reuniõessemanaisrápidasabordandotarefasrealizadas e tarefas a realizar.Projeto simples:desenvolverestritamente o necessário, sem se preocuparemimplementarfuturasfuncionalidades antes do tempo.Práticas
Teste de aceitação: testes construídospeloclienteparaaceitar um determinadorequisito de sistema.Padrões de codificação: a equipe de desenvolvimentodeveestabelecerregras de codificaçãoparatodososdesenvolvedores.Integraçãocontínua:nuncaesperarparaintegrar a nova funcionalidadedesenvolvida, issosóaumenta a chance de conflitoouerro.Práticas
Programaçãoem pares:Duaspessoasprogramam juntas no mesmocomputador. Desta forma o códigosempreérevistoporduaspessoas, diminuindo a ocorrência de erros.Práticas
Métodotãoeficientequanto as pessoasenvolvidas.Necessitade de reuniõesfrequentes.Podelevar a dificuldadescontratuais.Falta de documentaçãorobusta.Críticas

XP Programming

  • 1.
  • 2.
    Kent BeckCriador doXP Programming e Test Driven Development
  • 3.
    Engenheiro de softwarePopularizoucartõesCRC e desenvolveu o JUnitjunto a Erich GammaKent Beck
  • 4.
    Leva as práticasbenéficas de outros modelos de desenvolvimento a níveis “extremos”, na teoria de que se algo é bom, mais é melhor.Programação Extrema
  • 5.
    Metodologiaágilparaequipespequenas e médias.Desenvolvimentode softwares com requisitosvagos e emconstantemudança.Constanteacompanhamento e realização de váriospequenosajustesdurante o desenvolvimento.O Queé?
  • 6.
  • 7.
    O único produtorealmente importante do processo de desenvolvimento de software é o código. Sem o código, não há um produto funcional.Pode-se usar código para facilitar a comunicação: o código é sempre claro e conciso, não possibilitando ambiguidade.Codificar
  • 8.
    Se alguns testespodem eliminar algumas falhas, muitos testes podem eliminar muitas falhas.Testes de Unidade determinam se uma funcionalidade funciona como desejado.Testes de aceitação determinam se os requisitos compreendidos pelos programadores satisfazem o cliente.“Testathon”: evento em que programadores se juntam para desenvolver testes, como um “brainstorm de testes”.Testar
  • 9.
    Programadoresdevemouvir o queo clienteprecisaque o sistemafaça.Deve-se compreender as necessidades o suficienteparapassar um feedbacksobrecomopodemserresolvidas, ounãopodem.Ouvir
  • 10.
    Um bom modeloevita várias dependências no sistema, de forma que alterar uma parte do sistema não afeta as outras.Na teoria seria mais simples apenas codificar, mas após um certo ponto o sistema se torna muito complexo e suas dependências deixam de ser claras.Modelar
  • 11.
  • 12.
    Passar a todososdesenvolvedoresumavisãodo sistemaqueequivaleàvisão dos usuáriosfinais.Designs simplesMetáforascomunsColaboração de usuários e desenvolvedoresComunicação verbal frequente.Comunicação
  • 13.
    Começar com asolução mais simples. Funcionalidades extras podem ser adicionadas depois.Não investir em requisitos que podem ser alterados antes de se tornarem relevantes.Facilidade na Comunicação.Simplicidade
  • 14.
    Feedback do Sistema:testes de unidade, testes de integração. Feedback direto do estado do sistema.Feedback do Cliente: testes funcionais, de aceitação. O cliente pode direcionar o desenvolvimento.Feedback da Equipe: novos requisitos, alteração nos requisitos. A equipe estima diretamente o tempo de implementação.Feedback
  • 15.
    Reestruturar o códigoquando necessário.Revisar o sistema atual e modificá-lo para que futuras implementações sejam mais simples.Saber quando descartar código obsoleto, não importando o esforço de sua implementação.Persistência! Pode-se perder um dia inteiro em um problema e resolvê-lo rapidamente no dia seguinte.Coragem
  • 16.
    Respeitopelos outros epeloprópriotrabalho.Programadoresnuncadevemsubmeteralteraçõesquedeixam de compilar, fazem testes de unidadeexistentesfalharemouatrasam de alguma forma o trabalho de outros.Ninguémdeve se sentirignorado: alto nível de motivação e dedicaçãoaoprojeto.Respeito
  • 17.
    Jogo do planejamento:reuniãosemanal entre desenvolvedores e clienteemque se identificamprioridades e estimativaspara as funcionalidades.Reuniõesempé:reuniõessemanaisrápidasabordandotarefasrealizadas e tarefas a realizar.Projeto simples:desenvolverestritamente o necessário, sem se preocuparemimplementarfuturasfuncionalidades antes do tempo.Práticas
  • 18.
    Teste de aceitação:testes construídospeloclienteparaaceitar um determinadorequisito de sistema.Padrões de codificação: a equipe de desenvolvimentodeveestabelecerregras de codificaçãoparatodososdesenvolvedores.Integraçãocontínua:nuncaesperarparaintegrar a nova funcionalidadedesenvolvida, issosóaumenta a chance de conflitoouerro.Práticas
  • 19.
    Programaçãoem pares:Duaspessoasprogramam juntasno mesmocomputador. Desta forma o códigosempreérevistoporduaspessoas, diminuindo a ocorrência de erros.Práticas
  • 20.
    Métodotãoeficientequanto as pessoasenvolvidas.Necessitadede reuniõesfrequentes.Podelevar a dificuldadescontratuais.Falta de documentaçãorobusta.Críticas