Escolar Documentos
Profissional Documentos
Cultura Documentos
Departamento de Cincia da Computao IME / USP na Assemblia Legislativa do Estado de So Paulo 14/10/2005
Copyleft Fabio Kon e Alfredo Goldman
Sociedade demanda
grande quantidade de sistemas/aplicaes software complexo, sistemas distribudos, heterogneos requisitos mutantes (todo ano, todo ms, todo dia)
Mas, infelizmente,
14/10/2005
Problemas
Com software
Grande quantidade de erros Falta de flexibilidade
14/10/2005
Copyleft Fabio Kon & Alfredo Goldman
3 / 69
Melhores Tecnologias
Padres de Projeto (reutilizao de idias) Componentes (reutilizao de cdigo) Middleware (aumenta a abstrao)
Melhores Metodologias
Mtodos geis (o foco nesta palestra) outras... (RUP, relacionadas a CMM, etc.)
14/10/2005
4 / 69
Tradicionais
Comunidade de Engenharia de Software IEEE/ACM ICSE p.ex. Carnegie-Mellon SEI RUP, CMM, etc.
Comunidade de POO ACM OOPSLA p.ex. Johnson @ Illinois, Beck, Cockburn, Jeffries, Cunningham XP, Crystal, Scrum, etc.
Copyleft Fabio Kon & Alfredo Goldman
geis
14/10/2005
5 / 69
Movimento iniciado por programadores experientes e consultores em desenvolvimento de software. Questionam e se ope a uma srie de mitos/prticas adotadas em abordagens tradicionais de Engenharia de Software e Gerncia de Projetos. Manifesto gil:
Assinado por 17 desenvolvedores em Utah em fevereiro/2001.
14/10/2005
Copyleft Fabio Kon & Alfredo Goldman
6 / 69
O Manifesto do
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.
14/10/2005
Copyleft Fabio Kon & Alfredo Goldman
7 / 69
Objetivo: satisfazer o cliente entregando, rapidamente e com freqncia, sistemas com algum valor.
Entregar verses funcionais em prazos curtos. Estar preparado para requisitos mutantes. Pessoal de negcios e desenvolvedores juntos. Troca de informaes atravs de conversas diretas.
14/10/2005
8 / 69
14/10/2005
Copyleft Fabio Kon & Alfredo Goldman
9 / 69
14/10/2005
10 / 69
Life (L)
L6 L20 L40 L100 L200 L500 L1000
Criticalidade
E20
E40
E100
E200
E500
E1000
D20
D40
D100
D200
D500
D1000
C6
C20
C40
C100
C200
C500
C1000
1-6
14/10/2005
- 20
- 40
- 100
- 200
11 / 69
E6
E20
E40
E80
D6
D20
D40
D80
C6
C20
C40
C80
Red
Clear
14/10/2005
Yellow
Orange
12 / 69
Filosofia bsica:
nfase em comunicao leve nos produtos gerados (evitar peso morto) Precisamos de menos produtos intermedirios se possumos:
1. 2. 3.
Princpios:
4.
canais de comunicao informal ricos e rpidos entrega freqente de cdigo funcionando uso dos pontos fortes das pessoas (conversas, olhar a sua volta, interagir com outros) estar ciente dos pontos fracos das pessoas (baixa disciplina, falta de cuidado)
14/10/2005
13 / 69
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.
14/10/2005
14 / 69
(Reflection Workshops)
Oficinas de Reflexo
Perguntas:
O que aprendemos na ltima fase (p.ex. ms)? O que podemos fazer de uma forma melhor?
Resultado:
pster
Manter
reunies com cliente programao pareada
Tentar
testes automatizados multas para interrupes escrita pareada de testes
Problemas
muitas interrupes erros no cdigo entregue
14/10/2005
Copyleft Fabio Kon & Alfredo Goldman
15 / 69
O que fizemos de bom e de ruim? Quais so as nossas prioridades? O que mantivemos de mais importante? O que podemos mudar para a prxima vez? O que podemos adicionar/tirar?
Aps 2 ou 3 verses incrementais, a metodologia deve comear a convergir para uma metodologia tolervel para o projeto.
14/10/2005
16 / 69
Scrum
Definio informal: Estratgia em um jogo de rugby onde jogadores colocam uma bola quase perdida novamente em jogo atravs de trabalho em equipe.
14/10/2005
Copyleft Fabio Kon & Alfredo Goldman
17 / 69
Scrum
Jeff Suttherland
http://jeffsutherland.com http://www.controlchaos.com
Ken Schwaber
Conferncias
Inspirao
14/10/2005
18 / 69
Programao eXtrema
XP
Metodologia de desenvolvimento de software aperfeioada nos ltimos 5 anos. Ganhou notoriedade a partir da OOPSLA2000.
14/10/2005
Copyleft Fabio Kon & Alfredo Goldman
19 / 69
Reaes a XP
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.
14/10/2005
Copyleft Fabio Kon & Alfredo Goldman
20 / 69
1. Anlise de Requisitos
2. Desenho da Arquitetura 3. Implementao 4. Testes 5. Produo / Manuteno
14/10/2005
Copyleft Fabio Kon & Alfredo Goldman
21 / 69
necessrio fazer uma anlise de requisitos profunda e detalhada antes de projetar a arquitetura do sistema.
necessrio fazer um estudo minucioso e elaborar uma descrio detalhada da arquitetura antes de comear a implement-la. necessrio testar o sistema completamente antes de mandar a verso final para o cliente.
14/10/2005
Copyleft Fabio Kon & Alfredo Goldman
22 / 69
23 / 69
tempo
14/10/2005
24 / 69
14/10/2005
Copyleft Fabio Kon & Alfredo Goldman
25 / 69
14/10/2005
Copyleft Fabio Kon & Alfredo Goldman
26 / 69
Programadores (foco central)(sem hierarquia) Treinador ou Tcnico (coach) Acompanhador (tracker) Cliente
14/10/2005
Copyleft Fabio Kon & Alfredo Goldman
27 / 69
28 / 69
As 12 Prticas de XP
(verso 2000)
1. 2. 3. 4. 5. 6. 7. Planejamento Fases Pequenas Metfora Design Simples Testes Refatorao Programao Pareada
14/10/2005
8. Propriedade Coletiva 9. Integrao Contnua 10. Semana de 40 horas 11. Cliente junto aos desenvolvedores 12. Padronizao do cdigo
29 / 69
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
14/10/2005
30 / 69
Custo
Qualidade Escopo (foco principal de XP)
14/10/2005
31 / 69
Um Projeto XP
Fase de Explorao
durao: 2 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.
14/10/2005
Copyleft Fabio Kon & Alfredo Goldman
32 / 69
14/10/2005
Copyleft Fabio Kon & Alfredo Goldman
33 / 69
Implementao
Projeto (design)
Integrao
14/10/2005
Copyleft Fabio Kon & Alfredo Goldman
34 / 69
14/10/2005
Copyleft Fabio Kon & Alfredo Goldman
35 / 69
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 (e.g., cada mtodo em cada caso).
escritos pelos clientes para testar a funcionalidade do sistema.
Copyleft Fabio Kon & Alfredo Goldman
14/10/2005
36 / 69
Testes
14/10/2005
37 / 69
O Cdigo
Padres de estilo adotados pelo grupo inteiro. O mais claro possvel.
Comentrios sempre que necessrios. Comentrios padronizados. Programao Pareada ajuda muito!
14/10/2005
Copyleft Fabio Kon & Alfredo Goldman
38 / 69
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 contraexemplos, 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
14/10/2005
Copyleft Fabio Kon & Alfredo Goldman
39 / 69
14/10/2005 40 / 69
(Refactoring)
Uma [pequena] modificao no sistema que no altera o seu comportamento funcional mas que melhora alguma qualidade nofuncional:
Refatorao
14/10/2005
Copyleft Fabio Kon & Alfredo Goldman
41 / 69
Exemplos de Refatorao
14/10/2005
42 / 69
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).
14/10/2005
Copyleft Fabio Kon & Alfredo Goldman
43 / 69
(treinador)
Em geral, o mais experiente do grupo. 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.
14/10/2005
Copyleft Fabio Kon & Alfredo Goldman
Coach
44 / 69
(Acompanhador)
Tracker
unit tests.
testes funcionais definidos e funcionando. classes, mtodos, linhas de cdigo
45 / 69
14/10/2005 46 / 69
sistema demora 6h para compilar. testes demoram 12h para rodar. exigncia de certificao que demora meses.
Quando o custo de mudanas essencialmente exponencial. Quando no possvel realizar testes (muito raro).
14/10/2005
47 / 69
14/10/2005
Copyleft Fabio Kon & Alfredo Goldman
48 / 69
As 12 Prticas de XP
(verso 2000)
1. 2. 3. 4. 5. 6. 7. Planejamento Fases Pequenas Metfora Design Simples Testes Refatoramento Programao Pareada
14/10/2005
8. Propriedade Coletiva 9. Integrao Contnua 10. Semana de 40 horas 11. Cliente junto aos desenvolvedores 12. Padronizao do cdigo
49 / 69
Prticas de XP
(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)
14/10/2005
Copyleft Fabio Kon & Alfredo Goldman
50 / 69
Portanto
14/10/2005
51 / 69
Coloca o foco
Na entrega freqente de sub-verses do software [funcionando] para o cliente. Nos seres humanos que desenvolvem o software.
Retira o foco de
Processos rgidos e burocratizados. Documentaes e contratos detalhados. Ferramentas que so usadas pelos seres humanos.
14/10/2005
Copyleft Fabio Kon & Alfredo Goldman
52 / 69
53 / 69
Contratao do IME/USP
2.
Capacitao da equipe
+ permite um maior envolvimento do pessoal da ALESP + a equipe fica apta a desenvolver e manter os sistemas - perde-se tempo com a formao
14/10/2005
54 / 69
Capacitao Mdulo 1
14/10/2005
Copyleft Fabio Kon & Alfredo Goldman
55 / 69
Capacitao Mdulo 2
Com nfase em XP
Testes automatizados
JUnit e JWebUnit
Refatorao Estilos de Cdigo Interfaces WEB (JSP/Servlets) Mini-projeto real (sistema de crachs)
14/10/2005
Copyleft Fabio Kon & Alfredo Goldman
56 / 69
Capacitao Mdulo 3
Ferramentas mais avanadas Software livre, cdigo aberto:
14/10/2005
Copyleft Fabio Kon & Alfredo Goldman
57 / 69
Transferncia de conhecimento
14/10/2005
Copyleft Fabio Kon & Alfredo Goldman
58 / 69
2
3
14/10/2005
29/7
17/8 6/10
62
100 210
110
197 582
59 / 69
Estatsticas do Projeto
700 600 500
Qtdes.
400 300 200 100 0 13/7 1 29/7 2 17/8 6/10 3 Data, Release
14/10/2005
60 / 69
61 / 69
Jorge de Almeida
14/10/2005
62 / 69
Jorge de Almeida
14/10/2005
63 / 69
14/10/2005
64 / 69
Na prtica
Funcionaram bem
Design simples Propriedade coletiva Integrao contnua
14/10/2005
Copyleft Fabio Kon & Alfredo Goldman
65 / 69
A partir de um ano:
exportar a tecnologia como software livre para outros rgos governamentais Projeto Chinchilla
http://chichilla.sf.net
14/10/2005
Copyleft Fabio Kon & Alfredo Goldman
66 / 69
Maiores Informaes
67 / 69
Desenvolvedores
Alexandre Felix Alexandre Vernille Cintia Shnaider Edmur Mesquita lcio A. Arajo
14/10/2005
Felipe S. Gomes Ilton Yoshio Narita Joo Henrique Marcia Abraham Marisa N. da Silva
68 / 69
Agradecimentos
Carlos E. Ferreira Celso T. Matsuda Edna M. S. Cymbaum Lcia S. Frana Pinto Luis Shoiti Yvata
14/10/2005
69 / 69