Cursos de Vero 2007 - IME/USP Profs. Alfredo Goldman e Fabio Kon Departamento de Cincia da Computao
www.agilcoop.org.br
Nossa experincia
Cursos de graduao em XP desde 2001 Apresentaes
SBES, SUCESU, SEPAI, SEBRAE, etc. Arquivos disponveis: AgilCoop
Mas, infelizmente,
no h gente suficiente para desenvolver tanto software com qualidade.
Copyleft AgilCoop 3
Roteiro
Motivao
Problemas e possveis direes
Mtodos geis
Princpios O erro dos mtodos tradicionais Alguns mtodos geis Apresentao mais detalhada de XP
Copyleft AgilCoop
Problemas
Com mtodos tradicionais de desenvolvimento
Supem que possvel prever o futuro Pouca interao com os clientes nfase em burocracias
(documentos, formulrios, processos, controles rgidos, etc.)
Com software
Grande quantidade de erros Falta de flexibilidade
Copyleft AgilCoop 5
Melhores Metodologias
Mtodos geis (o foco desta apresentao) outras... (abordadas em ES)
6
Copyleft AgilCoop
geis
Comunidade de POO ACM OOPSLA p.ex. Johnson @ Illinois, Beck, Cockburn, Jeffries, Cunningham XP, Crystal, Scrum, Lean, etc.
Copyleft AgilCoop 7
Desenvolvedores.
So humanos (logo, diferentes)
Ambiente.
Presso de cronograma, prioridades e clientes mudam
Copyleft AgilCoop
O Manifesto do
Desenvolvimento gil de Software
Indivduos e interaes so mais importantes que processos e ferramentas. Software funcionando mais importante do que documentao completa e detalhada. Colaborao com o cliente mais importante do que negociao de contratos. Adaptao a mudanas mais importante do que seguir o plano inicial.
11
Copyleft AgilCoop
Copyleft AgilCoop
14
Copyleft AgilCoop
15
tempo
Copyleft AgilCoop
19
Copyleft AgilCoop
23
Pequeno histrico
Foi contratado em 1990 pela IBM
documentar a metodologia de desenvolvimento optou por entrevistar as diversas equipes
Resultado:
Pedidos de desculpa por no utilizar ferramentas
e entregar software funcionando
Concluses de Cockburn
Pode-se trocar (com vantagens) documentao escrita por conversas face a face. Quanto mais se entrega software testado e funcionando, menos se depende da documentao escrita (promissrias).
Copyleft AgilCoop
25
Life (L)
Criticalidade
L6
L20
L40
L100
L200
L500
L1000
E20
E40
E100
E200
E500
E1000
D20
D40
D100
D200
D500
D1000
C20
C40
C100
C200
C500
C1000
1-6
Copyleft AgilCoop
- 20
- 40
- 100
- 200
E6
E20
E40
E80
D6
D20
D40
D80
C6
C20
C40
C80
Red
Clear
Copyleft AgilCoop
Yellow
Orange
27
Princpios:
Copyleft AgilCoop
28
Adaptao da Metodologia
Em cada caso, escolha a metodologia mais leve possvel que pode fazer o que voc precisa. Quanto maior o projeto (nmero de pessoas), maior burocracia ser necessria e pior ser a produtividade. Reflection Workshops ao final de cada fase.
Copyleft AgilCoop
29
Resultado:
pster
Manter
reunies com cliente programao pareada
Tentar
testes automatizados multas para interrupes escrita pareada de testes
Problemas
Copyleft AgilCoop
Aps 2 ou 3 verses incrementais, a metodologia deve comear a convergir para uma metodologia tolervel para o projeto.
Copyleft AgilCoop
31
Scrum
Jeff Suttherland
http://jeffsutherland.com
Ken Schwaber
http://www.controlchaos.com
Conferncias
OOPSLA 96, PLoP 98
Inspirao
Desenvolvimento Iterativo e Incremental em empresas (DuPont) nos anos 80
Copyleft AgilCoop 32
Programao eXtrema
XP
Metodologia de desenvolvimento de software aperfeioada nos ltimos 8 anos. Ganhou notoriedade a partir da OOPSLA2000. Nome principal: Kent Beck.
Copyleft AgilCoop 33
Reaes a XP
Alguns odeiam, outros amam. Quem gosta de programar ama! Deixa o bom programador livre para fazer o que ele faria se no houvesse regras. Fora o [mau] programador a se comportar de uma forma similar ao bom programador.
Copyleft AgilCoop 34
Os Valores de XP
Comunicao Feedback Coragem Simplicidade Respeito
Novo valor
Copyleft AgilCoop
37
As 12 Prticas de XP
(verso 2000)
1. 2. 3. 4. 5. 6. 7. Planejamento Fases Pequenas Metfora Design Simples Testes Refatorao Programao Pareada 8. Propriedade Coletiva 9. Integrao Contnua 10. Semana de 40 horas 11. Cliente junto aos desenvolvedores 12. Padronizao do cdigo
38
Copyleft AgilCoop
Princpios Bsicos de XP
Feedback rpido Simplicidade o melhor negcio Mudanas incrementais Carregue a bandeira das mudanas / no valorize o medo (Embrace change) Alta qualidade do cdigo
Copyleft AgilCoop 39
Copyleft AgilCoop
40
Um Projeto XP
Fase de Explorao
durao: 1 a 6 meses. termina quando a primeira verso do software enviada ao cliente. clientes escrevem historias (story cards). programadores interagem com clientes e discutem tecnologias. No s discutem, experimentam diferentes tecnologias e arquiteturas para o sistema. Planejamento: 1 a 2 dias.
Copyleft AgilCoop 41
Testes
Fundamento mais importante de XP. o que d segurana e coragem ao grupo. Testes de unidades (Unit tests)
escritos pelos programadores para testar cada elemento do sistema (p.ex., cada mtodo em cada caso).
Testes
Testes das unidades do sistema
Tem que estar sempre funcionando a 100%. So executados vrias vezes por dia. Executados noite automaticamente.
Copyleft AgilCoop
46
O Cdigo
Padres de estilo adotados pelo grupo inteiro. O mais claro possvel.
nomes claros (intention-revealing names) XP no se baseia em documentaes detalhadas e extensas (perde-se sincronia).
Comentrios sempre que necessrios. Comentrios padronizados. Programao Pareada ajuda muito!
Copyleft AgilCoop 47
Programao Pareada
Erro de um detectado imediatamente pelo outro (grande economia de tempo). Maior diversidade de idias, tcnicas, algoritmos. Enquanto um escreve, o outro pensa em contra-exemplos, problemas de eficincia, etc. Vergonha de escrever cdigo feio (gambiarras) na frente do seu par. Pareamento de acordo com especialidades.
Ex.: Sistema Multimdia Orientado a Objetos
Experimentos controlados mostraram que a qualidade do cdigo produzido aumenta sem perda de velocidade
[Laurie Williams]
48
Copyleft AgilCoop
Refatorao (Refactoring)
Uma [pequena] modificao no sistema que no altera o seu comportamento funcional. mas que melhora alguma qualidade nofuncional:
simplicidade flexibilidade clareza [desempenho]
Copyleft AgilCoop 50
Exemplos de Refatorao
Mudana do nome de variveis Mudanas nas interfaces dos objetos Pequenas mudanas arquiteturais Encapsular cdigo repetido em um novo mtodo Generalizao de mtodos
raizQuadrada(float x) raiz(float x, int n)
Copyleft AgilCoop
51
Cliente
Responsvel por escrever histrias. Muitas vezes um programador ou representado por um programador do grupo. Trabalha no mesmo espao fsico do grupo. Novas verses so enviadas para produo todo ms (ou toda semana). Feedback do cliente essencial. Requisitos mudam (e isso no mau).
Copyleft AgilCoop 52
Coach (treinador)
Em geral, o mais experiente do grupo.
(eXPeriente em metodologia, no na tecnologia)
Identifica quem bom no que. Lembra a todos as regras do jogo (XP). Eventualmente faz programao pareada. No desenha arquitetura, apenas chama a ateno para oportunidades de melhorias. Seu papel diminui medida em que o time fica mais maduro.
Copyleft AgilCoop 53
Tracker (Acompanhador)
A conscincia do time. Coleta estatsticas sobre o andamento do projeto. Alguns exemplos:
Nmero de histrias definidas e implementadas. Nmero de testes de unidade. Nmero de testes funcionais definidos e funcionando. Nmero de classes, mtodos, linhas de cdigo.
Copyleft AgilCoop
54
Quando no possvel realizar testes (muito raro). Quando o custo de mudanas essencialmente exponencial.
56
Copyleft AgilCoop
As 12 Prticas de XP
(verso 2000)
1. 2. 3. 4. 5. 6. 7. Planejamento Fases Pequenas Metfora Design Simples Testes Refatoramento Programao Pareada 8. Propriedade Coletiva 9. Integrao Contnua 10. Semana de 40 horas 11. Cliente junto aos desenvolvedores 12. Padronizao do cdigo
58
Copyleft AgilCoop
Prticas de XP
As prticas foram refatoradas
(veja www.extremeprogramming.org/rules.html) Mas a idia exatamente a mesma. Novas prticas interessantes: Conserte XP quando a metodologia quebrar. Mova as pessoas. Client Proxy (by Klaus).
Copyleft AgilCoop
59
Concluso
XP no para todo mundo
mas para quase todo mundo
Maiores Informaes
AgilCoop:
www.agilcoop.org.br/portal/agilcast