Anda di halaman 1dari 62

Mtodos geis de Desenvolvimento de Software e a

Programao eXtrema (XP)

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

Assessorias em mtodos geis Artigos cientficos


Copyleft AgilCoop 2

Novos ventos no mundo do Desenvolvimento de Software


Sociedade demanda
grande quantidade de sistemas/aplicaes software complexo, sistemas distribudos, heterogneos requisitos mutantes (todo ano, todo ms, todo dia)

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.)

Avaliao do progresso baseado na evoluo da burocracia e no do cdigo

Com software
Grande quantidade de erros Falta de flexibilidade
Copyleft AgilCoop 5

Como resolver esse impasse?


Melhores Tecnologias
Padres de Projeto (reutilizao de idias) Componentes (reutilizao de cdigo) Middleware (aumenta a abstrao)

Melhores Metodologias
Mtodos geis (o foco desta apresentao) outras... (abordadas em ES)
6

Copyleft AgilCoop

Metodologias de Desenvolvimento de Software OO


Tradicionais
Comunidade de Engenharia de Software IEEE/ACM ICSE p.ex. Carnegie-Mellon SEI RUP, CMM, etc.

geis
Comunidade de POO ACM OOPSLA p.ex. Johnson @ Illinois, Beck, Cockburn, Jeffries, Cunningham XP, Crystal, Scrum, Lean, etc.
Copyleft AgilCoop 7

O que desenvolvimento de sofware ?


Por: Alistair Cockburn Modelagem (Jacobson) Engenharia (Meyer) Disciplina Poesia Artesanato (Humphreys) (Cockburn) (Knuth)

Arte (Gabriel) Se voc sabe o que , pode aplicar solues conhecidas


Copyleft AgilCoop 8

Desenvolver software um processo reprodutvel ?


Para isto necessrio o controle das variveis
Problema. fase para definio de requisitos
Podem no ser bem definidos, ou mudar

Soluo. Especificao completa da arquitetura


Alm do problema acima, envolve processo criativo

Desenvolvedores.
So humanos (logo, diferentes)

Ambiente.
Presso de cronograma, prioridades e clientes mudam

Copyleft AgilCoop

Mtodos geis de Desenvolvimento de Software


Movimento iniciado por programadores experientes e consultores em desenvolvimento de software. Questionam e se opem 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. http://agilemanifesto.org
Copyleft AgilCoop 10

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

Princpios do Manifesto gil


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.
Copyleft AgilCoop 12

Mais princpios do Manifesto gil


Medir o progresso atravs de software funcionando. Desenvolvimento sustentvel. Construir projetos com indivduos motivados. Simplicidade essencial. De tempos em tempos, o time pensa em como se tornar mais eficiente e ajusta o seu comportamento de acordo.
Copyleft AgilCoop 13

Em um projeto gil ideal. (1/2)


O gerente de projeto concorda em prosseguir sem que todos os requisitos estejam bem definidos. Os desenvolvedores concordam em prosseguir sem ter todos os requisitos documentados. Os membros da equipe sabem que algum vai ajudar quando ocorrerem problemas.

Copyleft AgilCoop

14

Em um projeto gil ideal.(2/2)


Os gerentes percebem que no precisam dizer equipe o que fazer, ou garantir o que vai ser feito. A equipe percebe que ningum vai dizer o que fazer, isto faz parte do trabalho da equipe. No existem mais a impresso de diviso (testers and programmers), todos so desenvolvedores.

Copyleft AgilCoop

15

Enquanto isso, no mundo tradicional...


0. Levantamento de Requisitos 1. Anlise de Requisitos 2. Desenho da Arquitetura 3. Implementao 4. Testes 5. Produo / Manuteno
Copyleft AgilCoop 16

Premissas Bsicas do Modelo Tradicional


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.
Copyleft AgilCoop 17

O que est por trs deste modelo?


Custo de mudanas

requisitos desenho testes anlise implementao produo


Copyleft AgilCoop 18

E se a realidade hoje em dia fosse outra?


Custo de mudanas

tempo

Copyleft AgilCoop

19

E se essa fosse a realidade?


A atitude dos desenvolvedores de software seria completamente diferente:
Tomaramos as grandes decises o mais tarde possvel. Implementaramos agora somente o que precisamos agora. No implementaramos flexibilidade desnecessria (no anteciparamos necessidades).
Copyleft AgilCoop 20

E essa a nova realidade !


(pelo menos em muitos casos)
Orientao a Objetos: facilita e cria oportunidades para mudanas. Tcnicas de Refatorao. Testes automatizados: nos do segurana quando fazemos mudanas. Prtica / cultura de mudanas: aprendemos tcnicas e adquirimos experincia em lidar com cdigo mutante.
Copyleft AgilCoop 21

Principais Mtodos geis


Hoje concentrar-nos-emos em:
Programao eXtrema (XP)

Outros mtodos geis interessantes:


Crystal (uma famlia de mtodos) Scrum Adaptive Software Development Feature Driven Development etc.
Copyleft AgilCoop 22

A famlia Crystal de Mtodos


Criada por Alistair Cockburn http://alistair.cockburn.us/crystal Editor da srie Agile Software Development da Addison-Wesley.

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

Explicaes sobre como metodologias foram seguidas risca


e o projeto falhou
Copyleft AgilCoop 24

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

Classificao de Projetos de Desenvolvimento de Software


. . . Prioridade para responsabilidade legal
Prioridade para Produtividade & Tolerncia

(defeitos causam perdas de...)

Life (L)

Criticalidade

L6

L20

L40

L100

L200

L500

L1000

Essential money (E) E6 Discretionary money D6 (D) Comfort (C)


C6

E20

E40

E100

E200

E500

E1000

D20

D40

D100

D200

D500

D1000

C20

C40

C100

C200

C500

C1000

1-6
Copyleft AgilCoop

- 500 - 1,000 Nmero de pessoas envolvidas +20%


26

- 20

- 40

- 100

- 200

Escopo da Famlia Crystal


L6 L20 L40 L80

E6

E20

E40

E80

D6

D20

D40

D80

C6

C20

C40

C80
Red

Clear
Copyleft AgilCoop

Yellow

Orange
27

Principais Caractersticas da Famlia Crystal


Filosofia bsica:
nfase em comunicao leve nos produtos gerados (evitar peso morto) Precisamos de menos produtos intermedirios se possumos:
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)

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

Oficinas de Reflexo (Reflection Workshops)


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
Copyleft AgilCoop

muitas interrupes erros no cdigo entregue


30

Mais perguntas na reflexo


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.

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

A Quem se Destina XP?


Grupos de 2 a 10 [20] programadores Projetos de 1 a 36 meses (calendrio) De 1000 a 250 000 linhas de cdigo Papis:
Programadores (foco central) (sem hierarquia) Treinador ou Tcnico (coach) Acompanhador (tracker) Cliente
Copyleft AgilCoop 35

E Se Eu No Me Encaixo Nesses Casos?


Voc ainda pode aprender muito sobre desenvolvimento de software. Ter elementos para repensar as suas prticas. No incio se dizia:
Ou voc 100% eXtremo ou no eXtremo. No d pr ser 80% XP. XP is like teenage sex.

Hoje no mais necessariamente assim.


Copyleft AgilCoop 36

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

As 4 Variveis do Desenvolvimento de Software


Tempo Custo Qualidade Escopo (foco principal de XP)

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

Um Dia na Vida de um Programador XP


Escolhe uma histria do cliente. Procura um par livre. Escolhe um computador para programao pareada. Seleciona um carto de histria contendo uma tarefa claramente relacionada a uma caracterstica (feature) desejada pelo cliente.
Copyleft AgilCoop 42

Um Dia na Vida de um Programador XP


Discute modificaes recentes no sistema Discute histria do cliente Testes Implementao Projeto (design) Integrao
Copyleft AgilCoop 43

Um Dia na Vida de um Programador XP


Atos constantes no desenvolvimento:
Executa testes antigos. Busca oportunidades para simplificao. Modifica desenho e implementao incrementalmente baseado na funcionalidade exigida no momento. Escreve novos testes. Enquanto todos os testes no rodam a 100%, o trabalho no est terminado. Integra novo cdigo ao repositrio.
Copyleft AgilCoop 44

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 de funcionalidades (Functional tests)


escritos pelos clientes para testar a funcionalidade do sistema (Testes de aceitao).
Copyleft AgilCoop 45

Testes
Testes das unidades do sistema
Tem que estar sempre funcionando a 100%. So executados vrias vezes por dia. Executados noite automaticamente.

Testes das funcionalidades


Vo crescendo de 0% a 100%. Quando chegam a 100% acabou o projeto.

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

Propriedade Coletiva do Cdigo


Modelo tradicional: s autor de uma funo pode modific-la. XP: o cdigo pertence a todos. Se algum identifica uma oportunidade para simplificar, consertar ou melhorar cdigo escrito por outra pessoa, que o faa. Mas rode os testes!
Copyleft AgilCoop 49

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.

Mantm histrico do progresso. Faz estimativas para o futuro.

Copyleft AgilCoop

54

Quando XP No Deve Ser Experimentada?


Quando o cliente no aceita as regras do jogo. Quando o cliente quer uma especificao detalhada do sistema antes de comear. Quando os programadores no esto dispostos a seguir (todas) as regras. Se (quase) todos os programadores do time so medocres.
Copyleft AgilCoop 55

Quando XP No Deve Ser Experimentada?


Grupos grandes (>10 [>20] programadores). Quando feedback rpido no possvel:
sistema demora 6h para compilar. testes demoram 12h para rodar. exigncia de certificao que demora meses.

Quando no possvel realizar testes (muito raro). Quando o custo de mudanas essencialmente exponencial.
56

Copyleft AgilCoop

Concluso: Ser gil = Vencer Medos


Escrever cdigo. Mudar de idia. Ir em frente sem saber tudo sobre o futuro. Confiar em outras pessoas. Mudar a arquitetura de um sistema em funcionamento. Escrever testes.
Copyleft AgilCoop 57

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

Mas todos podemos aprender com ela


melhorando a qualidade do software melhorando a produtividade
Copyleft AgilCoop 60

Caractersticas Comuns dos Mtodos geis


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.
Copyleft AgilCoop 61

Maiores Informaes
AgilCoop:
www.agilcoop.org.br/portal/agilcast

Outros: www.agilealliance.org www.xispe.com.br www.extremeprogramming.org www.agilealliance.com.br


Copyleft AgilCoop 62

Anda mungkin juga menyukai