Conceitos Bsicos
Ayrton Menitto Cinquini
Toda manh, na frica, um leo acorda. Ele sabe que dever correr mais rpido do que a gazela, ou morrer de fome.
Quando o sol surge no horizonte, no importa se voc o leo ou a gazela melhor que voc esteja preparado para correr.
Adaptao de um Ditado Popular Italiano
Ayrton Menitto Cinquini / 2010
2011
Problemas
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 Grande quantidade de erros Falta de flexibilidade
Com software
2011
Melhores Tecnologias
Melhores Metodologias
2011
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.
2011
O Manifesto do
Desenvolvimento gil de Software
2011
Objetivos:
satisfazer o cliente entregando, rapidamente e com freqncia, sistemas com algum valor.
Entregar verses funcionais em prazos curtos. Estar preparado para requisitos mutantes.
2011
10
Nossa maior prioridade satisfazer o cliente atravs da entrega inicial e contnua de software valioso. Mudana de requisitos so bem vindas, mesmo tarde no desenvolvimento.
Entregar software funcionando frequentemente, de um par de semanas a alguns meses, com preferncia para o prazo mais curto. Pessoas de negcios e desenvolvedores devem trabalhar juntos durante todo o projeto. Construir projetos em torno de indivduos motivados.
D-lhes o ambiente e o apoio de que precisam, e confiar neles para fazer o trabalho.
O mtodo mais eficiente e eficaz de transmitir informaes para e dentro de uma equipe de desenvolvimento conversao face-a-face.
2011
11
Os patrocinadores, desenvolvedores e usurios devem ser capazes de manter um ritmo constante indefinidamente.
Ateno contnua para a excelncia tcnica e bom design aumenta a agilidade. Simplicidade - a arte de maximizar a quantidade de trabalho no feito - essencial. As melhores arquiteturas, requisitos, e projetos emergem de equipes auto-organizveis. Em intervalos regulares, a equipe reflete sobre como se tornar mais eficaz, depois sintoniza e ajusta seu comportamento em conformidade.
Prof. Ayrton Menitto Cinquini 12
2011
Programao eXtrema XP
Metodologia de desenvolvimento de software aperfeioada nos ltimos 10 anos. Ganhou notoriedade a partir da OOPSLA2000.
2011
14
eXtreme Programming
Kent Beck Estados Unidos 1999
XP leve XP focado no desenvolvimento de software
2011
15
Reaes a XP
A maioria das pessoas no entendem ou no acreditam ou tem um chefe que no entende. Fora o [mau] programador a se comportar de uma forma similar ao bom programador.
2011
16
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.
2011
18
2011
20
Gostei, mas ser que d para chegar o prdio um pouquinho para a direita?
2011
21
Software
Mundo Fsico
2011
22
Caractersticas do Software
Abstrato
nico
Sua complexidade cresce rapida
mente
2011
Caractersticas do Software
NO fabricado. criado como um romance ou uma nova receita Dificilmente o usurio sabe de incio todos os detalhes,
2011
24
viso
cdigo
2011
25
Um usurio tpico
Eu no sei exatamente o que eu quero mas na hora em que eu ver o sistema eu vou saber o que eu quero. Eu tenho um problema e sei mais ou menos o que eu preciso para resolver esse problema mas s vou saber os detalhes quando o sistema estiver pronto.
2011
26
Desenvolvimento de Software
2011
27
2011
28
tempo
2011
32
2011
34
2011
35
2011
63
2011
64
Imagina se......
Gostei, mas ser que d para chegar o prdio um pouquinho para a direita?
2011
65
Afinal
Software
Mundo Fsico
2011
66
Caractersticas do Software
mente
2011
67
Caractersticas do Software
NO fabricado. criado como um romance ou uma nova receita Dificilmente o usurio sabe de incio todos os detalhes,
2011
68
Um usurio tpico
Eu no sei exatamente o que eu quero mas na hora em que eu ver o sistema eu vou saber o que eu quero. Eu tenho um problema e sei mais ou menos o que eu preciso para resolver esse problema mas s vou saber os detalhes quando o sistema estiver pronto.
2011
70
2011
71
Princpios Bsicos de XP
2011
73
Princpios Bsicos de XP
Feedback
rpido
Simplicidade
Comunicao
Coragem
2011
74
Por que?
2011
75
Feedback
2011
76
Simplicidade
S o que necessrio
Para:
2011
Entendendo o cliente
2011
80
Comunicao
2011
81
Coragem
Manter o sistema simples Trazer o cliente para perto da equipe Programar em pares Mexer em time que est ganhando Fazer refactoring Investir tempo em testes automatizados Abrir mo da documentao Tornar o cdigo coletivo !!!! Adotar contratos de escopo varivel
2011
82
As Prticas de XP
2011
83
As Prticas de XP
Cliente Presente Planejamento Reunies em P
Cdigo Coletivo
Cdigo Padronizado Design Simples
Programao em Par
Desenvolvimento guiado por testes Refatorao
Metfora
Ritmo Saudvel
Integrao Contnua
Releases Curtos
2011
84
Cliente Presente
2011
85
Cliente-Presente
Muitas vezes um programador ou representado por um programador do grupo. Trabalha no mesmo espao fsico do grupo.
Feedback do cliente essencial. Requisitos mudam (e isso no mau).
Prof. Ayrton Menitto Cinquini 86
2011
Cliente Presente
Fazer pequenos ajustes <>carro na estrada Tirar dvidas rapidamente Aumento de confiana Fazer correes rapidamente
2011
87
Realizar cadastro de Usurio no sistema. O sistema dever armazenar nome, telefone e email. O sistema dever permitir listagem, edio e excluso.
Prof. Ayrton Menitto Cinquini 88
2011
Cliente-Presente
Recomenda-se 2 clientes-presentes (incluindo o gerente de produto) para cada 3 programadores Pode ser substitudo por:
2011
90
Exemplos de Estrias
Estria 1:
O sistema dever permitir a autenticao de usuros . Login antes de entrar no sistema e cadastro de novos usurios (nome, login, senha e e-mail)
Estria 2:
O sistema dever permitir aos usurios logados cadastrarem notcias. A notcia deve ter manchete, descrio e contedo. O sistema dever listar todas as notcias.
Estria 3:
A partir da listagem das notcias, o sistema dever permitir ao usurio enviar uma notcia para o e-mail de um usurio cadastrado.
Prof. Ayrton Menitto Cinquini 91
2011
Cliente Presente
....
2011
92
Planejamento
O objetivo gerar o maior valor possvel para o cliente a cada dia de trabalho.
2011
93
Cartas
2011
94
Setembro / 2003
95
Planejamento
Apertando d? NO D!
2011
97
2011
98
Reunio em P
Tudo o que est acontecendo, em qualquer parte do sistema, interessa a todos os membros da equipe
As pessoas precisam ficar sabendo o que acontecendo e quem fez o que. Quando mais cedo descobrimos os erros melhor Servem para medir o clima da equipe.
2011
Reunio em P
Colocar todos a par do que est acontecendo Troca de experincias Obteno da viso do todo por todos
2011
100
Reunio em P
Na sua opinio qual o melhor hora para se fazer a Reunio em P? Por que? Como lidar com as pessoas que sempre chegam atrasadas? Por que? ...e com as pessoas que gostam de dominar a reunio? Por que?
2011
101
Programao em Pares
2011
102
Programao em Pares
Programar + Testar
Revisar
... e se ?
2011
Programao em Pares
Todo o cdigo Um digita, outro revisa Reduo de bugs Disseminao do conhecimento Presso do par Simplicidade Velocidade
Prof. Ayrton Menitto Cinquini 104
2011
Erro de um pode ser detectado imediatamente pelo outro (grande economia de tempo).
Maior diversidade de idias, tcnicas, algoritmos.
2011
105
Programao em Pares
2011
106
Programao em Pares
E a produtividade?
Por que?
2011
107
Programao em Pares
Principais obstculos:
Mobilirio
Viso errnea. Achar perda de tempo. Relacionamento entre desenvolvedores Competio dentro da equipe
2011
108
Programao em Pares
Qual a melhor estratgia para implantar essa prtica? Que mudanas precisariam ser feitas na organizao para isso dar certo? Como fazer a avaliao individual dos profissionais, visando promoes etc?
2011
109
2011
110
Refatorao (Refactoring)
O que fazer com um cdigo que est funcionando mas pouco legvel?
2011
111
Refatorao (Refactoring)
2011
112
Refatorao (Refactoring)
Qualquer parte de cdigo poder ter que ser alterada no futuro, portanto quanto mais legvel melhor. Cdigo limpo e legvel pode ser alterado rapidamente e com mais segurana. O XP recomenda acabar com a baguna.
2011
113
Refatorao (Refactoring)
2011
114
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)
2011
115
Preparar os Testes
Codificar
Testar
Testes de Software:
Todo mundo sabe que so necessrios mas ningum quer fazer; So chatos e consomem tempo;
2011
117
2011
118
Auxilia na anlise, projeto e codificao; Projeto e implementao mais adequados, suficientes e simples; Ajuda que o cdigo seja o mais simples possvel; Ajudam a amadurecer mais rpido o projeto e a implementao.
2011
119
Quanto mais cedo um erro descoberto mais fcil ser a correo. mais barato prevenir do que remediar. Depurar um sistema processo extremamente custoso e demorado.
2011
120
Os testes devem apontar erros tanto no que estamos fazendo no momento como tambm no que j est pronto; Devem ser gerados antes da implementao; Devem ser automatizados para poderem ser executados sempre que necessrio.
2011
121
escritos pelos programadores para testar cada elemento do sistema (e.g., cada mtodo de cada classe).
2011
122
Tem que estar sempre funcionando a 100%. So executados vrias vezes por dia. Executados noite automaticamente.
2011
123
Ir devagar; Ter disciplina e perseverana; Procurar conhecer tcnicas para simplificar a criao dos testes;
2011
125
Testes de Aceitao:
Procura simular a interao dos atores com o sistema; Uma funcionalidade pode ser implementada por uma ou mais classes;
2011
126
Testes de aceitao:
Devem ser escritos antes de cada iterao O cliente deve participar ativamente
2011
127
Cdigo Coletivo
Quem manda aqui sou eu.
2011
129
Cdigo Coletivo
Gargalos no projeto; Srios problemas se o dono da ilha tiver que faltar; Cdigo de baixa qualidade ou legibilidade.
2011
130
Cdigo Coletivo
No XP:
2011
132
Cdigo Coletivo
2011
Cdigo Coletivo
Se algum identifica uma oportunidade para simplificar, consertar ou melhorar cdigo escrito por outra pessoa, que o faa. Mas rode os testes!
Todos!
2011
134
Padro de Codificao
Um padro de codificao deve ser adotado logo no incio do projeto; O padro pode definido internamente ou adotado um j pronto; A Sun tem o Code Conventions for the Java Programming Language ;
Prof. Ayrton Menitto Cinquini 135
2011
Padro de Codificao
No incio do projeto devem aparecer mais desvios; Tornar fcil o acesso aos padres;
Prof. Ayrton Menitto Cinquini 136
2011
Padro de Codificao
Quando interessante deve-se adaptar o padro aos costumes dos programadores. Dificuldades:
O padro em si no muito importante. De fato mais importante que todos adotem e utilizem o padro.
2011
137
Padro de Codificao
Coloque por ordem de importncia do mais importante para o menos. Indique o que essencial e o que seria desejvel mas no imprescindvel.
2011
139
Projeto Simples
Antes.....
2011
140
Projeto Simples
Proposta do XP:
Implementar apenas aquilo que j se sabe que realmente necessrio; Evitar trabalho especulativo e
Possibilitar implementao mais rpida -> feedback mais rpido.
2011
141
RITMO SUSTENTVEL
2011
142
Ritmo Sustentvel
Prazo total do projeto
Horas extras:
Maior insero de defeitos no projeto e cdigo devido a desateno; S por poucos dias.
Horas/dia Apenas ilustrativo
2011
143
Ritmo Sustentvel
O trabalho na indstria no exige criatividade na mesma intensidade que exigida para o desenvolvimento de software.
2011
144
Ritmo Sustentvel
Analisar o pagamento de horas extras; Estatsticas de erros custo de correes; Exemplos de outras empresas; Anlise de ausncias de funcionrios; Anlise de relatrios de demisses custo para reposio; Alvin Toffer, Domenico DeMasi e outros.
O CHEFE
Prof. Ayrton Menitto Cinquini 145
2011
Integrao Contnua
2011
146
Integrao Contnua
A integrao deve ser com a maior freqncia possvel diversas vezes por dia. Para isso importante manter baixo o tempo necessrio para fazer o build de todo o sistema.
2011
147
Releases Curtos
XP adota o desenvolvimento incremental com releases curtos. Em cada releases so entregues um conjunto de funcionalidades que representam valor bem definido para o cliente.
2011
148
Releases Curtos
Objetivos:
Acelerar o retorno do investimento; Possibilitar feedback rpido; Criar uma relao de confiana entre usurios e desenvolvedores;
2011
Ambiente de trabalho
Se voc no tiver um ambiente razovel para trabalhar, seu projeto no ter sucesso (Kent Beck)
Quadro(s) brancos (nunca so demais) Post-it Cadeiras giratrias Jogos Comida e caf Folhas em branco Privacidade
2011
150
Ambiente de Trabalho
Algumas diretrizes:
2011
151
Ambiente de Trabalho
Ambiente fsico adequado para trabalho altamente participativo; Mesas e cadeiras que permitam que duas pessoas trabalhem juntas;
Computadores velozes;
Rede rpida;
2011
152
Ambiente de Trabalho
+mquina fotogrfica digital Para apoiar discusses e debates Para modelagem em grupo
2011
153
Ambiente de Trabalho
Impactos Sociais
O que fazer quando um funcionrio no quer mudar do seu lugar conquistado aps longos anos?
2011
154
Documentao
Alguns projetos podem durar anos e nem sempre quem comeou fica at o final e... Para a manuteno eficiente e segura alguma documentao necessria.
2011
155
Documentao
Mas
Lembrar que documentao no o objetivo principal; Deve-se documentar apenas o necessrio para a manuteno; A documentao deve ser adequada, simples e apenas a necessria.
2011
156
Documentao
Documentao em excesso consome esforo e gera dificuldades para ser mantida atualizada e consistentes.
2011
157
Documentao
Quando documentar?
2011
158
Documentao
Poderia ser:
Estrias Testes de Unidade Testes de Aceitao Javadoc Modelo de Classes Modelo de Dados
2011
159
Documentao
Estrias
Testes de Unidade
Testes de Aceitao
2011
160
Documentao
Javadoc
Modelo de Classes
Pode ser gerada automaticamente com ferramenta de engenharia reversa do cdigo; Se for feita manualmente deve-se optar por uma documentao mais leve.
2011
161
Documentao
Modelo de Dados
De preferncia deve-se usar uma ferramenta para fazer a engenharia reversa das tabelas que compem o banco de dados.
Processos de Negcio
Acompanhamento Dirio
2011
162
Documentao
Acompanhamento do Projeto
Atualizado semanalmente
Informa:
Estrias que fazem parte de iterao corrente; Estrias j concludas; Problemas encontrados; Motivos de atrasos e Riscos.
Fotos (digitais)
2011
163
Releases Curtos
2011
164
2011
165
2011
166
Antes de adotar e implementar qualquer um dos Mtodos geis fundamental que avalie:
2011
167
polticas rotinas da empresa e processos de tomada de deciso, estratgias de soluo de problemas, prticas voltadas inovao, filtros de informao, relacionamentos interpessoais negociaes.
2011
168
Necessidades:
Um champion,
2011
169
Estar totalmente comprometidos com o projeto, trabalhar com esprito de colaborao, possuir o conhecimento necessrio,
2011
2011
171
Mtodos geis
2011
172
Lies Aprendidas
entretanto, deve-se ter em mente que quanto maior a equipe, maior a dificuldade de comunicao;
mas a experincia tcnica em desenvolvimento de software muito mais importante que a experincia prvia com os Mtodos geis;
2011
173
Lies Aprendidas
Um software crtico e de alta confiabilidade pode ser construdo com utilizao de MAs
2011
174
Lies Aprendidas
2011
175
2011
176
Disperso geogrfica
Subcontratao
Grandes projetos e grandes equipes
Gerao de componentes
2011
Quando no usar XP
Quando os programadores no esto dispostos a seguir (todas) as regras. Se (quase) todos os programadores do time so medocres.
2011
178
Quando no usar XP
2011
179
Portanto
2011
180
Mais Informaes
Extreme Programming, Teles, Vincius Manhes, novatec, 2004. www.agilealliance.org www.ime.usp.br/~xp www.extremeprogramming.org
2011
182
Prticas do XP
2011
183