extreme programming explicada
TRANSCRIPT
![Page 1: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/1.jpg)
Extreme Programming
Abrace a mudança!
![Page 2: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/2.jpg)
Extreme Programming
Juan di Carlo Damasceno
Maurício Linhares
![Page 3: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/3.jpg)
Manifesto Ágil
Organizando a bagunça e as idéias
![Page 4: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/4.jpg)
Princípios
Indivíduos e interações mais que processos e ferramentas
Software funcional mais que extensa documentação
Colaboração com o cliente mais que negociação de contratos
Responder à mudança mais que seguir um plano
![Page 5: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/5.jpg)
Chrysler C3
Nascimento do XP
![Page 6: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/6.jpg)
Onde – Quando - Como
Chrysler
Março de 1996
Projeto C3 (Chrysler Comprehensive Compensation)
![Page 7: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/7.jpg)
Dirigir
“Dirigir não é colocar o carro na direção certa, é manter uma atenção constante e
corrigir sempre que necessário”
Mãe do Kent Beck
![Page 8: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/8.jpg)
Isso é XP!
Prestar atenção
Adaptar
Mudar
![Page 9: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/9.jpg)
A mudança é um problema?
Requerimentos mudam Modelos mudam Negócios mudam Tecnologias mudam Times mudam Membros do time mudam
![Page 10: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/10.jpg)
Tudo muda!
A mudança não é um problema, é uma realidade
![Page 11: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/11.jpg)
Então, qual o problema?
Lidar com a mudança!
![Page 12: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/12.jpg)
O que é XP?
São ciclos curtos de desenvolvimento; É o planejamento incremental e
baseado no conhecimento atual; É a habilidade de flexibilizar os prazos
para entrega de implementações; É apoiar-se em testes automatizados
para fazer mudanças;
![Page 13: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/13.jpg)
O que é XP?
É confiança na comunicação oral, testes automáticos e código para “falar” sobre o projeto;
É se basear em uma modelagem evolucionária que abraça a mudança;
É apoiar a colaboração constante das pessoas envolvidas;
É basear-se em práticas que funcionam no curto e no longo prazo;
![Page 14: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/14.jpg)
Ciclo básico de um projeto XP
1. Planning Game (normalmente uma manhã no primeiro dia da semana)
1. Definir as estórias
2. Definir prioridades
3. Pontuar histórias
2. Definir quem vai implementar o que
3. Implementar
4. Entregar a estória implementada
5. Tudo outra vez até o projeto acabar
![Page 15: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/15.jpg)
Ciclo contínuo
Modelagem
Testes
PlanejamentoCodificação
![Page 16: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/16.jpg)
Só isso? Como é que pode?
Como é que eles conseguem fazer o Eclipse, Hibernate, MyFaces e Spring desse jeito?
![Page 17: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/17.jpg)
As bases do XP
![Page 18: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/18.jpg)
Valores
“O que lhe traz problemas não é o que você não sabe, mas o que você acha que sabe e não sabe”
Will Rogers
![Page 19: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/19.jpg)
Comunicação
Ninguém sabe tudo
Times só trabalham juntos quando se comunicam juntos
Comunicação eficiente é a que melhor serve ao time no momento
![Page 20: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/20.jpg)
Simplicidade
Qual a coisa mais simples que poderia funcionar?
Simples não é simplista
Simplicidade depende do contexto (qual o nível do time?)
![Page 21: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/21.jpg)
Feedback
Direções mudam
Não é possível fazer certo “de primeira” (ou é?)
Feedback demais também não é bom
![Page 22: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/22.jpg)
Coragem
Heróis (burros) morrem cedo É controlar o medo É tomar a decisão quando ela deve
ser tomada É não se esconder atrás de uma pilha
de papéis ou documentos assinados
![Page 23: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/23.jpg)
Respeito
Goste do que você faz Goste das pessoas com as quais
você trabalha Goste do lugar aonde você trabalha “Eu sou importante, assim como
você”
![Page 24: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/24.jpg)
Outros?
O que as pessoas ao seu redor valorizam?
![Page 25: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/25.jpg)
Princípios
Guiando o comportamento
![Page 26: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/26.jpg)
Humanidade
Pessoas...produzem softwaretem necessidades própriasdevem ser respeitadasdevem se sentir segurasdevem se sentir importantes
![Page 27: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/27.jpg)
Economia
Software não é de graça Sucesso tecnológico nem sempre é
sucesso econômico Software que não oferece valor para o
cliente, não vale os recursos que consumiu
Primeiro o mais importante economicamente, depois o resto
![Page 28: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/28.jpg)
Benefício Mútuo
Se algo não é bom pra um dos lados, não é bom pra ninguém
Ganhar-Ganhar-Ganhar é a ordem
Esforços desnecessários não são toleráveis
![Page 29: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/29.jpg)
Auto-Similaridade
Tem algo funcionando lá embaixo? Faça o mesmo aqui em cima!
Soluções únicas não são ruins, mas normalmente são incomuns
![Page 30: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/30.jpg)
Evolução
“Excelência não é um modo de agir, mas um hábito” – Aristóteles
Faça o melhor possível hoje
Não existe processo perfeito
Tudo deve evoluir
![Page 31: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/31.jpg)
Diversidade
Times homogêneos sobem e descem juntos
Pessoas diferentes com experiências diferentes se completam
Já imaginou time de futebol só de atacantes?
![Page 32: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/32.jpg)
Reflexão
Analisar Porque? Analisar Como? Analisar Reflexão vem após a ação Aprender é refletir sobre a ação
![Page 33: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/33.jpg)
Fluxo
Não somos fábricas...
...mas o fluxo não pode ser descontínuo demais
Integração contínua é a lei
![Page 34: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/34.jpg)
Oportunidade
Problemas como chances de mudar
“Sobreviver” não é o suficiente
Não aprender hoje é tirar nota baixa amanhã outra vez
Não esqueça Murphy!
![Page 35: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/35.jpg)
Redundancia
“Como é que é? Não tem plano B?”
Existem várias maneiras de se resolver um único problema, porque não tentar elas?
Remover redundância apenas quando ela realmente não servir pra nada
![Page 36: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/36.jpg)
Falhar
Não funciona? Jogue fora!
Tá “mais ou menos”? Jogue fora!
Fugir da falha hoje é pedir pra fugir ainda mais quando o cliente ligar reclamando amanhã
![Page 37: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/37.jpg)
Qualidade
Menos qualidade não quer dizer menos tempo
Mais qualidade não quer dizer mais tempo
Mais qualidade – Menos bugs – Mais clientes – Mais $$$$
![Page 38: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/38.jpg)
Passos de bebê
Cuidado pra não tropeçar
Quanto maior a altura, pior a queda
Um passo de cada vez, mas também não precisa se arrastar
![Page 39: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/39.jpg)
Aceitar Responsabilidade
Não está seguro pra fazer? Diga que não faz
Não sabe se a pessoa pode fazer? Não mande ela fazer
Não tem ninguém aqui que sabe? Encontre alguém fora que saiba!
Responsabilidade é aceita, não obrigada
![Page 40: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/40.jpg)
Práticas
Luz! Câmeras! Ação!
![Page 41: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/41.jpg)
Todo mundo junto
Time junto, todo no mesmo lugar, todos escutando uns aos outros
![Page 42: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/42.jpg)
Time Completo
Somos uma família
![Page 43: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/43.jpg)
Espaço informativo
Quem está alocado em qual projeto? Qual é a minha estória? O que foi que eu já fiz? O que foi que meu par já fez? O que ainda falta fazer?
![Page 44: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/44.jpg)
Trabalho energizado
Nada de horas extras
Nada de matar o fim de semana
Nada de matar o happy-hour
Nade de ficar sem CS na quinta à noite
Pessoas cansadas e sem motivação não produzem, enrolam
![Page 45: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/45.jpg)
Programação em Par
Duas cabeças pensam melhor que uma
O código é de todos...
...e o conhecimento também
![Page 46: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/46.jpg)
Estórias
Deixe o cliente definir Simples e diretas, ele não deve saber
nem definir implementação Não entendeu? Pergunte a ele
denovo! Estória grande? Quebre-a em tarefas!
![Page 47: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/47.jpg)
Cartão de estória
![Page 48: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/48.jpg)
Ciclo semanal
Planejar o trabalho para apenas uma semana;
Quando menor o tamanho do ciclo:Mais fácil planejar;Mais fácil se manter no prazo;Mais fácil de se ter feedback do
cliente;
![Page 49: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/49.jpg)
Ciclo mensal (ou de 4 semanas)
Definição de rumos de um projeto; Manter foco na implementação do
que é interessante para o cliente; Muitas falhas? Muitos problemas? Hora de arrumar a casa;
![Page 50: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/50.jpg)
Ócio
É, isso mesmo que você viu aí em cima;
Não, ninguém tem que trabalhar o dia todo (nem ninguém trabalha, diga-se de passagem);
Ócio não quer dizer não trabalhar, mas ter tempo pra fazer alguma coisa diferente;
![Page 51: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/51.jpg)
O mais famoso produto do ócio de um programador
![Page 52: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/52.jpg)
Build em 10 minutos
Se o seu projeto demora mais do que 10 minutos pra terminar o build, tá na hora de ajeitar isso;
Qual programador gosta de apertar um botão ter que esperar mais do que 10 minutos pra poder testar o que acabou de desenvolver?
![Page 53: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/53.jpg)
Integração contínua
Todo dia, todo turno, toda hora, o sistema deve estar funcional e executando;
Não se faz commit de código que não funciona;
Integrando continuamente e cedo, até os problemas de comunicação desaparecem;
![Page 54: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/54.jpg)
Teste primeiro – Programe depois
Primeiro se escreve o teste; Depois se implementa a
funcionalidade até que ela passe no teste;
A implementação é direcionada a resolver um problema real, não a imaginação do programador;
É difícil de testar? Está errado!
![Page 55: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/55.jpg)
Modelagem incremental
Ninguém conhece o modelo todo antes de começar a implementar;
A implementação modifica o modelo “perfeito” pensado pelo analista;
O conhecimento pelo domínio do modelo vem com a implementação e a interação com pessoas que entendem “do riscado”;
![Page 56: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/56.jpg)
Um time XP
Escalando a seleção
![Page 57: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/57.jpg)
Papéis
Testadores Desenvolvedores de interações Arquitetos Gerentes de projeto Gerentes de produto Executivos Escritores de material técnico Usuários Programadores Recursos humanos
![Page 58: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/58.jpg)
Mundo perfeito
Quando não usar XP?
![Page 59: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/59.jpg)
Quando não usar XP?
Quando as pessoas não querem mudar;
Quando o cliente quer a análise toda antes de começar o sistema;
Quando a empresa valoriza workaholics;
Quando a complexidade é absolutamente necessária;
![Page 60: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/60.jpg)
Quando não usar XP?
Quando os testes automáticos não são fáceis ou até mesmo possíveis de serem feitos;
Quando o local de desenvolvimento do projeto não ajuda;
![Page 61: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/61.jpg)
“There’s no silver bullet”
Frederick P. Brooks
![Page 62: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/62.jpg)
Conclusão
XP não é fácil de aplicar em ambientes que resistem a mudanças;
É provavelmente um dos mais difíceis e “engessados” processos de software;
É a fonte do sucesso gigantesco de grandes projetos de software;
![Page 63: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/63.jpg)
Conclusão
É foco no que é interessante para quem paga, não para quem recebe;
É valorizar as pessoas que desenvolvem o projeto, não os papéis que elas produzem;
É entender que quem funciona é o código, não documentação obsoleta;
![Page 64: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/64.jpg)
Referências
Extreme Programming Explained: Embrace Change, Second Edition. Kent Beck, Cynthia Andres. Addisson Wesley, 2004;
Extreme Programming Explained. Kent Beck. Addisson Wesley, 1999;
The Mythical Man-Month: Essays on Software Engineering. Frederick P. Brooks. Addisson Wesley, 1975-1995.
![Page 65: Extreme programming explicada](https://reader034.vdocuments.site/reader034/viewer/2022052311/55725d07d8b42a761d8b49e4/html5/thumbnails/65.jpg)
Referências
eXtreme Programming -> http://www.extremeprogramming.org/
Eclipse Project -> http://eclipse.org/ JUnit -> http://junit.org/ Wikipedia -> http://en.wikipedia.org/