Conteúdo
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.
Como tentamos
resolver esse problema?
Porque criar software
é uma atividade complexa?
Alto índice de incerteza
volátil (tecnologia)
Objetivo incerto (escopo)
Tarefa envolvendo criatividade
Dificuldade inerente
era, originalmente, uma atividade
solitária e “simples” (gerenciável por uma única
pessoa)
Capacidade
individual
de trabalho em grupo
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
... 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
No Silver Bullet
Tipos de Processo
Totalmente dependente de pessoas
Capacidade
Do nada (anos 50 e 60) ...
Desenvolvimento
Ferramenta
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
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
1
Manifesto for agile development
Índice de sucesso
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
Gráfico complexidade X índice de
sucesso (Scrum)
Reação flexível diante
da mudança aumenta
a probabilidade de
sucesso.
0,9
That is, while there is value in the items on
the right, we value the items on the left more.
métodos ágeis
métodos tradicionais
0,1
http://www.agilemanifesto.org
baixa
intermediária
alta
Complexidade
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
Princípios e valores
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
Principais líderes
Comunicação
Kent
Simplicidade
Ward
Beck
Cunninghan
Martin Fowler
Ron Jeffries
Feedback
Coragem
Qualidade
Contribuições
Mais
popular e que mais despertou interesse
estável para domínios específicos (times
pequenos e alocados no cliente)
Mais
2
Feature Driven Development FDD
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
Principais líderes
Scrum
Conceitos & Práticas
Peter
Jeff
Coad
DeLuca
Contribuições
Processo
definido e repetível
explícito em modelagem (global e por
características/funcionalidade)
Escalabilidade
Foco
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
Schwaber
Mike Beedle
Ken
Contribuições
Reuniões
diárias para coordenação e
colaboração
Auxilia a focar nas principais atividades de
gerenciamento
3
Crystal Methods
Principais líderes
Alistair
Crystal Methods
Cockburn
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
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
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”
Cliente altamente participativo
Autonomia para decisão e auto-organização
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
…..
Contribuições
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
Bibliografia
Livros
Ambler,
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
4
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
Bibliografia
URL´s
www.controlcaos.com
www.dsdm.org
www.martinfowler.com
www.crystalmethodologies.org
www.agilemanifesto.org
www.xprogramming.com
www.xispe.com.br/index.html
www.agilemodeling.com
5
Download

Métodos Ágeis de Desenvolvimento de Software