O documento apresenta uma breve introdução sobre metodologias ágeis, desde como surgiram até os principais métodos e técnicas ágeis. É descrita a crise de software dos anos 1980 e como as metodologias ágeis surgiram para resolver esses problemas, com destaque para o Manifesto Ágil criado em 2001. Os principais métodos ágeis como Scrum, XP e Kanban são resumidos, assim como várias técnicas como histórias de usuário, daily meetings e programação em par.
3. Engenharia de Software
• No final dos 50 surgiu o termo Engenharia de
Software;
• Dessa época até meados dos anos 80, foi a
famosa Crise de Software:
• Prazos não cumpridos;
• Hardware caro;
• Orçamentos estourados;
• Não atendiam os requisitos;
• Baixa qualidade;
• E isso quando era entregue!!
4. There is “No Silver Bullet...”
• Em 86, Brooks lançou a célebre frase, onde
explica um pouco o “segredo” dos softwares;
5. E a coisa foi ficando séria...
• Ferramentas CASE;
• Modelos de Processo (CMM);
• Início da criação de Métodos;
– Disciplina;
– Profissionalismo!
6. E chegou a tal da Internet!
• Trocas de emails;
• Fóruns de discussão;
• Disseminação do conhecimento;
9. Como assim?
• Sem mais documentação???
• Chega de diagramas???
• Agora é só código???
10. The Agile Alliance surge!!
• De 11 a 13 de Fevereiro de 2001 um grupo se
intitulado “The Agile Alliance” se reuniram e criaram
algo simples;
• O Agile Manifesto pode ser visto através do site:
http://agilemanifesto.org
12. E se popularizou o/
• Desde então vários evangelistas se espalharam pelo mundo;
• Livros, artigos, fóruns, comunidades e uma infinidade de meios
são utilizados para expor essa 8ª maravilha ao mundo;
• Mas isso nos traz a um pequeno probleminha:
– Cada empresa, cada equipe e cada pessoa entende Agile
como acha conveniente
– E temos empresas/equipes/pessoas ágeis que não são tão
ágeis assim...
13. Como assim?
• Como ser um verdadeiro “agilista” então?
• Simples!! Basta utilizar as técnicas e métodos ágeis
como eles são...
• Eles são feitos para serem customizados e se
adaptarem
modificados;
a
suas
necessidades,
mas
não
14. Métodos e Técnicas
• Técnicas ágeis são atividades que buscam maneiras
de colocar na prática o que os princípios ágeis
propõe:
– TDD, Programação em par, Reuniões diárias...
• Um conjunto de técnicas agrupadas para facilitar o
desenvolvimento de Software são os métodos:
– Scrum, XP, Crystal, DSDM, Lean, Kanban...
16. Post Its!! (CardWall)
• Quem usa Post It pra anotar as coisas?
• Uma das técnicas mais clássicas e mais notadas;
• Gera um efeito visual marcante;
• Motiva a famosa “Gestão a Vista”!
17. Baklogs
• Backlog nada mais é do que o escopo de trabalho;
• Tudo que tem que ser feito, todos os “requisitos
funcionais” do sistema estão presentes no Backlog;
• Podem ser divididos entre:
– Backlog do Produto;
– Backlog de Sprints;
19. Entregas Constantes
• No mundo ágil, todas as entregas são funcionais!!
• E devem ser realizadas frequentemente para captar
os feedbacks dos stakeholders sobre o produto;
• Auxiliam para melhor entender as necessidades do
cliente;
20. Integração Contínua
• Todo desenvolvimento realizado entre os membros
da equipe devem ser testados quanto a integração
com todo o software; (Build Automático)
• Para toda entrega gerada, sempre deve haver uma
preocupação com a Integração com os demais
componentes do Sistema;
21. TDD (Desenvolvimento Orientado a Teste)
• Teste primeiro!!
• Vai escrever um método? O teste unitário dele já
está pronto?
• Antes de qualquer linha de código, deve haver uma
muitas linhas de testes;
22. Stand Up (Reuniões em pé)
• Reuniões em pé contendo os membros da equipe;
• Geralmente
duram
15
minutos
e
devem
ser
discutidos os problemas que impedem o avanço da
equipe;
• A frequência é determinada pela equipe;
23. Pair Programming (Programação em par)
• Por que em par???
• Auxilia nos testes (TDD, lembra?);
• Evita cometer pequenos erros;
• Evita o tédio/ócio, e aumenta a produtividade;
24. Estimativas
• Medidas:
– Pontos de História (Sequencia Fibonacci);
– Velocidade do Time;
• Técnicas:
– Planning Poker;
– Técnica Delphi;
– Comparação;
25. Conceito de “Done” (Pronto)
• Só pode ser considerado “Pronto” se for testado e
aprovado!
• Já testou? Não... Então não está pronto!
• Cliente aceitou? Não... Então não está pronto!
28. Refactoring (Refatoração)
• Princípio básico de Melhoria Contínua aplicada ao
código;
• Após um método ser testado com êxito, ele está apto
a ser refatorado, ou seja, ele deverá ser melhorado,
porém, sem perder a funcionalidade;
• Recomendação: Código Limpo, Robert Martin!
29. Equipes Auto Gerenciáveis
• Com a equipe em comum acordo sobre o backlog a
ser trabalhado, assume-se que todos sabem seus
papéis;
• Em uma equipe ágil madura, os “líderes” resolvem os
impedimentos da equipe, pois a distribuição de
atividades e relacionamento interno são resolvidos
pelos próprios membros;
31. Scrum
• Metodologia ágil mais famosa;
• Baseada em Sprints de 2 a 4 semanas;
• Possui 2 papéis críticos, além da equipe do projeto:
– Scrum Master;
– Product Owner;
32. Scrum
• Utiliza as técnicas:
– Backlog
• Produto;
• Sprint;
– Reunião em pé diária;
• O que foi feito?
• O que vou fazer?
• Quais os problemas?
– Gráficos de Burndown;
33. Scrum
• Possui 3 reuniões chaves:
– Sprint Planning (Planejamento do Sprint)
• Planejamento do o backlog do Sprint;
– Sprint Review (Revisão do Sprint)
• Valida as entregas;
• Avalia-se a continuidade do projeto;
– Sprint Retrospective (Retrospecita do Sprint)
• Coleta-se as lições aprendidas durante o
Sprint;
35. XP (eXtreme Programming)
• 12 Princípios:
– Feedbacks rápidos;
– Experimentos concretos;
– Simplicidade assumida;
– Comunicação honesta;
– Mudanças incrementais;
– Responsabilidade;
– Abraçar mudanças;
– Adaptação ao local de
trabalho;
– Qualidade de trabalho;
– Investimentos iniciais
baixos;
– Poucas “viagens”;
– Indicadores honestos;
36. XP (eXtreme Programming)
• 12 Práticas:
– Jogo do Planejamento;
– Programação em par;
– Pequenas entregas;
– Posse coletiva;
– Metáforas;
– Integração contínua;
– Modelagens simples;
– 40 h/semana;
– Testes;
– Clientes presentes;
– Refatorações;
– Padrões de código;
37. Lean
• Baseado totalmente no modelo Toyota de Produção,
é uma adaptação do “Lean Manufacturing” para
software;
• Possui 22 técnicas recomendadas para uso;
• Altamente escalável e pode ser “acoplada” a outras
metodologias;
38. Lean
• 7 Princípios:
– Eliminar o desperdício;
– Amplificar o aprendizado;
– Decidir o mais tarde possível;
– Entregar o mais cedo possível;
– Fortalecer o time;
– Construir integrações;
– Ver sempre como um todo;
40. Kanban
• 4 Princípios:
– Comece com o que você faz hoje;
– Faça mudanças evolutivamente;
– Respeite o processo, os papéis, as responsabilidades
e os títulos;
– Encoraje atos de liderança em todos os níveis;
41. Kanban
• 6 Práticas:
– Visualize;
– Limite o WIP (Trabalho em Processo);
– Gerencie o fluxo;
– Tenha políticas explícitas;
– Implemente ciclos de feedback;
– Melhore colaborativamente, evolua experimentalmente;
43. Gerenciamento de Projetos é mais fácil do
que parece
• Em processos ad hoc, temos a Execução;
• Por necessidade, “descobriram” que era interessante termos
um Monitoramento e Controle do projeto;
• Com o passar do tempo, aprendemos a Planejar e a Iniciar o
projeto consultando uma base histórica
• E tudo isso se Encerra no final;
44. Integrando o PMBoK com o Agile
Monitoramento
& Controle
Iniciação
Planejamento
Encerramento
Execução
45. E o Gerente de Projeto... Como que fica?
• Existe sim lugar para o Gerente de Projeto em um projeto ágil;
• Existem vários papéis de lideranças (Coachs, Scrum Masters
ou qualquer outro), e as ações desempenhadas para o sucesso
do projeto são praticamente as mesmas;
• Mas se partimos do princípio que a equipe deve escolher o seu
“líder”, ainda assim esse papel pode coexistir com o GP;
46. Saibam... nós não estamos sozinhos ;)
• O PMI possui a Agile Community of Practice
• Há também a Agile Alliance
• Comunidade Ágil do InfoQ
• Comunidades específicas
– Scrum Alliance / Lean Community / Scum.org...