SlideShare uma empresa Scribd logo
Extreme Programming Ricardo L. A. Bánffy Hiperlógica
Motivações Requerimentos mutáveis Não é mais possível projetar um sistema ao longo de 6 meses, implementá-lo ao longo de um ano, colocá-lo em produção e esperar que ele ainda resolva algum problema real Limitação da complexidade Custo de manutenção de um sistema aumenta com o tempo se a complexidade não for limitada Agilidade Releases frequentes garantem que problemas mais críticos são resolvidos mais cedo Internet-time e vantagens de first-to-market
12 práticas
12 práticas Processo de Planejamento (“Planning Game”) Releases Frequentes Metáfora do Sistema O Mais Simples que Possa Funcionar Testar Antes Refactoring Pair-Programming Propriedade Coletiva do Código Integração Contínua Semanas de 40 Horas Cliente Sempre Presente Padrões de Codificação
Planning Game Equipe de negócios (Cliente) escreve estórias (curtas) sobre funcionalidades do sistema, usualmente em cartões Equipe técnica (Programadores) estima o custo das estórias Cliente decide qual  a duração do próximo ciclo Cliente escolhe, com base nas estimativas dos programadores, quais estórias serão atendidas nesse ciclo e quais ficarão nos próximos ciclos Garante que o cliente tenha o maior retorno em cada ciclo de desenvolvimento
Releases Frequentes Minimizam a quantidade de recursos investida em cada release Ciclos curtos, na ordem de dias ou semanas, permitem retorno rápido sobre o investimento – funcionalidades importantes entrarão em funcionamento mais cedo Todo o código pronto (que passa em todos os testes unitários) deve ser integrado e o sistema todo testado após a integração
Metáfora do Sistema Comunica de forma clara o que se espera de um produto Unifica a nomenclatura e estabelece uma linguagem cumum entre negócios e tecnologia Ajuda os programadores a compreender o domínio do problema
O Mais Simples que Possa Funcionar Menor complexidade diminui riscos – A complexidade é o inimigo Software tende naturalmente a crescer e se tornar mais complexo (mais interações entre componentes distintos aumentam o risco de quebras em alterações)  Software é alterado durante sua vida útil – requerimentos mudam e o software pode se tornar mais complexo que os requerimentos necessitem Garante que não serão gastos recursos em estórias que alguém “acha” que serão um dia necessárias
Testar Antes Testes devem ser escritos ANTES de se codificar a funcionalidade do produto Testes funcionam como documentação (embora não a substituam) Escrever os testes obriga a pensar na forma como o componente será usado ANTES de codificá-lo Um componente só está pronto se todas as formas com que ele for usado passarem nos testes correspondentes
Unit-testing  (apêndice)   Testes devem ser automatizados para serem executados sempre que possível Testes de difícil execução serão eventualmente abandonados Tuda a funcionalidade que não estiver sendo testada ou deveria estar sendo testado ou não é necessária e deveria ser removida Framework de testes (xUnit)
Refactoring Código tende a se deteriorar ao longo do tempo Soluções brilhantes de um dia parecem estúpidas depois de uma semana Refactoring não deve acrescentar funcionalidade – apenas “limpar” a funcionalidade existente É sempre recomendável fazer refactoring antes de acrescentar alguma funcionalidade
Pair-Programming Duas cabeças pensam melhor do que uma Uma cabeça obriga a outra a pensar no problema Se um colega não entende o código ele não está suficientemente claro e não será entendido depois Para promover o entendimento da solução, é desejável que as duplas sejam formadas por programadores com níveis diferentes de experiência Funciona como um code-review em tempo real Menos distrações (ICQ, Slashdot, e-mail)
Propriedade Coletiva do Código Se algo está quebrado, complexo demais ou poderia ser melhorado, isso seve ser corrigido Todos os programadores devem ser capazes de consertar qualquer código do sistema – não pode haver especialistas numa única parte Evita dependência de profissionais Promove o entendimento global da solução (sem caixas-pretas de funcionalidade)
Integração Contínua A versão “oficial”, passando em todos os testes unitários e funcionais deve estar sempre disponível Todo o novo desenvolvimento deve partir dessa versão Todo código pronto (que passa em todos os testes) deve ser incorporado a essa versão assim que possível
Semanas de 40 horas Horas extras e viradas de noite produzem código de baixa qualidade Programadores devem ter uma vida própria para se manterem felizes, saudáveis e produtivos Horas extras são um sinal de alarme para a equipe Quando o programador acha que um prazo foi superestimado, vai deixar tarefas para depois e vai ter que virar noites no fim do período, pois é ele nunca vai lembrar que é extremamente raro superestimar prazos
Cliente Sempre Presente Responde dúvidas melhor e mais rapidamente Comunicação pessoal é mais eficiente do que por escrito Programadores não devem tomar decisões para as quais não estão preparados (e pelas quais serão responsabilizados)
Padrões de Codificação Se todos os programadores devem editar qualquer parte do código, eles precisam ser capazes de entendê-lo Código deve ser mantido legivel para a “posteridade”, limitando o aumento de custo de manutenção ao longo do tempo Os padrões não precisam ser arbitrários ou impostos com uso de violência – é desejável que sejam consensuais
Dificuldades Cliente ausente Procure um substituto para representar o cliente: um gerente de conta ou gerente de produto (quando o cliente for algo como “mercado”) Mais de um cliente Procure obter um único representante que tenha poder de decidir pelos vários interesses do cliente. Os clientes devem poder se reunir entre si antes de se reunir com a equipe técnica Privacidade, ambiente hostil, ferramentas estranhas Quando desenvolvedores resistem ao pair-programming, procure criar um espaço para pair-programming – máquinas dedicadas a isso com editores e OSs que os programadores prefiram
Dificuldades Custos do pair-programming Pair-programming é caro à primeira vista. Argumente que os programadores vão se dispersar menos e que o código será de melhor qualidade do que se estivessem trabalhando sozinhos Às vezes pair-design é mais interessante. Algumas duplas planejam uma solução juntas e programam separadamente. Isso funciona às vezes Algumas duplas não funcionam Rearrange sempre as duplas. Algumas combinações vão funcionar melhor que outras. Fatores técnicos ou culturais podem influir
Dificuldades Sistemas legados É mais fácil começar o projeto em XP do que mudá-lo para XP durante sua execução. Procure fazer a transição em algum momento de descontinuidade (entrega de funcionalidade) Propriedade do código Programadores não podem ter “ciúmes” de suas criações Encoraje o uso das mesmas linguagens e bibliotecas por toda a aplicação
Dificuldades Dificuldades para testar Sempre testar componentes quanto à funcionalidade. Separação entre conteúdo e apresentação ajuda Componentes de interface podem ser testados separadamente Alguns componentes dependem de funcionalidade externa – testing frameworks podem ter que ser desenvolvidos para a sua plataforma (ex: zUnit) Componentes devem ser construídos de forma a facilitar os testes
Dificuldades Internet-Time Pressões nos induzem a reverter a práticas menos adequadas (com as quais crescemos e que as gerências entendem melhor) Ciclos podem se tornar curtos demais para funcionar Tendência a abandonar testes acreditando que sacrificar qualidade poupe tempo (pode poupar, mas afeta a qualidade e a vida útil do software)
Para saber mais www.extremeprogramming.org www.xprogramming.com www.xpdeveloper.com www.hiper.com.br [email_address] Hiperlógica, sites automáticos Av. Brig. Faria Lima, 628 cj. 61 São Paulo  •  SP  •  05426-000 (55 11) 3816 8067 www.hiper.com.br

Mais conteúdo relacionado

ODP
Extreme Programming
Ricardo Bánffy
 
PDF
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Developer Academy
 
PDF
Extreme Programming (XP) Metodologia Ágil
Jaffer Veronezi
 
PDF
XP - Extreme Programming
Marcelo Láias
 
PPTX
Introdução ao TDD
gustavoferrazfontes
 
PPT
Introdução a Metodologia XP (E Xtreme Programming)
Rennan Martini
 
PDF
Desenvolvimento de Software com Extreme Programming (XP)
Fernando Kenji Kamei
 
PPTX
eXtreme Programming (XP)
Carlos Henrique Martins da Silva
 
Extreme Programming
Ricardo Bánffy
 
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Developer Academy
 
Extreme Programming (XP) Metodologia Ágil
Jaffer Veronezi
 
XP - Extreme Programming
Marcelo Láias
 
Introdução ao TDD
gustavoferrazfontes
 
Introdução a Metodologia XP (E Xtreme Programming)
Rennan Martini
 
Desenvolvimento de Software com Extreme Programming (XP)
Fernando Kenji Kamei
 
eXtreme Programming (XP)
Carlos Henrique Martins da Silva
 

Mais procurados (19)

PPTX
eXtreme Programming (xp)
Renato Pina
 
PDF
Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)
Joao Galdino Mello de Souza
 
PDF
Introdução: eXtreme Programming
Denis L Presciliano
 
PDF
Extreme programming (xp)
João Carlos Ottobboni
 
PPT
Extreme Programming
Milfont Consulting
 
PPT
eXtreme Programming
Rafael Spínola
 
PDF
Introdução à Programação Extrema (Extreme Programming - XP)
Claudia Melo
 
PDF
Documentos de software
Júlio Fernandes
 
PPT
Padrões no Desenvolvimento de Software
Emanuel Poletto
 
PDF
Metodologias Ageis
MarcosMaozinha
 
PPTX
Pensando TDD
Luiz Ricardo Silva
 
PDF
Proposta de Boas Práticas e Padrões de Desenvolvimento Web
Er Galvão Abbott
 
PDF
Conhecendo o eXtreme Programming
Daniel Wildt
 
PPT
Metodologias ágeis de desenvolvimento
Paulo Ricardo Dalmagro Vinck
 
PPTX
Programe a eficácia do seu código
Ana Claudia Nogueira
 
PDF
Programacao Extrema
Robson Silva Espig
 
PDF
Planning Onion
Roger Ritter
 
PDF
Bate-papo com Especialista Terra XP
Wildtech
 
PPT
IBM Rational Piores Práticas em Testes
Felipe Freire
 
eXtreme Programming (xp)
Renato Pina
 
Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)
Joao Galdino Mello de Souza
 
Introdução: eXtreme Programming
Denis L Presciliano
 
Extreme programming (xp)
João Carlos Ottobboni
 
Extreme Programming
Milfont Consulting
 
eXtreme Programming
Rafael Spínola
 
Introdução à Programação Extrema (Extreme Programming - XP)
Claudia Melo
 
Documentos de software
Júlio Fernandes
 
Padrões no Desenvolvimento de Software
Emanuel Poletto
 
Metodologias Ageis
MarcosMaozinha
 
Pensando TDD
Luiz Ricardo Silva
 
Proposta de Boas Práticas e Padrões de Desenvolvimento Web
Er Galvão Abbott
 
Conhecendo o eXtreme Programming
Daniel Wildt
 
Metodologias ágeis de desenvolvimento
Paulo Ricardo Dalmagro Vinck
 
Programe a eficácia do seu código
Ana Claudia Nogueira
 
Programacao Extrema
Robson Silva Espig
 
Planning Onion
Roger Ritter
 
Bate-papo com Especialista Terra XP
Wildtech
 
IBM Rational Piores Práticas em Testes
Felipe Freire
 
Anúncio

Destaque (7)

PPTX
yoyito
garuypuka
 
PPTX
X panels greek
Ilias Varsamis
 
TXT
"><svg>
"><svg> "><svg>
 
PDF
xyzmo 4 Insurance White Paper 2pages
Namirial GmbH
 
PPT
X-SAaS By Align Kpital
guest65125
 
PPT
XTreme Collaboration Hub - Carl Taylor
CrisisCommons
 
PDF
Xu Wei Lun
samdevil
 
yoyito
garuypuka
 
X panels greek
Ilias Varsamis
 
">&lt;svg>
"><svg> "><svg>
 
xyzmo 4 Insurance White Paper 2pages
Namirial GmbH
 
X-SAaS By Align Kpital
guest65125
 
XTreme Collaboration Hub - Carl Taylor
CrisisCommons
 
Xu Wei Lun
samdevil
 
Anúncio

Semelhante a Xp Comdex (20)

PPTX
XP Programming
CJR, UnB
 
PDF
IPA Conhecendo XP
Wildtech
 
PPT
Aplicando eXtreming Programing ao cenário do Borland ALM - BorCon 2003
Edgar Silva
 
PDF
Palestra Testes De Unidade Com JUnit
Paulo César M Jeveaux
 
PDF
introxp-180413013250.pdf
PedroLuis216164
 
PPT
Introducao XP
Fabio Ferrari
 
PPT
Aula Nova Ageis Scrum Xp Spotify DDr.ppt
GustavoBarrosLins1
 
PPT
Scrum e o Ambiente de Desenvolvimento Ágil
abacrazy
 
PPTX
XP - Extreme Programming
Rodrigo Branas
 
PDF
Aula 4- Engenharia de Software
Rudson Kiyoshi Souza Carvalho
 
PPT
Introdução ao XP
Paulo Rebelo, MSc, PMP, CSP
 
PPT
Extreme programming explicada
Maurício Linhares
 
PPT
Extreme Programming Explicada
Maurício Linhares
 
PPS
Lista de Práticas Ágeis
Julio Cezar Silva
 
PPTX
Menos teste e mais qualidade - como equilibrar essa equação?
Igor Abade
 
PDF
Codigo limpo
diegomcunha
 
PPT
Metodologias Ágeis
Alexandre Rocha Lima e Marcondes
 
PDF
Apresentando Extreme Programming
Milfont Consulting
 
PPTX
Es capítulo 3 - desenvolvimento ágil
Felipe Oliveira
 
XP Programming
CJR, UnB
 
IPA Conhecendo XP
Wildtech
 
Aplicando eXtreming Programing ao cenário do Borland ALM - BorCon 2003
Edgar Silva
 
Palestra Testes De Unidade Com JUnit
Paulo César M Jeveaux
 
introxp-180413013250.pdf
PedroLuis216164
 
Introducao XP
Fabio Ferrari
 
Aula Nova Ageis Scrum Xp Spotify DDr.ppt
GustavoBarrosLins1
 
Scrum e o Ambiente de Desenvolvimento Ágil
abacrazy
 
XP - Extreme Programming
Rodrigo Branas
 
Aula 4- Engenharia de Software
Rudson Kiyoshi Souza Carvalho
 
Introdução ao XP
Paulo Rebelo, MSc, PMP, CSP
 
Extreme programming explicada
Maurício Linhares
 
Extreme Programming Explicada
Maurício Linhares
 
Lista de Práticas Ágeis
Julio Cezar Silva
 
Menos teste e mais qualidade - como equilibrar essa equação?
Igor Abade
 
Codigo limpo
diegomcunha
 
Apresentando Extreme Programming
Milfont Consulting
 
Es capítulo 3 - desenvolvimento ágil
Felipe Oliveira
 

Mais de J. C. (20)

PPT
Apresentação processos e objetivos da alfabetização ciman 2013
J. C.
 
PPT
Uso de tecnologias
J. C.
 
PPT
Tecnologias na educacao
J. C.
 
PPT
Pais maus
J. C.
 
PPTX
A perícia médica a ética e a relação
J. C.
 
PPT
Quero
J. C.
 
PPS
Pequeno prncipe
J. C.
 
PPS
Ni
J. C.
 
PPS
Meuanivers rio
J. C.
 
PPS
Sejascout
J. C.
 
PPSX
Cartilha00
J. C.
 
PPS
Cartilha00
J. C.
 
PPS
Amor
J. C.
 
PPT
Fotos gincana
J. C.
 
PPT
Processo E Objetivos Da Alfabetização
J. C.
 
PPS
Fotografías
J. C.
 
PPS
Fotografías
J. C.
 
PPS
A Alma Da Mulher
J. C.
 
PPS
Colegas de trabalho
J. C.
 
PPT
Bem Vindo Ao Escoteiro
J. C.
 
Apresentação processos e objetivos da alfabetização ciman 2013
J. C.
 
Uso de tecnologias
J. C.
 
Tecnologias na educacao
J. C.
 
Pais maus
J. C.
 
A perícia médica a ética e a relação
J. C.
 
Quero
J. C.
 
Pequeno prncipe
J. C.
 
Ni
J. C.
 
Meuanivers rio
J. C.
 
Sejascout
J. C.
 
Cartilha00
J. C.
 
Cartilha00
J. C.
 
Amor
J. C.
 
Fotos gincana
J. C.
 
Processo E Objetivos Da Alfabetização
J. C.
 
Fotografías
J. C.
 
Fotografías
J. C.
 
A Alma Da Mulher
J. C.
 
Colegas de trabalho
J. C.
 
Bem Vindo Ao Escoteiro
J. C.
 

Último (20)

PPTX
ppt-socioemocional.pptxxxxxxxxxxxxxxxxxxxxxxxxxxx
AdeniltonMendes3
 
PPTX
Inteligência Competitiva - Método Washington Platt.pptx
FranciscoJosFdeMedei
 
PPTX
CONTABILIDADE EMPRESARIAL INTERMEDIARIA.pptx
wuallassegonzaga
 
PDF
gestao-da-qualidade---mba-producao-2019---unesp-feg-compressed-1.pdf
nadadeutil1
 
PDF
CONTABILIDADE HOJE para aprender para concursos
RICARDOJSOUSA
 
PPT
Primeiros Socorros- ver(1).pptttttttttttttt
AdeniltonMendes3
 
PDF
Estudo de Caso - Processo de Compras.pdf
GustavoHenriqueLunar
 
PDF
Projeto rede 1/4, da Universidade NOVA de Lisboa, lançado com criatividade e ...
Link101
 
PPTX
Apresentação Comercial Turingtecnologia.pptx
AllanLandaudeCarvalh
 
PPTX
Treinamento de GOVERNANÇA CORPORATIVA.pptx
Cassiano Pacheco da Silva
 
PDF
SARA.pdfFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
AdeniltonMendes3
 
PDF
Análise Estratégica das Perspectivas da Petrobras na Colômbia.pdf
Vitor Pereira Xavier
 
PDF
-ssssssssssssssssSLIDES-SOBRE-PLANO-DE-NEGOCIOS.pdf
AdeniltonMendes3
 
PDF
Carteira recomenda s. Investimentos Crédito
gustavomarquioto
 
PPTX
02. FGV.Slides. Integração em Projetos.set2019.pptx
PedroCunha566540
 
PDF
Slides - para apresentação de Gestão de Processos (1).pdf
GledsonBarbosaAlcoba1
 
PDF
aula3-omarketingdebuscaesuasferramentas-planejamentodemarketingdigital-mbamar...
adrianocacau
 
ppt-socioemocional.pptxxxxxxxxxxxxxxxxxxxxxxxxxxx
AdeniltonMendes3
 
Inteligência Competitiva - Método Washington Platt.pptx
FranciscoJosFdeMedei
 
CONTABILIDADE EMPRESARIAL INTERMEDIARIA.pptx
wuallassegonzaga
 
gestao-da-qualidade---mba-producao-2019---unesp-feg-compressed-1.pdf
nadadeutil1
 
CONTABILIDADE HOJE para aprender para concursos
RICARDOJSOUSA
 
Primeiros Socorros- ver(1).pptttttttttttttt
AdeniltonMendes3
 
Estudo de Caso - Processo de Compras.pdf
GustavoHenriqueLunar
 
Projeto rede 1/4, da Universidade NOVA de Lisboa, lançado com criatividade e ...
Link101
 
Apresentação Comercial Turingtecnologia.pptx
AllanLandaudeCarvalh
 
Treinamento de GOVERNANÇA CORPORATIVA.pptx
Cassiano Pacheco da Silva
 
SARA.pdfFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
AdeniltonMendes3
 
Análise Estratégica das Perspectivas da Petrobras na Colômbia.pdf
Vitor Pereira Xavier
 
-ssssssssssssssssSLIDES-SOBRE-PLANO-DE-NEGOCIOS.pdf
AdeniltonMendes3
 
Carteira recomenda s. Investimentos Crédito
gustavomarquioto
 
02. FGV.Slides. Integração em Projetos.set2019.pptx
PedroCunha566540
 
Slides - para apresentação de Gestão de Processos (1).pdf
GledsonBarbosaAlcoba1
 
aula3-omarketingdebuscaesuasferramentas-planejamentodemarketingdigital-mbamar...
adrianocacau
 

Xp Comdex

  • 1. Extreme Programming Ricardo L. A. Bánffy Hiperlógica
  • 2. Motivações Requerimentos mutáveis Não é mais possível projetar um sistema ao longo de 6 meses, implementá-lo ao longo de um ano, colocá-lo em produção e esperar que ele ainda resolva algum problema real Limitação da complexidade Custo de manutenção de um sistema aumenta com o tempo se a complexidade não for limitada Agilidade Releases frequentes garantem que problemas mais críticos são resolvidos mais cedo Internet-time e vantagens de first-to-market
  • 4. 12 práticas Processo de Planejamento (“Planning Game”) Releases Frequentes Metáfora do Sistema O Mais Simples que Possa Funcionar Testar Antes Refactoring Pair-Programming Propriedade Coletiva do Código Integração Contínua Semanas de 40 Horas Cliente Sempre Presente Padrões de Codificação
  • 5. Planning Game Equipe de negócios (Cliente) escreve estórias (curtas) sobre funcionalidades do sistema, usualmente em cartões Equipe técnica (Programadores) estima o custo das estórias Cliente decide qual a duração do próximo ciclo Cliente escolhe, com base nas estimativas dos programadores, quais estórias serão atendidas nesse ciclo e quais ficarão nos próximos ciclos Garante que o cliente tenha o maior retorno em cada ciclo de desenvolvimento
  • 6. Releases Frequentes Minimizam a quantidade de recursos investida em cada release Ciclos curtos, na ordem de dias ou semanas, permitem retorno rápido sobre o investimento – funcionalidades importantes entrarão em funcionamento mais cedo Todo o código pronto (que passa em todos os testes unitários) deve ser integrado e o sistema todo testado após a integração
  • 7. Metáfora do Sistema Comunica de forma clara o que se espera de um produto Unifica a nomenclatura e estabelece uma linguagem cumum entre negócios e tecnologia Ajuda os programadores a compreender o domínio do problema
  • 8. O Mais Simples que Possa Funcionar Menor complexidade diminui riscos – A complexidade é o inimigo Software tende naturalmente a crescer e se tornar mais complexo (mais interações entre componentes distintos aumentam o risco de quebras em alterações) Software é alterado durante sua vida útil – requerimentos mudam e o software pode se tornar mais complexo que os requerimentos necessitem Garante que não serão gastos recursos em estórias que alguém “acha” que serão um dia necessárias
  • 9. Testar Antes Testes devem ser escritos ANTES de se codificar a funcionalidade do produto Testes funcionam como documentação (embora não a substituam) Escrever os testes obriga a pensar na forma como o componente será usado ANTES de codificá-lo Um componente só está pronto se todas as formas com que ele for usado passarem nos testes correspondentes
  • 10. Unit-testing (apêndice) Testes devem ser automatizados para serem executados sempre que possível Testes de difícil execução serão eventualmente abandonados Tuda a funcionalidade que não estiver sendo testada ou deveria estar sendo testado ou não é necessária e deveria ser removida Framework de testes (xUnit)
  • 11. Refactoring Código tende a se deteriorar ao longo do tempo Soluções brilhantes de um dia parecem estúpidas depois de uma semana Refactoring não deve acrescentar funcionalidade – apenas “limpar” a funcionalidade existente É sempre recomendável fazer refactoring antes de acrescentar alguma funcionalidade
  • 12. Pair-Programming Duas cabeças pensam melhor do que uma Uma cabeça obriga a outra a pensar no problema Se um colega não entende o código ele não está suficientemente claro e não será entendido depois Para promover o entendimento da solução, é desejável que as duplas sejam formadas por programadores com níveis diferentes de experiência Funciona como um code-review em tempo real Menos distrações (ICQ, Slashdot, e-mail)
  • 13. Propriedade Coletiva do Código Se algo está quebrado, complexo demais ou poderia ser melhorado, isso seve ser corrigido Todos os programadores devem ser capazes de consertar qualquer código do sistema – não pode haver especialistas numa única parte Evita dependência de profissionais Promove o entendimento global da solução (sem caixas-pretas de funcionalidade)
  • 14. Integração Contínua A versão “oficial”, passando em todos os testes unitários e funcionais deve estar sempre disponível Todo o novo desenvolvimento deve partir dessa versão Todo código pronto (que passa em todos os testes) deve ser incorporado a essa versão assim que possível
  • 15. Semanas de 40 horas Horas extras e viradas de noite produzem código de baixa qualidade Programadores devem ter uma vida própria para se manterem felizes, saudáveis e produtivos Horas extras são um sinal de alarme para a equipe Quando o programador acha que um prazo foi superestimado, vai deixar tarefas para depois e vai ter que virar noites no fim do período, pois é ele nunca vai lembrar que é extremamente raro superestimar prazos
  • 16. Cliente Sempre Presente Responde dúvidas melhor e mais rapidamente Comunicação pessoal é mais eficiente do que por escrito Programadores não devem tomar decisões para as quais não estão preparados (e pelas quais serão responsabilizados)
  • 17. Padrões de Codificação Se todos os programadores devem editar qualquer parte do código, eles precisam ser capazes de entendê-lo Código deve ser mantido legivel para a “posteridade”, limitando o aumento de custo de manutenção ao longo do tempo Os padrões não precisam ser arbitrários ou impostos com uso de violência – é desejável que sejam consensuais
  • 18. Dificuldades Cliente ausente Procure um substituto para representar o cliente: um gerente de conta ou gerente de produto (quando o cliente for algo como “mercado”) Mais de um cliente Procure obter um único representante que tenha poder de decidir pelos vários interesses do cliente. Os clientes devem poder se reunir entre si antes de se reunir com a equipe técnica Privacidade, ambiente hostil, ferramentas estranhas Quando desenvolvedores resistem ao pair-programming, procure criar um espaço para pair-programming – máquinas dedicadas a isso com editores e OSs que os programadores prefiram
  • 19. Dificuldades Custos do pair-programming Pair-programming é caro à primeira vista. Argumente que os programadores vão se dispersar menos e que o código será de melhor qualidade do que se estivessem trabalhando sozinhos Às vezes pair-design é mais interessante. Algumas duplas planejam uma solução juntas e programam separadamente. Isso funciona às vezes Algumas duplas não funcionam Rearrange sempre as duplas. Algumas combinações vão funcionar melhor que outras. Fatores técnicos ou culturais podem influir
  • 20. Dificuldades Sistemas legados É mais fácil começar o projeto em XP do que mudá-lo para XP durante sua execução. Procure fazer a transição em algum momento de descontinuidade (entrega de funcionalidade) Propriedade do código Programadores não podem ter “ciúmes” de suas criações Encoraje o uso das mesmas linguagens e bibliotecas por toda a aplicação
  • 21. Dificuldades Dificuldades para testar Sempre testar componentes quanto à funcionalidade. Separação entre conteúdo e apresentação ajuda Componentes de interface podem ser testados separadamente Alguns componentes dependem de funcionalidade externa – testing frameworks podem ter que ser desenvolvidos para a sua plataforma (ex: zUnit) Componentes devem ser construídos de forma a facilitar os testes
  • 22. Dificuldades Internet-Time Pressões nos induzem a reverter a práticas menos adequadas (com as quais crescemos e que as gerências entendem melhor) Ciclos podem se tornar curtos demais para funcionar Tendência a abandonar testes acreditando que sacrificar qualidade poupe tempo (pode poupar, mas afeta a qualidade e a vida útil do software)
  • 23. Para saber mais www.extremeprogramming.org www.xprogramming.com www.xpdeveloper.com www.hiper.com.br [email_address] Hiperlógica, sites automáticos Av. Brig. Faria Lima, 628 cj. 61 São Paulo • SP • 05426-000 (55 11) 3816 8067 www.hiper.com.br