Buscar

Engenharia de software I Unid III

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 32 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 32 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 32 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

86
AD
S 
- 
Re
vi
sã
o:
 V
al
ér
ia
/J
ul
ia
na
 -
 D
ia
gr
am
aç
ão
: F
ab
io
 -
 2
5/
04
/2
01
4
Unidade III
Unidade III
5 OS MODELOS E MÉTODOS ÁGEIS
5.1 Considerações e conceitos 
Os métodos ágeis, desde seu surgimento, na década de 1990, têm sido apontados como uma 
alternativa aos modelos clássicos ou tradicionais para o desenvolvimento de software. Dessa forma, 
discutem-se, há muito tempo, as diferenças e as semelhanças entre essas duas abordagens, e algumas 
características têm sido apresentadas para definir suas aplicações aos processos de software.
As abordagens tradicionais são consideradas pelos seguidores dos métodos ágeis como soluções 
complexas, pesadas ou fortemente calcadas no planejamento. Com certeza, a prática mostra que elas 
nem sempre conseguem atender aos projetos em que há muitas mudanças ao longo do desenvolvimento 
e quando não existe muita clareza nos objetivos e soluções que deverão ser implementados.
Como atender ao ambiente extremamente dinâmico que as organizações estão vivendo e responder 
rapidamente às demandas e expectativas do mercado e dos clientes? É para responder a essas indagações 
que surgiram os métodos ou modelos ágeis, com suas propostas inovadoras na forma de se construir 
software.
Uma definição consagrada de método ágil ou desenvolvimento ágil de software é: conjunto de 
atividades, métodos ou processos de desenvolvimento de software. Outra definição muito comentada 
seria: o desenvolvimento ágil, tal como qualquer processo de software tradicional, fornece uma estrutura 
conceitual e um conjunto de práticas para projetos de software (COSTA et al., 2013; AMBLER, 2004).
Os métodos ágeis originaram-se a partir da década, de 1990 e a principal razão apontada era o 
fato de que o modelo em cascata ou modelo clássico era visto como extremamente burocrático, lento 
e contraditório em relação à forma usual de os engenheiros de software realizarem seus trabalhos 
com eficiência. Têm muito em comum com as técnicas de desenvolvimento rápido de aplicação, RAD, 
da década de 1980, sugeridas por James Martin, Steve McConnell, entre outros autores. Mas o que 
propunha o desenvolvimento RAD?
•	 o	RAD	usa	o	mínimo	de	planejamento	em	favor	de	uma	rápida	prototipagem;
•	 o	planejamento	é	intercalado	com	a	escrita	do	software;
•	 geralmente,	a	falta	de	um	pré-planejamento	extensivo	permite	que	o	software seja escrito muito 
mais rapidamente;
Janete
Underline
Janete
Underline
Janete
Underline
Janete
Underline
87
AD
S 
- 
Re
vi
sã
o:
 V
al
ér
ia
/J
ul
ia
na
 -
 D
ia
gr
am
aç
ão
: F
ab
io
 -
 2
5/
04
/2
01
4
ENGENHARIA DE SOFTWARE I
•	 torna	mais	fácil	aceitar	mudanças	de	requisitos	ao	longo	do	processo;
•	 é	uma	metodologia	que	inclui	o	desenvolvimento	iterativo	e	a	prototipagem	de	software;
•	 é	uma	combinação	de	várias	técnicas	estruturadas,	especialmente,	da	engenharia	de	informação,	
que é dirigida por dados, com técnicas de prototipagem para acelerar o desenvolvimento de 
sistemas;
•	 as	técnicas	estruturadas	e	a	prototipagem	são	usadas	para	a	definição	dos	requisitos	dos	usuários	
e para o design do sistema final.
Recentemente, a empresa americana Ambysoft fez uma pesquisa com a intenção de verificar como 
o mercado vê de que forma os times ágeis agregam valor ao cliente, e os resultados são apresentados 
na figura a seguir.
Trabalhando e produzindo software
Debates regulares com stakeholders
Identificação dos stakeholders e metas
Consideração da usabilidade
Definição do pronto (feito)
Melhoria do processo de negócio
Documentação de apoio (suporte)
Início do projeto
Mudança de pessoal
88%
74%
71%
70%
67%
58%
48%
40%
19%
Figura 23 – Como os times ágeis agregam valor aos stakeholders
O objetivo da pesquisa era explorar como as equipes ágeis adotaram os critérios ágeis, e as respostas 
da figura anterior, especificamente, questionavam como os times estão agregando valor ao cliente ou 
interessado.
Os resultados mostram, pelos percentuais, que os times consideram que o fator mais importante 
na entrega de valor ao cliente é produzindo software (88%). Todavia, outros fatores também 
foram bem-avaliados, como o debate regular com o cliente, a identificação dos objetivos dos 
clientes etc.
É interessante notar que poucos consideram que o início do projeto e mudanças de pessoal são 
fatores relevantes na entrega de valor ao cliente.
88
AD
S 
- 
Re
vi
sã
o:
 V
al
ér
ia
/J
ul
ia
na
 -
 D
ia
gr
am
aç
ão
: F
ab
io
 -
 2
5/
04
/2
01
4
Unidade III
 Observação
Outras quatro questões foram colocadas na pesquisa: 
1) A equipe está validando o seu próprio trabalho? 
2) A equipe trabalha em estreita colaboração com os seus stakeholders?
3) A equipe se organiza?
4) O time melhorou seu processo?
Essas questões foram embasadas nos princípios dos métodos ágeis.
A história dos métodos ágeis se inicia formalmente em fevereiro de 2001, quando membros 
proeminentes da comunidade de software se reuniram em Snowbird (The Lodgeat Snowbirdski Resort, 
em Utah) e adotaram o nome métodos ágeis.
De acordo com Pressman (2006, p. 52), “nasceu o Manifesto Ágil, documento que reúne os princípios 
e as práticas desse paradigma de desenvolvimento”. 
Uma das observações mais importantes, ainda, na atualidade, é a que diz que os métodos ágeis 
são caracterizados como o oposto de metodologias guiadas pelo planejamento, ou denominadas 
disciplinadas ou preditivas. 
O manifesto contém quatro valores fundamentais:
•	 os	indivíduos	e	suas	interações,	mais	que	procedimentos	e	ferramentas;	
•	 o	funcionamento	do	software, mais que documentação abrangente; 
•	 a	colaboração	com	o	cliente,	mais	que	negociação	de	contratos;
•	 a	capacidade	de	resposta	a	mudanças,	mais	que	seguir	um	plano	preestabelecido.
Esses quatro valores, até os dias de hoje, provocam muitas discussões calorosas, e muitos especialistas 
consideram praticamente impossível a aplicação prática de todos esses valores na sua essência. 
Entretanto, a maioria dos métodos ágeis tenta minimizar o risco do desenvolvimento de software ou 
batalhar para eliminar a “crise do software” da seguinte maneira:
•	 usando	ciclos	 curtos	de	 tempo,	 chamados	de	 iteração,	 sprints etc. que vão de poucos até, no 
máximo, 30 dias;
•	 cada	iteração	ou	sprint, ou ciclo, é como um projeto de software em miniatura e inclui todas as 
tarefas necessárias para implantar o mini-incremento da nova funcionalidade:
Janete
Underline
Janete
Underline
Janete
Underline
Janete
Underline
Janete
Highlight
Janete
Underline
Janete
Underline
89
AD
S 
- 
Re
vi
sã
o:
 V
al
ér
ia
/J
ul
ia
na
 -
 D
ia
gr
am
aç
ão
: F
ab
io
 -
 2
5/
04
/2
01
4
ENGENHARIA DE SOFTWARE I
— planejamento, análise de requisitos, design, codificação, teste e documentação;
— não necessariamente documentados totalmente.
•	 métodos	ágeis	enfatizam	a	comunicação	em	tempo	real,	preferencialmente,	face	a	face,	no	lugar	
de documentos escritos;
•	 a	 partir	 dos	 valores	 do	Manifesto Ágil, também foram definidos os chamados Princípios dos 
Métodos Ágeis, que são:
— garantir a satisfação do cliente/usuário, entregando rapidamente, continuamente e 
adiantadamente softwares com valor agregado e funcionando; 
— softwares funcionando são entregues frequentemente (em dias, semanas, em vez de meses); 
— softwares funcionais são a principal medida de progresso do projeto; 
— até mesmo mudanças tardias de escopo no projeto são bem-vindas;
— cooperação constante (diariamente) entre pessoas que entendem do negócio e desenvolvedores; 
— bons projetos surgem por meio deindivíduos motivados, em uma relação de confiança; 
— simplicidade de projetos; 
— rápida adaptação às mudanças;
— transmissão de informações por meio de conversa face a face;
— em intervalos regulares, a equipe reflete sobre como se tornar mais eficaz e, então, refina e 
ajusta seu comportamento. 
•	 os	 métodos	 ágeis	 são,	 muitas	 vezes,	 confundidos	 com	 o	 modelo	 codifica-remenda	 no	
desenvolvimento de software, principalmente, em razão de:
— o método codifica-remenda ser a ausência de metodologias de desenvolvimento de software;
— essa forma de trabalho parecer semelhante à maneira pela qual as pessoas (times) utilizam os 
métodos ágeis.
Outro fator importante a se analisar é a aplicabilidade dos métodos ágeis que, em geral, pode ser 
examinada de múltiplas perspectivas: 
•	 da	 perspectiva	 do	 produto:	 os	 métodos	 ágeis	 são	 mais	 adequados	 quando	 os	 requisitos	 são	
instáveis (mudam rapidamente); 
Janete
Underline
Janete
Underline
Janete
Underline
Janete
Underline
90
AD
S 
- 
Re
vi
sã
o:
 V
al
ér
ia
/J
ul
ia
na
 -
 D
ia
gr
am
aç
ão
: F
ab
io
 -
 2
5/
04
/2
01
4
Unidade III
•	 da	perspectiva	organizacional:	a	aplicabilidade	do	método	ágil	pode	ser	expressa	examinando-se	
três dimensões-chave da organização: cultural, pessoal e de comunicação. 
O quadro a seguir mostra uma comparação do ambiente ideal para os processos de software, tanto 
os ágeis quanto os clássicos ou tradicionais.
Quadro 4 – Comparação do ambiente ideal para os processos de software
Desenvolvimento ágil Desenvolvimento orientado ao planejamento (métodos clássicos)
Baixa criticidade do software Alta criticidade do software
Desenvolvedores seniores Desenvolvedores juniores (equipes mistas)
Mudanças frequentes de requisitos Baixa mudança nos requisitos 
Pequeno número de desenvolvedores Grande número de desenvolvedores 
Cultura que tem sucesso no caos Cultura que procura a ordem por meio do planejamento
Com relação ao gerenciamento de projetos, os métodos ágeis diferem largamente dos métodos 
tradicionais no que diz respeito à forma pela qual são gerenciados, mas alguns métodos ágeis são 
complementados com guias para direcionar o gerenciamento do projeto, embora nem todos sejam 
aplicáveis. Contudo, diversos autores consagrados da engenharia de software fazem críticas ao método 
de desenvolvimento ágil:
•	 esse	método	é,	algumas	vezes,	criticado	como	codificação	cowboy (termo que indica uma forma 
não organizada de trabalho);
•	 o	início	da	programação	extrema	(XP)	soava	como	controverso	e	dogmático,	como	a	programação	
por pares e o projeto contínuo; alguns princípios dessa programação não foram fáceis de entender 
e aplicar à cultura vigente;
Muitas dessas críticas, contudo, têm sido vistas pelos defensores dos métodos ágeis como um mal-
entendido a respeito do desenvolvimento ágil.
 Observação
Diversos trabalhos apontam que as principais causas de falha na 
adoção de uma metodologia ágil são: boicote (falta de comprometimento 
das equipes; é preciso reconhecer que há espaço para melhorias e desejá-
las); conflito (filosofia ou cultura da empresa que conflitam com os valores 
e princípios dos métodos ágeis); suporte gerencial (falta de apoio para 
mudanças; é preciso desejar as mudanças); experiência (treinamento 
insuficiente no novo processo; é preciso tornar-se capaz de trabalhar de 
maneira ágil).
Janete
Highlight
Janete
Highlight
Janete
Highlight
Janete
Highlight
Janete
Highlight
Janete
Highlight
Janete
Highlight
91
AD
S 
- 
Re
vi
sã
o:
 V
al
ér
ia
/J
ul
ia
na
 -
 D
ia
gr
am
aç
ão
: F
ab
io
 -
 2
5/
04
/2
01
4
ENGENHARIA DE SOFTWARE I
Serão apresentados a seguir os principais métodos ágeis ainda vigentes e que merecem um estudo 
mais detalhado. Para efeito de comparação entre uma metodologia pesada (processos tradicionais ou 
clássicos) e uma metodologia leve (métodos ágeis) tem-se que uma metodologia pesada tem muitas 
regras, práticas e muitos documentos associados, enquanto uma metodologia leve apresenta:
•	 poucas	regras	e	práticas	que	são	fáceis	de	aplicar;
•	 o	ambiente	de	desenvolvimento	é	claro	e	conciso,	criado	pela	observação;
•	 faz	que	o	desenvolvimento	de	software seja rápido;
•	 os	programadores	se	sentem	criativos	e	livres,	porém	organizados	e	focados.
5.2 O método ágil eXtremme Programming (XP)
O	método	ágil	XP	é	uma	disciplina	leve	do	desenvolvimento	de	software, que é fortemente baseada 
nos seguintes princípios:
•	 simplicidade;
•	 comunicação;
•	 feedback;
•	 coragem.
A	disciplina	ou	método	ágil	XP	é	desenhada	para	uso	em	times	pequenos	e	para	quem	necessita	
desenvolver softwares de forma rápida, num ambiente de mudanças constantes de requisitos.
De acordo com Beck (2001), (considerado o “pai” ou criador do método), o sucesso metodológico da 
XP	vem	do	esforço	pela	satisfação	do	cliente.	O	método	ágil	XP,	quando	desenvolvido	por	Beck,	tinha	
como objetivos: 
•	 a	satisfação	do	cliente;
•	 o	atendimento	aos	requisitos	do	cliente;
•	 ser	fortemente	focado	em	trabalho	em	times;
•	 manter	todos	voltados	para	criar	software com qualidade.
A	disciplina	XP	enfatiza	o	trabalho	em	grupo,	incluindo	gerentes,	clientes	e	desenvolvedores,	todos	
fazendo parte do time dedicado a entregar um software de qualidade.
Janete
Underline
Janete
Highlight
Janete
Highlight
Janete
Highlight
Janete
Highlight
Janete
Highlight
Janete
Highlight
Janete
Highlight
Janete
Highlight
92
AD
S 
- 
Re
vi
sã
o:
 V
al
ér
ia
/J
ul
ia
na
 -
 D
ia
gr
am
aç
ão
: F
ab
io
 -
 2
5/
04
/2
01
4
Unidade III
Segundo	o	método	ágil	XP,	existe	uma	limitação	na	definição	do	grupo,	sendo	possível	um	grupo	de	
no máximo dez pessoas, incluindo gerentes e clientes.
 Lembrete
O	 método	 XP	 foi	 desenhado	 para	 funcionar	 com	 times	 pequenos,	
para o desenvolvimento rápido de software e para mudança constante de 
requisitos.
O	método	ágil	XP	é	baseado	em	12	práticas,	listadas	a	seguir.	
•	 P	1	(Prática	1):	o	processo	de	planejamento.	O	planejamento	do	projeto	no	método	XP	se	dá	por	
meio da técnica de reunião denominada “jogo do planejamento”. 
•	 P	2	(Prática	2):	o	projeto	ocorre	sempre	em	pequenas	versões.	Estas	são	produzidas	em	ciclos	curtos	
de desenvolvimento. De preferência, cada pedaço de software resultante deve ser executável e 
colocado em produção junto ao cliente. 
•	 P	 3	 (Prática	 3):	metáfora.	 Todos	 utilizam	 nomes	 comuns	 e	 uma	 linguagem	 comum	 nos	 seus	
códigos. A padronização na escrita dos códigos é fundamental para o sucesso do método. 
•	 P	4	 (Prática	4):	design simples. Não existe mais o “construir para o futuro”. O software resolve 
o problema de agora, sem perda de tempo estudando as futuras manutenções ou as novas 
funcionalidades. É uma proposta que quebra o paradigma tradicional, em que uma arquitetura 
deve ser trabalhada antes de se iniciar a codificação propriamente dita. 
•	 P	5	(Prática	5):	testes.	A	validação	do	software ocorre durante todo o tempo do desenvolvimento, 
e não no final da construção. Os códigos vão sendo construídos e testados de forma conjunta. 
•	 P	6	(Prática	6):	desenvolvimento	em	espiral.	O	método	XP	usa	o	desenvolvimento	iterativo.	O	ciclo	
curto se repete até que todo o software esteja pronto. 
•	 P	7	(Prática	7):	programação	em	pares.	O	código	é	desenvolvido	por	dois	programadores	trabalhando	
juntos. Essa prática faz que o código não tenha um único “dono” e resolve o problema da ausência 
de um dos desenvolvedores. 
•	 P	8	(Prática	8):	propriedade	coletiva.	Todo	o	código	pertence	a	todos	da	equipe.	Não	existe	“dono”	
do código, como nos métodos tradicionais. 
•	 P	9	(Prática9):	integração	contínua.	A	equipe	integra	o	software muitas vezes ao dia, na busca da 
solução dos problemas de integração, tão comuns nos métodos tradicionais de desenvolvimento.
•	 P	 10	 (Prática	 10):	 quarenta	 horas	 de	 trabalho	 semanais.	 De	 acordo	 com	o	 XP,	 programadores	
cansados cometem mais erros e prejudicam o andamento do projeto. 
Janete
Highlight
Janete
Highlight
Janete
Highlight
Janete
Highlight
Janete
Highlight
Janete
Highlight
Janete
Highlight
Janete
Highlight
Janete
Highlight
Janete
Highlight
Janete
Highlight
Janete
Highlight
Janete
Highlight
Janete
Highlight
93
AD
S 
- 
Re
vi
sã
o:
 V
al
ér
ia
/J
ul
ia
na
 -
 D
ia
gr
am
aç
ão
: F
ab
io
 -
 2
5/
04
/2
01
4
ENGENHARIA DE SOFTWARE I
•	 P	11	(Prática	11):	cliente	fazendo	parte	da	equipe.	Um	projeto	XP	é	conduzido	por	um	cliente,	e	
decisões são definidas por ele o tempo todo.
•	 P	 12	 (Prática	 12):	 codificação-padrão.	Os	 códigos	 são	 escritos	 da	mesma	 forma	 por	 todos	 os	
envolvidos no projeto.
A seguir, a figura apresenta uma visão do método ágil sob o ponto de vista do ciclo de desenvolvimento.
Histórias de 
usuário
Requisitos
Erros
Cenários de 
testes
Aprovação 
do cliente
Pequenas 
liberações
Testes de 
aceiteLiberação
Plano de 
liberação
Arquitetura 
de risco
Metáforas 
do sistema
Plano de 
liberação
Próxima 
iteração
Última 
versão
Riscos
Estimativas 
incertas
Estimativas 
confidenciais
Nova história do usuário
Velocidade do projeto
Figura 24		–	Ciclo	de	desenvolvimento	do	método	XP	
Apesar	do	sucesso	do	método	XP,	principalmente,	nos	meios	acadêmicos	e	nas	pequenas	fábricas	de	
software, existem críticas ao método. 
O autor Matt Stephens, em seu livro Extreme Programming Refactored (STEPHENS; ROSENBERG, 
2003), faz uma revisão no método e apresenta as seguintes críticas:
•	 falta	 de	 estrutura	 e	 documentação	 necessárias:	 o	 método	 abriu	 mão,	 completamente,	 de	
documentos que registrassem qualquer fato a respeito do software construído; a única 
documentação é o próprio código-fonte;
•	 somente	 trabalhar	 com	desenvolvedores	de	nível	 sênior:	no	mercado,	fica	muito	difícil	 e	 caro	
montar equipes de desenvolvedores somente com alto nível de conhecimento; 
•	 incorporar	de	forma	insuficiente	o	projeto	de	software: como o software é construído para “agora”, 
quando se precisa fazer alguma manutenção, a arquitetura original nem sempre tem a estrutura 
necessária para as novas implementações; 
Janete
Highlight
Janete
Highlight
Janete
Underline
Janete
Underline
Janete
Underline
94
AD
S 
- 
Re
vi
sã
o:
 V
al
ér
ia
/J
ul
ia
na
 -
 D
ia
gr
am
aç
ão
: F
ab
io
 -
 2
5/
04
/2
01
4
Unidade III
•	 requer	a	adoção	de	mudança	cultural:	este	é	um	fator	importante	a	ser	considerado	quando	se	
pretende	adotar	o	método	XP;	
•	 poder	 levar	 a	maiores	 dificuldades	 nas	 negociações	 contratuais:	 como	 se	 sabe,	 os	 clientes	 se	
protegem	por	meio	de	contratos	formais	que	não	são	aceitos	no	método	XP	nem	fazem	parte	da	
sua estrutura, o que acaba contrastando com a realidade vivida pelas organizações.
 Saiba mais
Leia o seguinte trabalho:
TELES, V. M. Um estudo de caso da adoção das práticas e valores do 
Extreme Programming. 2005. 90 f. Dissertação (Mestrado em Informática) 
– Universidade Federal do Rio de Janeiro, Rio de Janeiro, 2005. Disponível 
em:	<http://desenvolvimentoagil.com.br/xp/dissertacaoXP.pdf>.	Acesso	
em: 16 abr. 2014.
Nesse trabalho, o autor faz uma apresentação profunda dos conceitos 
desse método ágil e desenvolve um estudo de caso em que foram aplicados 
os	valores	e	as	práticas	do	XP.
Diversos resultados foram descritos pelo autor, indicando que o projeto 
atendeu às expectativas do cliente e que a equipe foi capaz de conduzir o 
projeto com baixo nível de estresse. A qualidade foi demonstrada no uso do 
sistema por seis meses com apenas três erros identificados. 
5.3 O método ágil Scrum
O método Scrum, inicialmente, foi concebido como um estilo de gerenciamento de projetos ágeis 
em empresas de fabricação de automóveis e produtos de consumo (NONAKA; TAKEUCHI, 1986).
Na atualidade, existe uma discussão sobre o método Scrum que sempre vem à tona. Ele é um 
framework ágil para projetos de software ou uma metodologia de gerenciamento de projetos? Para 
responder de forma mais acadêmica, recorrendo aos principais dicionários (Aurélio, 1988; Houaiss, 
2012; e Michaelis, 2009), encontramos o conceito de metodologia:
•	 implica	 algo	 que	 define	 procedimentos,	 regras	 documentadas	 (ou	 o	 estudo	 destas),	 para	 a	
regulamentação de uma determinada disciplina;
•	 ensina-nos	a	pesquisar	e	estudar	algo.
Janete
Underline
Janete
Underline
95
AD
S 
- 
Re
vi
sã
o:
 V
al
ér
ia
/J
ul
ia
na
 -
 D
ia
gr
am
aç
ão
: F
ab
io
 -
 2
5/
04
/2
01
4
ENGENHARIA DE SOFTWARE I
Analisando o dicionário de computação Computer Dictionary (2014), nota-se:
•	 metodologia	de	software é o conjunto organizado de procedimentos e diretrizes para uma ou 
mais fases do ciclo de vida do software, tais como análise ou design;
•	 muitas	 metodologias	 incluem	 uma	 notação	 de	 diagramação	 para	 documentar	 os	 resultados	
do processo; uma abordagem do tipo livro de receitas; passo a passo para a realização do 
procedimento; objetivo (de preferência, quantificado); e conjunto de critérios para determinar se 
os resultados do procedimento são de qualidade aceitável.
Com base nessas definições, pode-se afirmar que o método Scrum não se encaixa em nenhuma 
das definições anteriores. Isso porque o método não ensina a fazer pesquisa, não ensina ciência, 
nem responde a perguntas da engenharia de software que possam surgir no decorrer do ciclo de 
vida de um software. Essas definições descartam Scrum como metodologia de imediato, tendo 
em vista que se desenvolveu independentemente dos processos de software e pode ser aplicado, 
também, a outras realidades de projetos. Daí ser tratado, neste texto, como um método ágil de 
gestão de projetos.
 Saiba mais
Diversos artigos e considerações sobre o método Scrum podem ser 
encontrados no site	disponível	em:	<http://massimus.com/downloads/>.	
Em 1993, Jeff Sutherland, John Scumniotales e Jeff McKenna conceberam, documentaram e 
implementaram o Scrum na empresa Easel Corporation, reunindo os estilos de gerenciamento observados 
por Nonaka e Takeuchi (1986). Em 1995, Schwaber formalizou a definição de Scrum e ajudou a implantá-
lo no desenvolvimento de softwares ágeis em todo o mundo. Já em 2000, implantou a metodologia na 
empresa PatientKeeper e, nos anos seguintes, lançou três livros, sendo o primeiro deles o Agile Software 
Development with Scrum, Schwaber (2002).
Uma característica importante do método é forçar as pessoas a seguirem passos predefinidos, com 
pouca flexibilidade para mudança. A abordagem é o oposto do modelo em cascata, iniciando-se na 
análise, assim que alguns requisitos estiverem disponíveis. 
O projeto começa com uma visão composta por requisitos e funcionalidades que concretizam uma 
lista de tarefas, denominada product backlog. As prioridades dos itens desse documento determinam 
o quanto de valor cada um gera para o negócio. Depois de priorizados os itens, antes de cada iteração 
(sprint), a equipe se reúne para dizer quantos itens é possível entregar em um sprint, que, segundo 
Schwaber (2002), deve durar cerca de trinta dias, como boa prática. 
Janete
Underline
Janete
Highlight
Janete
Highlight
Janete
Underline
Janete
Highlight
96
AD
S 
- 
Re
vi
sã
o:
 V
al
ér
ia
/J
ul
ia
na
 -
 D
ia
gr
am
aç
ão: F
ab
io
 -
 2
5/
04
/2
01
4
Unidade III
Product
backlog
Sprint
backlog
Potentially 
shippable
product
increment
Itens a serem 
desenvolvidos 
no projeto
Itens a serem 
desenvolvidos 
no sprint
Reunião diária 
do time
Incremento 
entregável
2-4 
semanas
Figura 25 – Visão geral do processo de trabalho Scrum 
Ao final da iteração ou do sprint, conforme ilustra a figura anterior, o que foi desenvolvido é 
apresentado ao cliente em uma reunião, e, antes do início da próxima iteração, é feita uma reunião de 
retrospectiva, em que é possível extrair lições aprendidas, para a melhoria do processo Scrum daquele 
projeto.
O Scrum define diversos papéis a serem desempenhados durante o projeto, que são:
•	 product owner:
— pode ser definido como o dono do projeto, ou o responsável por este; é quem define e prioriza 
as funcionalidades do produto;
— o dono do produto provavelmente será um gerente de projeto ou um patrocinador, um membro 
da equipe de marketing ou um cliente interno.
•	 Scrum master:
— é o responsável por garantir os valores e as práticas do Scrum dentro do time de 
desenvolvimento. 
•	 Scrum team:
— equipe responsável por desenvolver o produto;
— time ligado diretamente ao trabalho.
•	 Sprint planning:
— uma reunião efetuada antes do início de um sprint, para o time alinhar com o product owner 
o que será feito dentro do próximo sprint.
Janete
Highlight
Janete
Highlight
Janete
Highlight
Janete
Highlight
Janete
Highlight
Janete
Highlight
97
AD
S 
- 
Re
vi
sã
o:
 V
al
ér
ia
/J
ul
ia
na
 -
 D
ia
gr
am
aç
ão
: F
ab
io
 -
 2
5/
04
/2
01
4
ENGENHARIA DE SOFTWARE I
O Scrum define um conjunto de fases que devem ser seguidas durante a execução do projeto, que 
são:
•	 sprint: é o ciclo de desenvolvimento de um conjunto de tarefas planejadas; pode ser entendido, 
também, como o tempo estimado pelo time para produzir, testar e homologar determinadas 
funcionalidades, que serão priorizadas pelo product owner no sprint;
•	 planning: de acordo com as práticas adotadas por Schwaber (2002), o planejamento do sprint 
deve defini-lo para ocorrer em trinta dias;
•	 daily Scrum: são reuniões diárias em que cada membro do time coloca em um quadro o que fez 
no dia anterior e o que fará no dia seguinte; direcionamentos no projeto devem ocorrer durante 
essas reuniões para reduzir as possibilidades de o sprint não dar certo ou não ser cumprido no 
prazo acordado;
•	 retrospective ou sprint review: é uma reunião de lições aprendidas que ocorre após a entrega 
de um sprint e tem como objetivo analisar se o que foi feito está de acordo e o que pode ser 
melhorado.
A figura a seguir mostra um exemplo do quadro daily scrum utilizado para ilustrar a situação dos 
trabalhos durante um sprint no método Scrum. 
Atividade
5
Item da
backlog Para fazer Em andamento
Sprint 1
Para verificar Concluído
Requisito
1
Requisito
2
Atividade
6
Atividade
7
Atividade
2
Atividade
1
Atividade
2
Atividade
3
Atividade
4
Atividade
1
Atividade
5
Jô
Lilica
José
Impedido
Figura 26 – As fases e as tarefas do Scrum
Para estimar o número de funcionalidades que serão produzidas por sprint, Schwaber (2002) propõe 
um método chamado pokergame, em que cada membro do time dá uma nota que equivale a um peso. 
Os pesos são denominados de acordo com uma progressão aritmética, ou seja, 1, 2, 3, 5, 8, 13 e 21.
Janete
Highlight
Janete
Highlight
Janete
Highlight
Janete
Highlight
Janete
Sticky Note
cda numero eh a soma dos dois anteriores
98
AD
S 
- 
Re
vi
sã
o:
 V
al
ér
ia
/J
ul
ia
na
 -
 D
ia
gr
am
aç
ão
: F
ab
io
 -
 2
5/
04
/2
01
4
Unidade III
O peso que se repetir mais vezes pelos membros do time é que valerá para a funcionalidade. Ao total 
de funcionalidades, os pesos são somados, e essa é a estimativa de entrega em um sprint. 
 Observação
O peso final das funcionalidades deverá ser convertido em horas, 
considerando-se a produtividade do time, medida ao longo do tempo.
O primeiro sprint, de acordo com Schwaber (2002) é destinado à definição da arquitetura 
do sistema e é o ciclo que baliza a velocidade (produtividade) do time. Cada sprint consiste de 
uma ou mais equipes executando as atividades de desenvolvimento, empacotamento do produto, 
revisão e ajustes.
O monitoramento do progresso do projeto é realizado por meio de dois gráficos principais: o product 
burn down chart e o sprint burn down chart. 
Os gráficos mostram, ao longo do tempo, a quantidade de trabalho que ainda resta para ser feito, 
constituindo um excelente mecanismo para visualizar a correlação entre a quantidade de trabalho que 
falta realizar (em qualquer ponto) e o progresso do time do projeto em reduzir esse trabalho (BARBOSA; 
LIBARDI, 2010).
A próxima figura mostra um exemplo do gráfico burn-down chart, onde se veem o progresso ideal 
e o progresso realizado ao longo de seis dias.
140
120
100
80
60
40
20
0
Ho
ra
s
Dia
1 2 3 4 5 6
Ideal
Realizada
Figura 27 – Gráfico burndown 
Janete
Highlight
Janete
Highlight
Janete
Underline
99
AD
S 
- 
Re
vi
sã
o:
 V
al
ér
ia
/J
ul
ia
na
 -
 D
ia
gr
am
aç
ão
: F
ab
io
 -
 2
5/
04
/2
01
4
ENGENHARIA DE SOFTWARE I
 Saiba mais
As informações constantes neste texto são, na maioria, retratadas nos 
livros de referência do Scrum:
Agile Development with Scrum, de Ken Schwaber (2002), apresenta 
os conceitos do Scrum e suas práticas; discute o porquê do Scrum, seu 
conceito e sua organização; Agile Project Management with Scrum, 
também de Ken Schwaber (2004), mostra exemplos reais em cada capítulo 
e discute a expansão do Scrum para projetos e equipes maiores, distribuídas 
geograficamente; e, no Apêndice E, o autor mostra como o Scrum pode 
atender às exigências do modelo CMM/CMMI de qualidade de software 
(visando ao Nível 3).
No artigo Análise do Ba durante o processo Scrum, os autores Conceição 
Silva, Roriz Filho e Nunes Silva (2010) demonstram a importância do Ba em 
equipes de projetos Scrum. 
O Ba (termo de origem japonesa que pode ser traduzido como 
“espaço”), corresponde ao ambiente propício para a criação do 
conhecimento, podendo ser dividido em quatro tipos: Ba de criação; Ba 
de interação; Ba virtual; e Ba de treinamento.
Não deixe de ler:
CONCEIÇÃO SILVA, M. A.; RORIZ FILHO, H.; NUNES SILVA, H. F. Análise 
do Ba durante o processo Scrum. In: SIMPÓSIO DE ENGENHARIA DE 
PRODUÇÃO, 17., 2010, Bauru. Anais... Bauru, 2010. Disponível em: <http://
massimus.com/download/analise-do-ba-durante-o-processo-scrum/>.	
Acesso em: 17 abr. 2014.
5.4 O método ágil Iconix
O Iconix é um processo de análise e desenvolvimento de software dirigido por casos de uso e aplica 
apenas cinco diagramas da UML, dos quais dois são adendos; utiliza prototipação desde o início da 
definição do software e é mais simples que o processo unificado Rational Unified Process (RUP), porém 
sem	a	simplicidade	do	método	ágil	XP.
A figura a seguir mostra uma visão das fases do processo envolvido no Iconix. 
100
AD
S 
- 
Re
vi
sã
o:
 V
al
ér
ia
/J
ul
ia
na
 -
 D
ia
gr
am
aç
ão
: F
ab
io
 -
 2
5/
04
/2
01
4
Unidade III
Prototipação
Revisão dos 
requisitos
Análise de 
requisitos
Requisitos
de software
Figura 28 – Visão da fase de requisitos do processo Iconix 
A próxima figura mostra a fase de construção do software.
Análise e 
projeto 
preliminar
Projeto
Revisão 
do projeto 
preliminar
Software
pronto
Requisitos
de software
Figura 29 – Fase de construção do softwareno Iconix 
Já na próxima figura, vemos a fase de implantação do software produzido no processo Iconix. 
Software
pronto
Revisão 
detalhada e 
crítica do projeto
Ajustes finos e 
implantação
Figura 30 – Fase de implantação do software do Iconix 
Durante as fases, os desenvolvedores aplicam os diagramas da UML propostos pelo método Iconix, 
como mostra a figura.
101
AD
S 
- 
Re
vi
sã
o:
 V
al
ér
ia
/J
ul
ia
na
 -
 D
ia
gr
am
aç
ão
: F
ab
io
 -
 2
5/
04
/2
01
4
ENGENHARIA DE SOFTWARE I
Protótipo Modelo de 
caso de uso
Modelos dinâmicos
Modelos estáticos
Modelos de domínio Modelos de classes Código
Diagrama de robustez
Diagrama de 
sequência
Figura 31 – Visão da sequência da aplicação dos diagramas da UML no Iconix
Toda a proposta se inicia com a prototipagem, que é a forma de descobrir, detalhar e garantir 
os requisitos do software a ser produzido. Com o protótipo e os requisitos definidos, parte-se para a 
construção do diagrama de caso de uso, que conterá as funcionalidades a serem implementadas no 
produto de software.
Paralelamente, vai-se construindo o modelo de domínio do projeto, isto é, o modelo dos dados que 
serão armazenados no produto de software. Na fase de construção, utilizam-se o modelo de robustez, o 
diagrama de sequência e o diagrama de classes, para a construção efetiva dos códigos do software. Ao 
final, têm-se os códigos, que são validados, ajustados e colocados à disposição do cliente em produção 
ou implantação.
O método Iconix preconiza que os casos de uso sejam o mais simples possível, sem ambiguidades, 
podendo fazer referência aos objetos do protótipo.
 Lembrete
Casos de uso são diagramas da UML para representar as funcionalidades 
do sistema e a interação entre os usuários e o sistema. Os usuários são 
denominados de atores, e as funcionalidades são os casos de uso.
Os passos para se aplicar o processo e os diagramas da UML propostos pelo Iconix são:
•	 prototipar	a	interface	com	o	usuário;
•	 escrever	um	caso	de	uso	que	dê	ideia	de	como	a	interface	irá	se	comportar;
•	 esboçar	os	diagramas	de	robustez,	sequência	e	domínio:	
102
AD
S 
- 
Re
vi
sã
o:
 V
al
ér
ia
/J
ul
ia
na
 -
 D
ia
gr
am
aç
ão
: F
ab
io
 -
 2
5/
04
/2
01
4
Unidade III
— diagrama de robustez: faz a derivação dos cenários dos casos de uso em uma visão de solução 
técnica dentro das camadas de interface, lógica da aplicação e camada de banco de dados; 
— diagrama de sequência: mostra a lógica das transações por meio da comunicação entre os 
objetos do sistema e a passagem de comunicação entre eles (mensagens); 
— diagrama de domínio: é a visão das entidades de dados no nível de negócio, com seus dados 
básicos e seus relacionamentos de alto nível.
•	 programar	a	interface	de	modo	que	ela	implemente	o	que	o	caso	de	uso	determina;
•	 retornar	ao	primeiro	passo	até	terminarem	as	interfaces	necessárias	ao	projeto;
•	 quando	a	análise	de	requisitos,	as	interfaces	e	a	construção	terminarem,	já	se	deverá	estar	num	
estágio de pré-entrega, faltando apenas pequenos ajustes.
Percebe-se que, mesmo não abrindo mão de alguns diagramas, o método ágil Iconix é razoavelmente 
simples e muito robusto. O processo permite que os erros de análise e as dúvidas dos clientes ou usuários 
sejam minimizadas conforme as iterações do processo ocorrem.
O processo utiliza o mínimo possível de ferramentas de desenvolvimento propostas pela linguagem 
UML, sem, no entanto, deixar de lado documentação razoável.
 Saiba mais
Todo esse texto foi uma interpretação do processo Iconix constante do 
livro:
ROSEMBERG, D.; STEPHES, M.; COLLINS-COPE, M. Agile development 
with Iconix process. EUA: Appress, 2005.
6 OUTROS MODELOS E MÉTODOS ÁGEIS
6.1 O método ágil Feature Driven Development (FDD)
O método ágil FDD já existia antes do Manifesto Ágil, que ocorreu em 2001. Foi concebido 
originalmente por Jeff de Luca, em Singapura, entre os anos de 1997 e 1999, com base no método 
Coad (criado por Peter Coad, nas décadas de 1980 e 1990) e nos processos interativos e Lean, 
já utilizados por ele; busca o desenvolvimento por funcionalidade, ou seja, por um requisito 
funcional do sistema; é prático para o trabalho com projetos iniciais ou projetos com codificações 
existentes.	Apesar	de	haver	algumas	diferenças	entre	os	métodos	FDD	e	XP,	é	possível	utilizar	as	
melhores práticas de cada um. 
103
AD
S 
- 
Re
vi
sã
o:
 V
al
ér
ia
/J
ul
ia
na
 -
 D
ia
gr
am
aç
ão
: F
ab
io
 -
 2
5/
04
/2
01
4
ENGENHARIA DE SOFTWARE I
O FDD atua bem em conjunto com o método Scrum, pois como este atua no foco do gerenciamento 
do projeto, e o FDD, no processo de desenvolvimento, eles se complementam.
Com relação ao FDD, este possui cinco processos básicos:
•	 desenvolvimento	de	modelo	abrangente	(análise	orientada	por	objetos);
•	 construção	de	lista	de	funcionalidades	(decomposição	funcional);
•	 planejamento	por	funcionalidade	(planejamento	incremental);
•	 detalhe	por	funcionalidade	(desenho	orientado	a	objetos);
•	 construção	por	funcionalidade	(programação	e	teste	orientados	a	objetos).
Assim	como	acontece	no	método	XP,	o	FDD	faz	uso	intenso	de	teste	de	software. Dessa forma, é 
possível utilizar, também, na codificação, o método TDD (é indicada a utilização deste para manter a 
qualidade do software). Daí temos a combinação do FDD, como processo, do Scrum, como gestão do 
processo, e do TDD, como ênfase na codificação dirigido por testes.
O pessoal que desenvolveu o método FDD acredita, assim como a teoria de sistemas afirma, que a 
soma das partes é maior do que o todo. Dessa forma, apesar de criar um modelo abrangente baseado no 
todo que será desenvolvido (ver o sistema completo primeiro), essa fase se inicia com o detalhamento 
do domínio do negócio, com divisão das áreas que serão modeladas. 
O modelo só estará pronto quando todos da equipe estiverem de acordo. O planejamento é feito 
com base na lista de funcionalidades ou requisitos do software. Trabalhando com FDD, em conjunto com 
o Scrum, a lista de funcionalidades seria utilizada no backlog de produtos, como histórias de usuários a 
serem desenvolvidas.
Com base na lista de funcionalidades, deve-se planejar individualmente, de forma incremental. 
Isso, em conjunto com o Scrum, deve ser analisado como etapa de desenvolvimento do incremento, 
portanto, esse planejamento é feito com base no que será desenvolvido naquele incremento ou sprint.
Aplicando-se o Scrum e separando-se o que será feito no sprint, essas funcionalidades serão 
colocadas no seu backlog. 
O que está no backlog são funcionalidades que serão desenvolvidas durante o sprint (que pode ser 
de duas a quatro semanas, conforme sugere o método Scrum). Essas tarefas são então planejadas com 
maior rigor, e, nesse ponto, tem-se o planejamento incremental, ou seja, planeja-se apenas o que vai ser 
desenvolvido. Nessa etapa, os envolvidos no processo são apenas os componentes da equipe, ou seja, 
desenvolvedores, analistas, testadores etc. que vão atuar no processo. Eles devem selecionar os itens 
com base no tempo que possuem e nas qualificações atuais da equipe.
104
AD
S 
- 
Re
vi
sã
o:
 V
al
ér
ia
/J
ul
ia
na
 -
 D
ia
gr
am
aç
ão
: F
ab
io
 -
 2
5/
04
/2
01
4
Unidade III
Após o planejamento, é feito o detalhamento. Nessa fase, é de extrema importância que o desenho 
esteja de acordo com o que o cliente deseja, sendo mantido contato constante com esse cliente, como 
em todas as metodologias ágeis. Essa documentação é a base para o desenvolvimento: não se deve 
perder tempo com documentação que não será utilizada, mas é necessário registrar.
Posteriormentese inicia a fase de desenvolvimento e teste reais. O desenvolvimento também é 
incremental, e é indicada a utilização de testes do início ao fim do processo, além da utilização de 
integração contínua.
Um	ponto	que	diverge	do	método	XP	é	que,	no	FDD,	o	desenvolvedor	é	incentivado	como	o	único	
responsável	pelo	módulo	que	desenvolve;	já	no	XP,	o	código	é	comunitário.
 Saiba mais
Para saber mais sobre o método ágil FDD, leia: 
ROCHA, F. G. Introdução ao FDD – Feature Driven Development. [s.d.]. 
Disponível em: <http://www.devmedia.com.br/introducao-ao-fdd-feature-
driven-development/27971#ixzz2qOV6vIG1>.	Acesso	em:	13	fev.	2014.
A figura a seguir mostra a visão gráfica do conceito de integração contínua aplicado no método 
FDD.
Design ou 
projeto
Inspeção do design
Codificação
(sugere-se o TDD)
Testes
(sugere-se o TDD)
Integração
Inspeção de 
código
Build completo 
(entregável)
Processo FDD
cíclico e incremental
Figura 32 – Visão do conceito de integração contínua 
105
AD
S 
- 
Re
vi
sã
o:
 V
al
ér
ia
/J
ul
ia
na
 -
 D
ia
gr
am
aç
ão
: F
ab
io
 -
 2
5/
04
/2
01
4
ENGENHARIA DE SOFTWARE I
Utilizar a integração contínua permite que a equipe esteja em contato constante com o cliente, 
tornando o processo ágil e com entregas também constantes.
Como cada fase apresentada na figura anterior é específica e curta, e como as fases se completam, 
são necessárias informações para manter o controle, bem como para analisar a quantidade de recursos 
que estão sendo desenvolvidos de modo semelhante ao burn down e ao burn up do Scrum.
Segundo o método FDD, o percentual de tempo gasto em cada fase é:
•	 levantamento	do	domínio	da	aplicação:	1%;
•	 projeto:	40%;
•	 inspeção	do	projeto:	3%;
•	 desenvolvimento:	45%;
•	 inspeção	do	código:	10%;
•	 integração:	1%.
 Saiba mais
Para saber mais sobre integração contínua, leia o artigo: 
CAETANO, C. Dividir, conquistar e integrar: conceitos de integração 
contínua para testadores ágeis. Linha de Código, [s.d.]. Disponível em: 
<http://www.linhadecodigo.com.br/artigo/1252/dividir-conquistar-e-
integrar-conceitos-de-integracao-continua-para-testadores-ageis.aspx>.	
Acesso em: 3 fev. 2014.
O método FDD aplica as chamadas melhores práticas, que indicam boas práticas ao desenvolver 
com o FDD: 
•	 modelagem	orientada	a	objetos	do	domínio;
•	 desenvolvimento	por	funcionalidade;
•	 classe	proprietária,	ou	seja,	a	unidade	é	feita	 individualmente,	evitando-se,	assim,	conflitos	na	
equipe;
•	 equipes	de	recursos:	são	pequenas,	destinadas	a	desenvolver	recursos	necessários	ao	projeto,	de	
forma secundária;
106
AD
S 
- 
Re
vi
sã
o:
 V
al
ér
ia
/J
ul
ia
na
 -
 D
ia
gr
am
aç
ão
: F
ab
io
 -
 2
5/
04
/2
01
4
Unidade III
•	 inspeção:	é	realizada	constantemente	para	garantir	a	boa	qualidade	do	código	e	do	projeto;
•	 gerenciamento	de	configuração;
•	 integração	contínua	para	demonstrar	constantemente	as	funcionalidades	ao	cliente.
6.2 O método ágil Adaptative Sofware Development (ASD)
O método ágil ASD, em português, “desenvolvimento adaptável de software”, possui as seguintes 
características:
•	 é	iterativo	e	incremental;
•	 pode	ser	aplicado	também	a	sistemas	grandes	e	complexos;
•	 é	considerado	um	arcabouço	para	evitar	o	caos;
•	 o	cliente	sempre	está	presente	durante	o	processo;
•	 desenvolvimento	 de	 aplicações	 em	 conjunto	 com	 a	 técnica	 de	 reunião	 Joint Application 
Development (JAD).
A próxima figura mostra os ciclos do processo ASD, que é constituído de três fases:
Aprender
Colaborar Especular
Figura 33 – Ciclos do método ASD 
As fases do método ASD são:
•	 especular	(speculate): fase em que se fixam prazos e objetivos, e se define um plano baseado em 
componentes;
•	 colaborar	(collaborate): fase em que se constrói de forma concorrente os vários componentes;
•	 aprender	 (learn): fase em que são efetuadas repetitivas revisões de qualidade e foco na 
demonstração das funcionalidades desenvolvidas (learning loop); conta com a presença do cliente 
e de especialistas do domínio.
107
AD
S 
- 
Re
vi
sã
o:
 V
al
ér
ia
/J
ul
ia
na
 -
 D
ia
gr
am
aç
ão
: F
ab
io
 -
 2
5/
04
/2
01
4
ENGENHARIA DE SOFTWARE I
Os ciclos duram de quatro a oito semanas.
Com relação às propriedades, o ASD é:
•	 orientado	a	missões	(misson-driven): atividades são justificadas por uma missão que pode mudar 
ao longo do projeto;
•	 baseado	em	componentes	(component-based): construir o sistema em pequenos pedaços;
•	 iterativo	 (iterative): desenvolvimento em cascata (waterfall) só funciona em ambientes bem-
definidos e compreendidos; Para o método ASD é mais fácil refazer algum código do que investir 
muito tempo e recursos para fazer corretamente na primeira vez;
•	 com	prazos	prefixados	(time-boxed): força os participantes do projeto a definirem severamente 
decisões logo cedo;
•	 com	 tolerância	a	mudanças	 (change-tolerant): as mudanças são frequentes; é sempre melhor 
estar pronto a adaptá-las do que controlá-las; constante avaliação de quais componentes podem 
mudar;
•	 orientado	a	riscos	(risk driver): itens de alto risco são desenvolvidos primeiro.
Com relação a cargos e responsabilidades, o ADS não os descreve em detalhes, mas define:
•	 executivo	responsável	(executive sponsor);
•	 participantes	de	uma	sessão	(workshop) do desenvolvimento de aplicações em conjunto (JAD);
•	 facilitador	(facilitator): lidera e planeja as sessões;
•	 escriba	(scribe): efetua anotações;
•	 cliente	(customer): sempre presente;
•	 gerente	de	projetos	(project manager);
•	 desenvolvedores	(developers).
6.3 O método ágil Dynamic Systems Development Method (DSDM)
O método ágil DSDM, também chamado método dinâmico de desenvolvimento de software, é 
considerado	predecessor	do	método	ágil	XP	e	tem	como	características	principais:
•	 arcabouço	para	desenvolvimento	rápido	de	aplicações	(RAD);
108
AD
S 
- 
Re
vi
sã
o:
 V
al
ér
ia
/J
ul
ia
na
 -
 D
ia
gr
am
aç
ão
: F
ab
io
 -
 2
5/
04
/2
01
4
Unidade III
•	 fixação	de	tempo	e	recursos,	ajustando	a	quantidade	de	funcionalidades	a	serem	implementadas;
•	 utilizado	por	equipes	pequenas;
•	 suporta	a	mudança	de	requisitos	durante	o	ciclo	de	vida	do	desenvolvimento.
A seguir, a figura mostra como o método apresenta e aplica as fases de desenvolvimento.
Modelo 
funcional 
(iteração)
Implementação
Design e 
construção 
(iteração)
Viabilidade
Figura 34 – Fases do método DSDM 
O método ágil DSDM define um conjunto de cargos e responsabilidades que devem ser obedecidos 
pelos times participantes do processo de desenvolvimento e de suas fases:
•	 desenvolvedores	(equipes	de	desenvolvimento	de	softwares de níveis júnior, pleno e sênior);
•	 coordenador-técnico;
•	 usuário-embaixador;
•	 usuário-consultor;
•	 visionário;
•	 executivo	responsável;
•	 especialista	do	domínio;
•	 gerente	do	domínio.
O método propõe diversas práticas que devem ser aplicadas:
•	 usuário	sempre	envolvido	durante	o	ciclo	de	desenvolvimento;
•	 equipe	do	DSDM	autorizada	a	tomar	decisões;
•	 foco	na	entrega	frequente	do	produto;
109
AD
S 
- 
Re
vi
sã
o:
 V
al
ér
ia
/J
ul
ia
na
 -
 D
ia
gr
am
aç
ão
: F
ab
io
 -
 2
5/
04
/2
01
4
ENGENHARIA DE SOFTWARE I
•	 adaptação	ao	negócio	define	o	critério	de	entregas;
•	 premissa	“construa	o	produto	certo	antes	de	construí-lo	corretamente”;
•	 desenvolvimento	iterativo	e	incremental;
•	 mudanças	são	reversíveis	utilizando-se	pequenas	iterações;
•	 requisitos	são	acompanhados	em	alto	nível;•	 testes	são	integrados	ao	ciclo	de	vida.
6.4 O método ágil Crystal
O método ágil Crystal/Clear faz parte de um conjunto de metodologias criadas pelo autor Cockburn 
(2004), editor da série Agile Software Development, com diversos livros publicados pela Addison-Wesley.
 Saiba mais
Mais informações sobre o método Crystal/Clear podem ser encontradas 
no	 endereço	 disponível	 em:	 <http://alistair.cockburn.us/crystal>.	 Esse	
endereço aponta para diversos artigos sobre os métodos ágeis e sobre o 
método Crystal/Clear.
As premissas apresentadas para esse conjunto de metodologias são:
•	 todo	projeto	tem	necessidades,	convenções	e	metodologias	diferentes;
•	 o	 funcionamento	 do	 projeto	 é	 influenciado	 por	 fatores	 humanos,	 e	 há	 melhora	 quando	 os	
indivíduos produzem melhor;
•	 comunicação	mais	efetiva	e	lançamentos	frequentes	reduzem	a	necessidade	de	construir	produtos	
intermediários do processo;
•	 o	 método	 Crystal/Clear	 foi	 direcionado	 para	 projetos	 pequenos	 com	 equipes	 de	 até	 seis	
desenvolvedores;
•	 assim	como	o	Scrum,	os	membros	da	equipe	têm	especialidades	distintas;
•	 existe	ênfase	na	comunicação	entre	os	membros	do	grupo;
•	 para	grupos	maiores,	existem	metodologias	diferentes	no	Crystal;
110
AD
S 
- 
Re
vi
sã
o:
 V
al
ér
ia
/J
ul
ia
na
 -
 D
ia
gr
am
aç
ão
: F
ab
io
 -
 2
5/
04
/2
01
4
Unidade III
•	 toda	 especificação	 e	 todo	 projeto	 são	 feitos	 informalmente,	 utilizando	 quadros	 publicamente	
visíveis;
•	 os	requisitos	são	elaborados	utilizando	casos	de	uso	(UML),	um	conceito	similar	às	histórias	de	
usuários	XP;
•	 cada	enunciado	de	requisito	se	torna	uma	tarefa	para	ser	executada;
•	 as	entregas	das	novas	versões	de	software são feitas em incrementos regulares de um mês;
•	 podem	existir	alguns	subprodutos	do	processo	que	são	responsabilidade	de	membros	específicos	
do projeto.
Grande parte do método é pouco definida e, segundo Cockburn (2004), isso é proposital. A ideia do 
Crystal/Clear é permitir que cada organização implemente as atividades que lhe pareçam adequadas, 
fornecendo um mínimo de suporte útil, do ponto de vista de comunicação e documentos.
6.5 método ágil Test Driven Development (TDD)
O método ágil TDD de desenvolvimento de software, que se baseia em um ciclo curto de repetições, 
caracteriza-se por: 
•	 primeiro,	 o	 desenvolvedor	 escreve	 um	 caso	 de	 teste	 automatizado	 que	 define	 uma	melhoria	
desejada ou uma nova funcionalidade;
•	 depois	 é	 produzido	 um	 código	 que	 possa	 ser	 validado	 pelo	 teste,	 para,	 posteriormente,	 ser	
refatorado para um código sob padrões aceitáveis.
Beck	 (2001),	 criador	 do	método	 ágil	 XP	 e	 considerado	 o	 criador	 ou	 o	 “descobridor”	 da	 técnica,	
declarou, em 2003, que o TDD encoraja designs de código simples e inspira confiança.
Por meio do TDD, programadores podem aplicar o conceito para melhorar e depurar código legado 
desenvolvido a partir de técnicas antigas. O TDD requer dos desenvolvedores a criação de testes de 
unidade automatizados antes de escrever o código da aplicação. 
O ciclo de desenvolvimento TDD abrange os seguintes passos:
•	 Adicionar	um	teste:
— no processo TDD, cada nova funcionalidade se inicia com a criação de um teste;
— esse teste precisa, inevitavelmente, falhar, porque é escrito antes de a funcionalidade ser 
implementada (se não falhar, a funcionalidade ou melhoria “proposta” será óbvia);
111
AD
S 
- 
Re
vi
sã
o:
 V
al
ér
ia
/J
ul
ia
na
 -
 D
ia
gr
am
aç
ão
: F
ab
io
 -
 2
5/
04
/2
01
4
ENGENHARIA DE SOFTWARE I
— para escrever um teste, o desenvolvedor precisa entender claramente as especificações e os 
requisitos da funcionalidade;
— o desenvolvedor pode fazer isso por meio de requisitos, casos de uso ou user stories que 
abranjam as funcionalidades e exceções condicionais;
— essa é a diferenciação entre desenvolvimento dirigido a testes e a forma tradicional, que é 
escrever testes de unidade depois do código desenvolvido;
— ele torna o desenvolvedor focado nos requisitos “antes” do código, o que é uma sutil, mas 
importante diferença;
— execute todos os testes e veja se algum deles falha;
— esse passo valida se todos os testes estão funcionando corretamente e se o novo teste não traz 
nenhum equívoco, sem requerer nenhum código novo;
— pode-se considerar que esse passo testa o próprio teste: ele regula a possibilidade de o novo 
teste passar;
— o novo teste deve, então, falhar, pela razão esperada: a funcionalidade não foi desenvolvida;
— isso aumenta a confiança de que se está testando a coisa certa, e de que o teste somente irá 
passar nos casos intencionados.
•	 Escrever	código:
— o próximo passo é escrever o código que irá ocasionar o teste a passar;
— o novo código escrito até esse ponto poderá não ser perfeito e, por exemplo, passar 
no teste de uma forma não elegante; isso é aceitável, porque posteriormente ele será 
melhorado;
— o importante é que o código escrito deve ser construído somente para passar no teste; 
nenhuma funcionalidade (muito menos não testada) deve ser permitida em qualquer 
ponto;
— execute os testes automatizados e veja-os serem executados com sucesso;
— se todos os testes passarem, o programador poderá ficar confiante de que o código possui 
todos os requisitos testados;
— este é um bom ponto que inicia o passo final do ciclo TDD.
112
AD
S 
- 
Re
vi
sã
o:
 V
al
ér
ia
/J
ul
ia
na
 -
 D
ia
gr
am
aç
ão
: F
ab
io
 -
 2
5/
04
/2
01
4
Unidade III
•	 Refatorar	código:
— nesse ponto, o código pode ser limpo tanto quanto for necessário;
— ao executar novamente os testes, o desenvolvedor pode confiar que a refatoração não será um 
processo danoso a nenhuma funcionalidade existente;
— um conceito relevante nesse momento é o de remoção de duplicação de código, considerado 
um importante aspecto no design de um software;
— nesse caso, entretanto, significa remover qualquer duplicação entre código de teste e código 
de produção.
•	 Repetir	tudo:
— iniciando com outro teste, o ciclo é então repetido, empurrando a funcionalidade para frente;
— o tamanho dos passos deve ser pequeno – de uma a dez edições de texto entre cada execução 
de testes;
— se o novo código não satisfizer rapidamente um novo teste ou outros testes falharem 
inesperadamente, o programador deverá desfazer ou reverter as alterações, em vez do uso de 
excessiva depuração;
— a integração contínua ajuda a prover pontos reversíveis. 
 Observação
Estudos com a aplicação do TDD descobriram que programadores que 
escreviam mais testes tendiam a ser mais produtivos. Hipóteses relacionando 
a qualidade de código e uma correlação direta entre TDD e produtividade 
foram inconclusivas. Desenvolvedores usando TDD puramente em novos 
projetos reportaram que raramente necessitaram da utilização de um 
depurador. 
6.6 A modelagem ágil (MA)
A modelagem ágil ou MA tem sido proposta por diversos autores consagrados como um caminho 
alternativo para as pessoas que querem mais do que os métodos ágeis oferecem, todavia não podem 
abrir mão de um pouco de documentação, padrões e contratações formais.
113
AD
S 
- 
Re
vi
sã
o:
 V
al
ér
ia
/J
ul
ia
na
 -
 D
ia
gr
am
aç
ão
: F
ab
io
 -
 2
5/
04
/2
01
4
ENGENHARIA DE SOFTWARE I
Para Ambler (2004), um dos signatários do Manifesto Ágil, tem-se:
A modelagem ágil se propõe a encontrar um meio-termo, o qual permita 
uma modelagem suficiente para explorar e documentar um sistema de 
modo eficaz, mas não a ponto de tornar-se isso um fardo e fatalmente 
torná-lo um fracasso (AMBLER, 2004). 
A figura a seguir apresenta uma visão sobre os extremosque as metodologias, os métodos e os 
modelos apresentam na atualidade.
Sem nenhuma 
modelagem
Frequentemente resulta 
em retrabalho quando o 
software demonstra ser 
mal-projetado
Faz que os esforços 
de desenvolvimento 
caminhem lentamente
Com excesso 
de modelagem
Extremos jamais 
são bons
•	Necessidades
•	Requisitos
•	Códigos
•	Testes
•	Arquitetura
•	Banco	de	dados
•	Transações
Análise
Implementação
Design
Figura 35 – Os extremos do desenvolvimento de software 
A modelagem ágil (MA), de acordo com Ambler (2004), é uma metodologia baseada na prática e 
na documentação eficazes de sistemas baseados em software. É um conjunto de práticas guiadas por 
princípios e valores para profissionais de software aplicarem em seu dia a dia. A MA não é um processo 
prescritivo.
A MA tem três objetivos, de acordo com o autor:
•	 definir	e	mostrar	como	colocar	em	prática	um	conjunto	de	valores,	princípios	e	práticas	relativas	
a uma modelagem eficaz e leve; esse objetivo segue os princípios dos métodos ágeis; 
•	 lidar	com	a	questão	de	como	aplicar	técnicas	de	modelagem	de	projetos	de	software adotando 
uma perspectiva ágil; esse objetivo visa a garantir um pouco da interação escrita nas formas de 
comunicação; 
•	 discutir	como	se	pode	melhorar	as	atividades	de	modelagem	adotando	uma	perspectiva	“quase	ágil”	
para equipes de projetos prescritivos; mudança de paradigma no desenvolvimento convencional e 
clássico.
A	MA	adota	os	valores	XP	de	Kent	Beck,	que	são:	comunicação,	simplicidade,	feedback e coragem. 
Mas adiciona um quinto valor, a humildade.
114
AD
S 
- 
Re
vi
sã
o:
 V
al
ér
ia
/J
ul
ia
na
 -
 D
ia
gr
am
aç
ão
: F
ab
io
 -
 2
5/
04
/2
01
4
Unidade III
Humildade para admitir que você pode não saber tudo e que outros têm valor a acrescentar aos 
esforços no projeto. Ainda de acordo com os autores da modelagem ágil:
•	 um	modelo	ágil	é	suficiente,	pois:
— cumpre seu propósito;
— é compreensível;
— é suficientemente preciso;
— é suficientemente consistente;
— é suficientemente detalhado;
— proporciona valor positivo;
— é o mais simples possível.
 Resumo
Esta unidade teve início com a discussão sobre o aparecimento das 
propostas dos métodos ágeis na área de desenvolvimento de software e a 
motivação que levou diversos pesquisadores, especialistas e consultores a 
proporem uma nova abordagem para os processos de software.
São diversas as motivações que se apresentaram ao longo do tempo. As 
metodologias eram complexas, pesadas e burocráticas, e não estavam mais 
atendendo às novas necessidades dos clientes e das áreas de negócio, que 
eram, em essência, o dinamismo das organizações.
A partir das definições consagradas sobre os métodos ágeis, o texto faz 
um alinhamento entre esses métodos e o RAD, da década de 1980, que 
provavelmente deu inspiração para os criadores dos métodos ágeis. Isso 
ocorreu porque a proposta RAD era ousada para a época e já contemplava 
o planejamento não intensivo em troca da rapidez da programação. Logo 
são apresentadas a história dos métodos ágeis e a reunião de 2001, em que 
se criou o Manifesto Ágil, tornando-se este uma declaração de valores e 
princípios até hoje seguidos pela comunidade ágil. 
O texto mostra um quadro comparativo entre o desenvolvimento 
ágil e o orientado ao planejamento ou ciclo clássico de desenvolvimento 
de software, deixando claro que os métodos ágeis não são a panaceia 
115
AD
S 
- 
Re
vi
sã
o:
 V
al
ér
ia
/J
ul
ia
na
 -
 D
ia
gr
am
aç
ão
: F
ab
io
 -
 2
5/
04
/2
01
4
ENGENHARIA DE SOFTWARE I
do desenvolvimento de software e que, para serem bem-sucedidos, 
precisam ser aplicados em projetos que sejam aderentes às suas 
características.
Em seguida, o texto apresenta com detalhes os principais métodos 
ágeis atuantes nos mercados internacional e nacional, com ênfase nos 
métodos	XP	e	Scrum,	os	mais	usados	no	mercado	brasileiro.	O	método	
XP	é	voltado	para	as	boas	práticas	de	construção	ou	programação	de	
software, enquanto o Scrum é um método fortemente inspirado na 
gestão de projetos ágeis.
Esse	fato	é	percebido	pelos	objetivos	dos	dois	métodos:	o	XP	está	
baseado em 12 práticas, a maioria delas envolvendo as atividades de 
programação, com poucas preocupações gerenciais e de documentação 
dos artefatos do ciclo de vida de desenvolvimento. Em contrapartida, 
o método Scrum é todo voltado para práticas de gerenciamento de 
sprints, tais como o planejamento, o backlog do produto e do sprint, 
as reuniões diárias e as reuniões de avaliação e obtenção das lições 
aprendidas.
O “casamento” das práticas gerenciais do método Scrum com as práticas 
do	“como”	fazer	programação	do	XP	é	o	que	se	recomenda	na	adoção	dos	
métodos ágeis comprovadamente eficientes.
Dando continuidade, o texto apresenta outros métodos ágeis, tais como 
Iconix, FDD, ASD, DSDM, Crystal e TDD. 
O TDD pode ser considerado como um método complementar aos 
outros, já que atua especificamente nos processos de testes dentro do 
ciclo de desenvolvimento. Em contrapartida, a maioria dos métodos ágeis 
aparece na proposta da modelagem ágil que abre caminho alternativo para 
as empresas ou as pessoas que querem agilidade, mas não podem abrir 
mão de um planejamento mais efetivo de documentação do produto, até 
por razões comerciais.
Diversos autores foram utilizados para dar uma visão resumida e 
abrangente das abordagens ágeis no ciclo de vida dos produtos de software, 
e as empresas deverão estudar e aplicar as propostas que forem mais 
adequadas às suas realidades. 
116
AD
S 
- 
Re
vi
sã
o:
 V
al
ér
ia
/J
ul
ia
na
 -
 D
ia
gr
am
aç
ão
: F
ab
io
 -
 2
5/
04
/2
01
4
Unidade III
 Exercícios
Questão 1. O Manifesto Ágil é um documento criado em 2001, em Utah, EUA, por diversos 
especialistas em processos de desenvolvimento, que reúne os princípios e os valores adotados para os 
métodos ágeis. A partir dessa constatação, têm-se os seguintes valores:
I – Os indivíduos e suas interações, mais que procedimentos e ferramentas. 
II – A capacidade de resposta às mudanças, mais que um time motivado. 
III – A colaboração com o cliente, mais que negociação de contratos. 
IV – O funcionamento do software, mais que documentação abrangente. 
V – A capacidade de resposta às mudanças, mais que seguir um plano preestabelecido. 
Assinale a alternativa correta: 
A) As afirmativas I, II e III estão corretas. 
B) As afirmativas II, IV e V estão corretas. 
C) As afirmativas II e IV estão corretas. 
D) As afirmativas I, III, IV e V estão corretas. 
E) As afirmativas I, II, III, IV e V estão corretas. 
Resposta correta: alternativa D.
Análise das afirmativas
I) Afirmativa correta.
Justificativa: de acordo com os quatro valores fundamentais do Manifesto Ágil.
II) Afirmativa incorreta.
Justificativa: essa afirmativa não faz parte do Manifesto Ágil, e um time motivado faz parte dos 
princípios dos métodos ágeis.
III) Afirmativa correta.
Justificativa: de acordo com os quatro valores fundamentais do Manifesto Ágil.
117
AD
S 
- 
Re
vi
sã
o:
 V
al
ér
ia
/J
ul
ia
na
 -
 D
ia
gr
am
aç
ão
: F
ab
io
 -
 2
5/
04
/2
01
4
ENGENHARIA DE SOFTWARE I
IV) Afirmativa correta.
Justificativa: de acordo com os quatro valores fundamentais do Manifesto Ágil. 
V) Afirmativa correta.
Justificativa: de acordo com os quatro valores fundamentais do Manifesto Ágil.
Questão 2. A partir da década de 1990, surgiram diversas propostas de mudança na forma de 
se desenvolver softwares, principalmente, nos Estados Unidos. Essas formas de trabalhar foram 
denominadas, na reunião de Utah, de 2001,como métodos ágeis. A partir dessa constatação, têm-se as 
seguintes afirmativas:
I	–	O	método	ágil	XP	preconiza	um	desenvolvimento	de	software fortemente baseado em simplicidade. 
II – O método ágil Scrum também pode ser entendido como uma metodologia completa de 
desenvolvimento de software. 
III – O método Scrum pode ser entendido como um processo particular das metodologias clássicas.
IV	–	O	método	XP	começa	com	uma	arquitetura	de	risco	e,	a	partir	dos	riscos,	desenvolve	soluções	
por meio de pequenas iterações. 
V	–	O	método	Iconix	é	semelhante	aos	métodos	XP	e	Scrum,	pois	trabalha	praticamente	com	os	
times se comunicando face a face e com quase nenhuma documentação.
Assinale a alternativa correta: 
A) As afirmativas I e III estão corretas. 
B) As afirmativas II, III, IV e V estão corretas.
C) A afirmativa I está correta. 
D) As afirmativas III, IV e V estão corretas. 
E) As afirmativas I, II, IV e V estão corretas. 
Resolução desta questão na plataforma.

Outros materiais