Post on 17-Dec-2014
description
Metodologias Ágeis
Achiles Camilo
PMI-ACP, CAPM, CSM, MCTS
Diretor Adjunto de Certificação
Uma breve introdução
Como tudo começou?
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;
• Orçamentos estourados;
• Baixa qualidade;
• Hardware caro;
• Não atendiam os requisitos;
• E isso quando era entregue!!
There is “No Silver Bullet...”
• Em 86, Brooks lançou a célebre frase, onde
explica um pouco o “segredo” dos softwares;
E a coisa foi ficando séria...
• Ferramentas CASE;
• Modelos de Processo (CMM);
• Início da criação de Métodos;
– Disciplina;
– Profissionalismo!
E chegou a tal da Internet!
• Trocas de emails;
• Fóruns de discussão;
• Disseminação do conhecimento;
Já ouviram falar em cachoeira?
Como assim?
• Sem mais documentação???
• Chega de diagramas???
• Agora é só código???
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
Agile Manifesto!!
• 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...
E se popularizou \o/
• 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 a suas necessidades, mas não
modificados;
Como assim?
• 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...
Métodos e Técnicas
Técnicas
• 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”!
Post Its!! (CardWall)
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;
Iterações
• No contexto ágil, todas as iterações são
“timeboxes”, ou seja, todos são períodos de tempo
pré-determinados;
• Auxiliam na segmentação do trabalho;
• Melhoram a gestão e o controle das entregas;
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;
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;
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;
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;
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;
Estimativas
• Medidas:– Pontos de História (Sequencia Fibonacci);– Velocidade do Time;
• Técnicas:– Planning Poker;– Técnica Delphi;– Comparação;
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!
Histórias de Usuário
• 3 C’s– Cartão– Conversa– Confirmação
• INVEST– Independente– Negociável– Estimável– Pequena– Testável
Histórias de Usuário
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!
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;
Métodos
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;
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;
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;
XP (eXtreme Programming)
• 5 Valores:
– Comunicação;– Coragem;– Feedbacks;– Respeito;– Simplicidade;
• 4 Práticas:
– Codificar;– Testar;– Escutar;– “Modelar”;
XP (eXtreme Programming)
• 12 Princípios:
– Feedbacks rápidos;– Simplicidade assumida;– Mudanças incrementais;– Abraçar mudanças;– Qualidade de trabalho;– Investimentos iniciais
baixos;
– Experimentos concretos;– Comunicação honesta;– Responsabilidade;– Adaptação ao local de
trabalho;– Poucas “viagens”;– Indicadores honestos;
XP (eXtreme Programming)
• 12 Práticas:
– Jogo do Planejamento;– Pequenas entregas;– Metáforas;– Modelagens simples;– Testes;– Refatorações;
– Programação em par;– Posse coletiva;– Integração contínua;– 40 h/semana;– Clientes presentes;– Padrões de código;
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;
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;
Kanban
• Também originado de processos industrias, tem
como foco Gerir a Demanda de trabalho;
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;
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;
Gestão de ProjetosÁgeis
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;
Iniciação
Monitoramento & Controle
Planejamento
Execução
Encerramento
Integrando o PMBoK com o Agile
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;
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...
Dúvidas?
Achiles Camilo
PMI-ACP, CAPM, CSM, MCTS
Diretor Adjunto de Certificação
http://br.linkedin.com/in/achilescamiloachiles.camilo@pmigo.org.br