Metodologias Ágeis Visão Geral
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.
Introdução Críticas freqüentes Burocráticas Não populares por imporem padrões rígidos Não serem tão bem sucedidas como deveriam Metodologias “heavyweight” ou pesadas
Introdução Surgimento de um novo grupo de metodologias Leves (“lightweight”) Flexíveis Ágeis
Métodos Preditivos vs. Adaptativos 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
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
A “Aliança Ágil” Kent Beck Mike Beedle Arie van Bennekum Alistair Cockburn Ward Cunningham Martin Fowler James Grenning Jim Highsmith Andrew Hunt Ron Jeffries Jon Kern Brian Marick Robert Martin Steve Mellor Ken Schwaber Jeff Sutherland Dave Thomas
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”
Metolodogias Ágeis - Exemplos eXtreme Programming (XP) Scrum FDD Agile Modeling Lean Development ASD Crystal Clear OpenUP ...
Classificação
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
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
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 XP Ê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
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
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
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
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
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
Metodologias Ágeis Motivação
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
Números, números, números A sua organização adota uma ou mais técnicas ágeis?
Números, números, números Só para os que não adotaram: quando pretendem adotar?
Números, números, números Adoção de técnicas ágeis
Números, números, números Qual a metodologia ágil adotada?
Números, números, números % de sucesso de projetos ágeis
Números, números, números % de sucesso de projetos ágeis (por distribuição da equipe)
Números, números, números Como as metodologias ágeis afetaram a produtividade?
Números, números, números Como as metodologias ágeis afetaram a produtividade? (sem os que não souberam responder)
Números, números, números Como as metodologias ágeis afetaram a qualidade?
Números, números, números Como as metodologias ágeis afetaram a qualidade? (sem os que não souberam responder)
Números, números, números Como as metodologias ágeis afetaram o custo?
Números, números, números Como as metodologias ágeis afetaram o custo? (sem os que não souberam responder)
Números, números, números Como as metodologias ágeis afetaram a satisfação dos stakeholders?
Números, números, números Como as metodologias ágeis afetaram a satisfação dos stakeholders? (sem os que não souberam responder)
Números, números, números Tamanho das iterações (em %)
Números, números, números Tamanho das equipes
Referências AmbySoft: www.ambysoft.com Agile Data: www.agiledata.org Larman, Craig. Agile and Iterative Development. Addison-Wesley, 2003