Métodos Ágeis
de Desenvolvimento de
Software
Engenharia de Software Profa. Elisa Yumi Nakagawa 2. Semestre 2005
Material inicialmente elaborado por André Figueiredo e mantido por pesquisadores e colaboradores do Labes.
Conteúdo
Porque o desenvolvimento de software é uma atividade altamente complexa?
Como resolver esse problema?
Porque os processos atuais, algumas vezes, falham?
O que são os métodos ágeis?
The Manifesto For Agile Software Development Principais métodos
Características comuns
Domínio de aplicação de métodos ágeis
Porque criar software
é uma atividade complexa?
Alto índice de incerteza
Ferramenta volátil (tecnologia) Objetivo incerto (escopo) Tarefa envolvendo criatividade Dificuldade inerente
Totalmente dependente de pessoas
Capacidade individual
Capacidade de trabalho em grupo
No Silver Bullet
Como tentamos
resolver esse problema?
Do nada (anos 50 e 60) ...Desenvolvimento era, originalmente, uma atividade solitária e “simples” (gerenciável por uma única pessoa)
... Para o monumental (anos 70, 80 e 90) ...
Crise do software Aplicação de métodos, técnicas, ferramentas e processos de engenharia para o desenvolvimento de software
... Para o ágil (hoje)
Necessidade de entrega rápida e flexibilidade
Tipos de Processo
Existem dois tipos básicos de processos [Schwaber]
Processos Definidos
Dado um conjunto de entradas, pode-se definir as saídas com
razoável precisão
Controle feito com base no acompanhamento de um planejamento
inicial
Processos Empíricos
Considera a mudança e a incerteza como inevitável Controle é feito por acompanhamento freqüente e pequenos
ajustes
métodos atuais usam processos do tipo Definido, que não se aplicam “bem” ao desenvolvimento de todo tipo de software.
O que são Métodos Ágeis?
Nova safra de métodos baseados em
processos Empíricos.
Resultam de aproximadamente 10 anos
de “pesquisa de campo” de seus
principais mentores e líderes.
Formalização com a publicação do
“Manifesto for agile development”, em
fevereiro de 2001
Manifesto for agile development
We are uncovering better ways of developing software by doing it and helping others do it. Through this work, we have come to value:Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
That is, while there is value in the items on the right, we value the items on the left more. http://www.agilemanifesto.org
Índice de sucesso
Gráfico complexidade X índice de
sucesso (Scrum)
Reação flexível diante da mudança aumenta a probabilidade de sucesso.Complexidade baixa intermediária alta 0,1
0,9
métodos tradicionais métodos ágeis
Principais métodos, processos
ou abordagens
Extreme Programming (XP)
Feature Driven Development (FDD)
Scrum
Crystal Methods
Open Source Development Process
Adaptive Software Development (ASD)
Dynamic System Development Method
(DSDM)
Agile Modeling (AM)
Lean Development (LD)
Extreme Programming - XP
Práticas
Jogo do planejamento
Releases pequenos e integração contínua
Metáforas Design simples
Refactorings
Test first programming
Programação em pares Posse coletiva do código 40 horas por semana Cliente é parte da equipe
Padrões de código (Coding Standard)
Extreme Programming - XP
Princípios e valores
Comunicação Simplicidade Feedback Coragem QualidadeExtreme Programming - XP
Principais líderes
Kent Beck Ward Cunninghan Martin Fowler Ron JeffriesContribuições
Mais popular e que mais despertou interesse Mais estável para domínios específicos (times
Feature Driven Development
-FDD
Conceitos & Práticas
Cinco processos básicos Construa um modelo global
Crie um lista de características/funcionalidades
(features)
Planeje por características/funcionalidades Modele por características/funcionalidades Implemente por características/funcionalidades
Feature Driven Development
-FDD
Feature Driven Development
-FDD
Principais líderes
Peter Coad Jeff DeLuca
Contribuições
Processo definido e repetível
Foco explícito em modelagem (global e por
características/funcionalidade)
Escalabilidade
Scrum
Conceitos & Práticas
Scrum
Conceitos & Práticas
Abordagem usada para gerenciar o processo de
desenvolvimento de software em um ambiente volátil
Abordagem empírica baseada na flexibilidade, adaptabilidade e
produtividade
Os desenvolvedores definem as práticas, métodos e técnicas a
serem usadas no processo de implementação
Envolve freqüentes atividades de gerenciamento que têm por
objetivo identificar qualquer deficiência ou impedimento no processo de desenvolvimento ou nas práticas usadas.
Scrum
Principais líderes
Jeff Sutherland Ken Schwaber Mike BeedleContribuições
Reuniões diárias para coordenação e
colaboração
Auxilia a focar nas principais atividades de
Crystal Methods
Principais líderes
Alistair Cockburn
Contribuições
Família que inclui diferentes métodos, dos quais se deve selecionar o mais adequado para cada projeto
Além dos métodos, a abordagem Crystal inclui princípios para amarrar esse métodos de forma a sintonizá-los para um determinado projeto Cada método tem uma cor indicando a “dureza”
do método
Crystal Methods
Contribuições
Crystal sugere que se escolha a cor do método de acordo com o tamanho e criticalidade do projeto
Projetos grandes precisam de mais coordenação e métodos mais duros do que projetos pequenos
Os métodos da família Crystal podem ser usados com qualquer prática de
desenvolvimento, ferramenta, ou produto de trabalho
Características Comuns
Orientados a funcionalidades Método evolutivo e iterativo Foco na geração de código Arquitetura/Modelo evolutível Ciclos rápidos
Priorização por valor de negócio Testes unitários e revisão de código “Equipes poderosas”
Autonomia para decisão e auto-organização
Cliente altamente participativo
Domínio de aplicação de
métodos ágeis
De maneira geral, os métodos ágeis são
melhor aplicados em projetos com uma ou
mais das seguintes características:
Alta complexidade Prazos apertados
Requisitos voláteis ou pouco conhecidos Objetivos de negócio instáveis
Preferencialmente equipes pequenas e
médias
Iniciativas de uso dos métodos
ágeis com outros processos
A Rapid Development Process with UML – Armano, G.; Marchesi, M.A., ACM SIGAPP Applied Computing Review, New York, v.8, pp4-11, 2000
Making RUP Agile – Hirsch, M., in OOPSLA2002, pp1-8 Applying Agile Methods in Rapidly Changing
Environments – Kutschera, P.; Scäfer, S., jeckstein.com/papers/ Agile%20Methods%20-%20Steffen%20Schaefer%20&%20Peter%20Kutschera. pdf …..
Bibliografia
LivrosAmbler, Scott; Agile Modeling: Efective practices for Extreme Programming and the Unified Process; 2002
Beck, Kent; Extreme Programming Explained: Embrace change; 2000; Addison-wesley Beck, Kent and Martin Fowler; Planing XP; 2001;
Addison-wesley
Coad, Peter and Eric Lefebvre and Jeff DeLuca; Java modeling in color with UML; 1999; Prentice Hall
Scwaber, Ken and Mike Beedle; Agile Software Development with scrum; 2002; Prentice Hall
Bibliografia
Livros
Fowler, Martin; Refactoring; Dez/2000; Software Development
Fowler, Martin; Refactoring; Dez/2000; Software Development
Highsmith, Jim; Agile Software Development Ecosystems; 2002; Addison-Wesley
Cockburn, Alistair; Agile Software Development; 2002; Addison-Wesley
Cockburn, Alistair; Surviving OO projects; 2000; Addison-Wesley
Bibliografia
Artigos
Raymond, Eric Steven; The cathedral and the
bazaar; 1997; Linux Congress
Fowler, Martin; Put your process on a Diet;
Dez/2000; Software Development
Brooks, Frederick; No Silver Bullet; 1986;
Computer
Schwaber, Ken; The Agile Alliance
Revolution; Maio/2001