Metodologias Ágeis Metodologias Ágeis Visão Geral Ciro Coelho 1/37 Metodologias Ágeis Introdução Primórdios do desenvolvimento de software: “code and fix”. A primeira alternativa: Processo disciplinado e detalhado Desenvolvimento de software predizível e eficiente Inspirado em outras disciplinas da área de engenharia. Ciro Coelho 2/37 Metodologias Ágeis Introdução Críticas freqüentes Ciro Coelho Burocráticas Não populares por imporem padrões rígidos Não serem tão bem sucedidas como deveriam Metodologias “heavyweight” ou pesadas 3/37 Metodologias Ágeis Introdução Surgimento de um novo grupo de metodologias Leves (“lightweight”) Flexíveis Ágeis Ciro Coelho 4/37 Metodologias Ágeis Métodos Preditivos vs. Adaptativos Preditivos Enfatiza o planejamento de ações em detalhe A equipe pode saber que funcionalidade e tarefas farão nas etapas seguintes no processo de desenvolvimento Mudanças podem obrigar a refazer todo o planejamento Adaptativos Enfatiza as mudanças e suas conseqüentes adaptações A equipe não sabe o que irá fazer a médio e longo prazo Problemas são encarados a medida que eles chegam Ciro Coelho 5/37 Metodologias Ágeis A “Aliança Ágil” http://www.agilealliance.org Organização sem fins lucrativos que ajuda indivíduos e organizações que utilizam abordagens ágeis para desenvolvimento de software Fundada por 17 consultores e especialistas em desenvolvimento de software Assinaram o “Manifesto Ágil” em 2001 Ciro Coelho 6/37 Metodologias Ágeis A “Aliança Ágil” Kent Beck Mike Beedle Arie van Bennekum Alistair Cockburn Ward Cunningham Martin Fowler James Grenning Jim Highsmith Ciro Coelho Andrew Hunt Ron Jeffries Jon Kern Brian Marick Robert Martin Steve Mellor Ken Schwaber Jeff Sutherland Dave Thomas 7/37 Metodologias Ágeis O “Manifesto Ágil” http://www.agilemanifesto.org “Estamos descobrindo melhores maneiras de se desenvolver software, fazendo isto e ajudando os outros a fazer isto. Através deste trabalho, nós passamos a valorizar: Indivíduos e interações mais que processos e ferramentas; Software funcionando mais que documentação abrangente; Colaboração com o cliente mais que negociação de contratos; Responder à mudança mais que seguir um plano. Ou seja, apesar de existir valor nos itens à direita, valorizamos mais os itens à esquerda” Ciro Coelho 8/37 Metodologias Ágeis Metolodogias Ágeis - Exemplos eXtreme Programming (XP) Scrum FDD Agile Modeling Lean Development ASD Crystal Clear OpenUP ... Ciro Coelho 9/37 Metodologias Ágeis Classificação Ciro Coelho 10/37 Metodologias Ágeis Características Gerais Ciclo de vida iterativo e incremental Mais adequadas a pequenas equipes Comunicação constante e informal Planejamento de curto prazo Práticas devem ser seguidas de forma rigorosa Ciro Coelho 11/37 Metodologias Ágeis Características Gerais Procuram minimizar riscos desenvolvendo software em pequenos espaços de tempo (iterações) Cada iteração é como um pequeno projeto Planejamento, requisitos, projeto, codificação, testes... Objetivo de cada iteração Produzir componentes de software Arquitetura vai sendo desenhada a partir da refatoração dos componentes Enfatizam comunicação “cara a cara” em relação à documentação Ciro Coelho 12/37 Metodologias Ágeis Características específicas Scrum Ênfase no gerenciamento de projetos Times auto-gerenciáveis Medição diária de progresso Evita seguir passos pré-definidos Reuniões diárias Demonstração do sistema ao final de cada iteração Ênfase em práticas de desenvolvimento Ênfase na colaboração Criação de software o mais rapidamente possível Valores: comunicação, feedback, simplicidade e coragem 12 práticas-chave XP Ciro Coelho 13/37 Metodologias Ágeis Características específicas Crystal Criado por Alistair Cockburn Família de métodos. Escolha baseada na criticidade do sistema e número de pessoas na equipe Ênfase nas pessoas e comunicação entre elas Agile Modeling Criado por Scott Ambler Princípios e práticas para modelagem e análise de requisitos “Low-tech, high-touch”:modelos despojados com foco em entendimento e comunicação, ao invés de documentação Práticas encorajam velocidade, simplicidade e fluxo criativo Ciro Coelho 14/37 Metodologias Ágeis Características específicas ASD - Adaptive Software Development Criado por Jim Highsmith Inspirado pelas área de sistemas adaptativos e RAD (Rapid Application Development) DSDM- Dynamic Solutions Delivery Method Criado por 16 especialistas em RAD Mantido por um consórcio FDD – Feature Driven Development Criado por Jeff De Luca, com colaboração de Peter Coad Ênfase em requisitos Ciro Coelho 15/37 Metodologias Ágeis Características específicas Lean Development Criado por Mary e Tom Poppendieck Baseado em técnicas “lean” adotadas por outras indústrias Ênfase na redução do desperdício Pragmatic Programming Criado por Andy Hunt e Dave Thomas Conjunto de práticas de desenvolvimento OpenUP Versão ágil e gratuita do RUP Ciro Coelho 16/37 Metodologias Ágeis Críticas Não provê documentação necessária Dificuldades “após o projeto” Funciona apenas para equipes experientes Práticas disciplinadas e rigorosas Pouca atenção ao projeto de software (arquitetura) Em geral, a arquitetura é definida “de baixo pra cima” Requer uma grande mudança cultural na organização para ser adotado Ex.1: necessidade do cliente fazer parte da equipe Ex.2: Patrocinadores do projeto querem saber exatamente o que será feito e quando Ciro Coelho 17/37 Metodologias Ágeis Quando usar o quê? Metodologias ágeis Metodologias preditivas Projetos pouco críticos Projetos altamente críticos Equipe experiente Equipe iniciante Com mudanças constantes Com poucas mudanças Pequena equipe (≤ 10 ) Equipes maiores ( ≥ 20) Equipe co-localizada Equipe distribuída Cultura de adaptação Cultura de controle Ciro Coelho 18/37 Metodologias Ágeis Metodologias Ágeis Motivação Ciro Coelho 19/37 Metodologias Ágeis Números, números, números Pesquisas realizadas em 2006 e 2007 por Scott Ambler mostram que: Métodos ágeis estão sendo muito utilizados Métodos ágeis estão sendo utilizados com sucesso Ciro Coelho 20/37 Metodologias Ágeis Números, números, números A sua organização adota uma ou mais técnicas ágeis? No 31% Yes 69% Ciro Coelho 21/37 Metodologias Ágeis Números, números, números Só para os que não adotaram: quando pretendem adotar? 4% 8% 12% 46% 9% 12% <3 Months > 24 Months Ciro Coelho 3-6 Months Never 6-12 Months Don' Know 9% 12-24 Months 22/37 Metodologias Ágeis Números, números, números Adoção de técnicas ágeis Don't Know When 105 Never 28 > 24 Months 22 12-24 Months 21 Within Year 57 Currently Doing Agile 539 0 Ciro Coelho 100 200 300 400 500 600 23/37 Metodologias Ágeis Números, números, números Qual a metodologia ágil adotada? Other 171 Scrum 460 FDD 502 XP DSDM Crystal Clear AUP Agile MSF Ciro Coelho 954 26 91 216 191 24/37 Metodologias Ágeis Números, números, números % de sucesso de projetos ágeis 5% 6% 12% 44% 33% 90%+ Ciro Coelho 75-90% 50-74% 25-49% >25% 25/37 Metodologias Ágeis Números, números, números % de sucesso de projetos ágeis (por distribuição da equipe) 25-49% 50-74% 21,5 9,5 12,1 18,5 75-90% 27,7 29,1 30 32,7 20,1 90%+ 33,1 44,8 0 10 All Ciro Coelho 24,6 9,2 4,8 5,7 8,5 7,2 4,1 4,7 >25% 20 Co-Located 30 40 Not Co-Located 51,7 50 60 Offshoring 26/37 Metodologias Ágeis Números, números, números Como as metodologias ágeis afetaram a produtividade? 0%4% 23% 32% Much Lower Somewhat Lower No Change Somewhat Higher Much Higher Don't Know 8% 33% Ciro Coelho 27/37 Metodologias Ágeis Números, números, números Como as metodologias ágeis afetaram a produtividade? (sem os que não souberam responder) 12% 1% 5% 34% Much Lower Somewhat Lower No Change Somewhat Higher Much Higher 48% Ciro Coelho 28/37 Metodologias Ágeis Números, números, números Como as metodologias ágeis afetaram a qualidade? 0% 2% 21% 32% Much Lower Somewhat Lower No Change Somewhat Higher Much Higher Don't Know 13% Ciro Coelho 32% 29/37 Metodologias Ágeis Números, números, números Como as metodologias ágeis afetaram a qualidade? (sem os que não souberam responder) 1%2% 19% 31% Much Lower Somewhat Lower No Change Somewhat Higher Much Higher 47% Ciro Coelho 30/37 Metodologias Ágeis Números, números, números Como as metodologias ágeis afetaram o custo? 2% 14% 36% 34% Much Higher Somewhat Higher No Change Somewhat Lower Much Lower Don't Know 1% 13% Ciro Coelho 31/37 Metodologias Ágeis Números, números, números Como as metodologias ágeis afetaram o custo? (sem os que não souberam responder) 2% 3% 20% 22% Much Higher Somewhat Higher No Change Somewhat Lower Much Lower 53% Ciro Coelho 32/37 Metodologias Ágeis Números, números, números Como as metodologias ágeis afetaram a satisfação dos stakeholders? 1% 1% 25% 35% Much Lower Somewhat Lower No Change Somewhat Higher Much Higher Don't Know 11% Ciro Coelho 27% 33/37 Metodologias Ágeis Números, números, números Como as metodologias ágeis afetaram a satisfação dos stakeholders? (sem os que não souberam responder) 1%2% 17% 39% Much Lower Somewhat Lower No Change Somewhat Higher Much Higher 41% Ciro Coelho 34/37 Metodologias Ágeis Números, números, números Tamanho das iterações (em %) No Iterations 1,4 > 8 Weeks 1,9 7-8 Weeks 1,9 6,6 5-6 Weeks 4 Weeks 21 12,5 3 Weeks 2 Weeks 32,6 17 1 Week < 1 Week Ciro Coelho 5 35/37 Metodologias Ágeis Números, números, números Tamanho das equipes 2 5 3 6 6 200+ 101 to 200 51-100 11 30 21 to 50 41 73 11 to 20 90 144 135 6 to 10 1 to 5 135 0 50 100 Attempt Ciro Coelho 150 165 200 Success 36/37 Metodologias Ágeis Referências AmbySoft: www.ambysoft.com Agile Data: www.agiledata.org Larman, Craig. Agile and Iterative Development. Addison-Wesley, 2003 Ciro Coelho 37/37