Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

Engenharia de Software
Aula 04
Metodologia ágil
Objetivos Específicos
• Entender os princípios e valores da metodologia ágil e as características dos 
modelos de processos ágeis. 
Temas
Introdução
1 Desenvolvimento ágil
2 Movimento ágil
3 Scrum
4 Extreme programming
Considerações finais
Referências
Ana Cláudia Rossi
Professora
Senac São Paulo - Todos os Direitos Reservados
Engenharia de Software
2
Introdução
Vamos começar a nossa aula sobre metodologias ágeis!
O objetivo desta aula é conhecer o movimento ágil, sua filosofia e os principais processos 
adotados por equipes de desenvolvimento de software. Vamos observar as diferenças entre 
eles e a quebra de paradigma que temos em relação aos processos prescritivos, como o 
Modelo Cascata e o evolucionário.
Portanto, ao terminar esta aula, você deverá ser capaz de:
• compreender os conceitos que envolvem o desenvolvimento ágil;
• conhecer os principais métodos ágeis;
• compreender as diferenças entre os modelos de processo do movimento ágil e os 
modelos de processo prescritivos;
• conhecer com mais detalhes dois modelos de processo do movimento ágil, que são: 
SCRUM e XP (Extreme Programming).
Vamos começar conhecendo o manifesto ágil e o que impulsionou esse movimento.
1 Desenvolvimento ágil
No cenário atual, as empresas operam em um ambiente globalizado e muito suscetível 
a mudanças. Como sabemos, o software é parte importante deste ambiente e também é 
impactado por mudanças que vão desde a economia mundial até questões operacionais da 
empresa, em que se fazem necessários ajustes rápidos para garantir a competitividade no 
setor de atuação.
Sendo assim, considere o tempo necessário para executar todas as etapas de um 
processo de software. Neste tempo, contado desde a elicitação de requisitos até a entrega 
do produto, mudanças no ambiente podem ocorrer e gerar alterações nos requisitos 
inicialmente desenhados.
Portanto, um processo de software que planeja especificar completamente todos os 
requisitos para depois implementar e testar o sistema, não está adaptado para o cenário 
atual que descrevemos anteriormente.
Necessitamos de processos de desenvolvimento rápido, concebidos para lidar com as 
mudanças enfrentadas pelas empresas da atualidade. Sommerville (2011) indica que essas 
questões já eram conhecidas e estudadas na década de 1980, quando a IBM introduziu o 
desenvolvimento incremental. Nessa linha, as ferramentas de quarta geração também foram 
introduzidas, objetivando entregas mais rápidas.
Senac São Paulo - Todos os Direitos Reservados
Engenharia de Software
3
Sendo assim, para o ciclo de vida de um produto de software, podemos criar um 
processo de software específico, mais adequado para o escopo delineado e as características 
do produto que iremos desenvolver.
Por esse motivo, a engenharia de trabalha em constante empirismo, ou seja, 
experimentando novas formas de produção mais eficientes, em menor tempo, com menor 
custo e com mais qualidade. Fazer mais com menos poderia ser uma diretiva dessa área.
Mas a ideia decolou de fato no final da década de 1990, com o desenvolvimento das 
abordagens ágeis, que são:
• Desenvolvimento de Sistemas Dinâmicos (DSDM) (STAPLETON, 1997);
• Scrum (SHWABER; BEEDLE, 2001);
• Extreme Programming (BECK, 1999).
Os processos ágeis de desenvolvimento, também conhecidos como métodos ágeis, 
foram concebidos para produzir softwares úteis rapidamente. Partindo do princípio de 
que um software pode ser desenvolvido por partes, podemos então planejar uma série 
de incrementos de software (partes), cada uma atendendo uma ou mais funcionalidades 
do sistema.
Nesse raciocínio, a produção de cada incremento poderia ser submetida a um processo 
de software previamente desenhado. Se trabalharmos nesse modo de produção, as chances 
de gerar um produto desatualizado, ou não compatível com as necessidades da empresa, 
serão menores, pois, além de distribuir a atividade de especificação ao longo do projeto, a 
cada incremento, teremos uma visão mais madura do produto que estamos criando.
Podemos observar na Figura 1 que no desenvolvimento convencional, a especificação 
inicia-se somente após o fim da fase de engenharia de requisitos. O mesmo ocorre para a 
fase de projeto e implementação. Se há mudanças de requisitos o processo reinicia-se. No 
caso do desenvolvimento ágil, existe uma interação direta entre a engenharia de requisitos e 
a fase de projeto e implementação, ou seja, a especificação ocorre dentro da fase de projeto 
e implementação, a cada novo incremento de software. 
Figura 1 – Especificações no desenvolvimento convencional e desenvolvimento ágil
Fonte: Adaptada de Sommerville (2011, p. 43).
Senac São Paulo - Todos os Direitos Reservados
Engenharia de Software
4
2 Movimento ágil
Em 2001, um grupo de simpatizantes do desenvolvimento ágil se reuniu para escrever o 
que ficou conhecido como manifesto ágil, que consiste em uma declaração de valores comuns 
aos processos de software denominados ágeis. O Manifesto Ágil (2001) declara que:
Estamos descobrindo melhores maneiras de desenvolver softwares, fazendo-o e 
ajudando outros a fazê-lo. Através deste trabalho valorizamos mais:
• indivíduos e interações do que processos e ferramentas; 
• software em funcionamento do que documentação abrangente; 
• colaboração com o cliente do que negociação de contratos; 
• responder às mudanças do que seguir um plano.”
Esses princípios resultam de anos de experiência em desenvolvimento de software, 
observando problemas e experimentando alternativas ao desenvolvimento tradicional. 
2.1 Indivíduos e interações
O primeiro item diz respeito aos indivíduos e às interações. Estamos falando das 
equipes de software que devem ser mais colaborativas entre si, trocando experiências e 
compartilhando lições aprendidas a cada novo projeto.
Na prática, o cliente está preocupado com a compra de um software que funcione 
e atenda às suas necessidades. O processo de software pode vir a ser desgastante e não 
alcançar o sucesso esperado. Por esse motivo, engenheiros de software preocuparam-se em 
criar princípios que pudessem minimizar os problemas comuns em projetos de software.
2.2 Software em funcionamento
Com relação ao segundo valor, software funcionando com documentação extensa, 
segundo Cohn (2011) o movimento ágil foi mal interpretado como sendo contra a 
documentação. Ainda segundo o autor, deve existir um equilíbrio entre o que é documentado 
e o que não é documentado, mas registrado em código-fonte e testes automatizados 
(COHN, 2011). 
Assim, podemos perceber que ninguém está dizendo: “não faça documentação”, como 
muitos pregam no movimento ágil. Apenas estabelecemos graus de importância para as 
coisas. Documentação é importante e deve ser feita. Porém, o cliente espera um software. 
Esse é o produto mais importante. 
Senac São Paulo - Todos os Direitos Reservados
Engenharia de Software
5
Existem situações em que 40% do tempo de projeto é destinado somente 
para documentação e reduz-se o tempo de teste para atingir esta meta. Será 
que esse é o melhor cenário para produzir software?
2.3 Colaboração com o cliente
O terceiro princípio diz respeito à participação do cliente de um modo mais próximo do 
desenvolvimento. O cliente colabora mais com a equipe de desenvolvimento em um contexto 
em que as entregas são realizadas em um espaço de tempo menor, com uma versão de software 
que agrega valor ao cliente e, assim, permitindo que ele realize um feedback contínuo e 
frequente. Desta forma, os feedbacks podem gerar mudanças na versão do software e, como 
consequência, a equipe de desenvolvimento deve responder a essas mudanças. 
Podemos perceber que os contratos formalizam as relações entre cliente e desenvolvedor, 
entretanto, o grande objetivo é entregar valor ao cliente, independentemente do que está 
descrito e registrado em um contrato assinado. Desta forma, quando uma rotina não está de 
acordo com as especificações, ou quando percebemos quedeterminada funcionalidade foi 
especificada de forma errada, as correções são acionadas e processadas de modo 
mais rápido.
Sabemos que o custo de correção de algum item no projeto de software 
aumenta sobremaneira na medida em que as fases do projeto avançam. Por 
esse motivo, o quanto antes o erro for detectado, mais em conta será o custo 
da correção. 
2.4 Responder a mudanças
O quarto princípio fala de mudanças. Este ponto remete ao que escrevemos no início 
desta aula. Estar suscetível a mudanças, porém seguindo o plano maior que é a entrega do 
produto funcionando e com qualidade. Para isso, gerenciar mudanças em desenvolvimento 
de software é fundamental. Tudo que mudamos tem impacto no tempo e no custo. A famosa 
frase “isso é fácil, deixa que eu resolvo” não adere às boas práticas de engenharia de software. 
Senac São Paulo - Todos os Direitos Reservados
Engenharia de Software
6
Tudo deve ser ponderado antes de tomar a decisão. Contudo, isso não quer dizer: “melhor 
não mudar”.
Lembre-se sempre de que o cliente precisa de um produto que atenda às suas 
necessidades. Se uma mudança solicitada não for atendida, provavelmente, o produto final 
poderá não atender às necessidades.
Geralmente produtos de software representam um modelo computacional de um 
processo que era manual e foi modificado com melhorias e benefícios da computação. 
Entender esses processos e criar produtos de qualidade está entre os nossos desafios. 
Participaram do manifesto importantes personalidades da área de 
engenharia de software, como Kent Beck, Mike Beedle, Arie van Bennekum, 
Alistair Cockburn, Ward Cunningham, Jon Kern, Martin Fowler, James Grenning, 
Jim Highsmith, Andrew Hunt, Ron Jeffries, Ken Schwaber, Brian Marick, Robert 
C. Martin, Steve Mellor, Dave Thomas e Jeff Sutherland. A maioria deles tem 
livros, artigos e materiais disponíveis na web. Vale a pena pesquisar e estudar 
mais sobre o assunto. 
E, para saber mais sobre o manifesto ágil, acesse a Midiateca. 
3 Scrum
Schwaber e Sutherland (2013) definem Scrum como um framework em que as pessoas 
podem tratar e resolver problemas complexos e adaptativos, enquanto entregam de forma 
produtiva e criativa, produtos com mais valor. 
O Scrum não é um processo ou uma técnica, é um framework, ou seja, um conjunto de 
conceitos que são aplicados para resolver um problema de domínio específico. No caso, o 
problema do processo de software. A ideia básica é compor uma equipe, chamada de equipe 
Scrum, que terá papéis específicos, eventos e artefatos (documentos, ou qualquer coisa 
produzida durante o processo) e regras.
Nesse framework, os papéis específicos são:
• Equipe de Desenvolvimento – É um grupo de pessoas auto-organizável e 
multifuncional. Você não vai encontrar pessoas com papéis específicos, como 
desenvolvedor ou tester, todos trabalham multifuncionalmente. Segundo Cohn 
(2011) o tamanho de equipe ideal é de três a nove integrantes.
Senac São Paulo - Todos os Direitos Reservados
Engenharia de Software
7
• Product Owner – Também denominado de dono do produto, sua responsabilidade 
é garantir que se dedique ao objetivo correto, para isso, ele redige os requisitos e 
define as prioridades (COHN, 2011). Ele gerencia o backlog do produto, que é uma 
lista de tarefas que, quando finalizada, encerra o produto.
• Scrum Master – É o responsável por garantir que o framework Scrum seja entendido 
e aplicado pela equipe Scrum e, também, atua como um facilitador para remover 
impedimentos ao progresso da equipe durante as construções de uma versão do 
software (COHN, 2011). 
Além dos papéis, temos os eventos Scrum. A Figura 2 resume o sequenciamento 
desses eventos.
Figura 2 – Fluxo do processo Scrum
Fonte: Pressman (2011, p. 96).
O backlog do produto (ou product backlog) é um artefato Scrum. Representa uma lista 
ordenada de tudo que deve ser feito no produto. Essa lista é gerenciada pelo product owner. 
Dessa lista, selecionam-se os itens que serão entregues em um incremento de software. Os 
incrementos de software são desenvolvidos em sprints.
Um sprint pode durar de duas a quatro semanas. Isso é dimensionado pela equipe 
Scrum. Durante um sprint, existem ritos que devem ser seguidos para manter o framework 
em funcionamento. São exemplos, reuniões diárias, uso do gráfico burndown, burnup ou 
similares, monitoramento do sprint e outros. 
Senac São Paulo - Todos os Direitos Reservados
Engenharia de Software
8
4 Extreme programming
Mais conhecido por XP, é talvez o método ágil mais utilizado. O termo XP foi cunhado 
por Beck em 2000 e se baseou em uma coletânea de práticas reconhecidamente boas, como 
o desenvolvimento iterativo (por meio de iterações ou fases), ou a programação em pares. 
Esse conjunto de práticas foi resumido em Sommerville (2011) e reproduzido no Quadro 1:
Quadro 1 – Princípios do extreme programming
Princípio ou prática Descrição
Planejamento incremental
Requisitos são gravados em cartões de história e as histórias 
incluídas em um release são determinadas pelo tempo disponível 
e prioridade. Os desenvolvedores dividem as histórias em tarefas.
Pequenos releases
Inicia-se pelo desenvolvimento de um conjunto mínimo de 
funcionalidades úteis, que fornecem valor ao negócio. Os 
próximos releases vão gradualmente adicionando novas 
funcionalidades ao primeiro release.
Projeto simples Cada projeto é executado para atender às necessidades atuais.
Desenvolvimento baseado 
em testes
Utiliza-se um framework inicial de testes automatizados para 
escrever os testes de uma nova funcionalidade, antes que a 
funcionalidade seja implementada.
Refatoração Todos os desenvolvedores devem refatorar continuamente para 
manter o código simples e de fácil manutenção.
Programação em pares Os desenvolvedores trabalham em pares, verificando o trabalho 
do outro e prestando apoio para um bom trabalho.
Propriedade coletiva
Os desenvolvedores trabalham em todas as áreas do sistema 
de modo a não desenvolver ilhas de expertise. Todos os 
desenvolvedores assumem a responsabilidade por todo o código.
Integração contínua
Assim que o trabalho em uma tarefa é concluído, ele é integrado 
ao sistema como um todo. Após a integração, os testes unitários 
são repetidos.
Ritmo sustentável Grandes quantidades de horas-extras não são aceitáveis, pois 
geram muitas vezes um trabalho de baixa qualidade.
Cliente no local É necessário um representante usuário final disponível a todo o 
tempo para a equipe XP. O cliente é membro da equipe. 
Fonte: Adaptado de Sommerville (2011, p. 45).
Senac São Paulo - Todos os Direitos Reservados
Engenharia de Software
9
O XP apresenta uma abordagem extrema para o desenvolvimento incremental. Novas 
versões do software podem ser disponibilizadas no mesmo dia e um release é entregue ao 
cliente em períodos curtos de tempo.
Prazos não são desrespeitados. Se houver problemas na entrega do release, o cliente é 
consultado e a funcionalidade problemática pode ser retirada do release.
Aspectos como a programação em pares ou a refatoração podem ser polêmicos para 
alguns profissionais de engenharia de software, pois existem controvérsias sobre a 
produtividade quando se utilizam essas práticas. Segundo Sommerville (2011) foram 
realizados estudos sobre produtividade de programadores para avaliar a eficiência 
dessa prática.
No estudo realizado por Cockburn e Williams (2001) apud Sommerville 
(2011), usando estudantes voluntários, a conclusão do estudo foi que a 
produtividade na programação em pares foi comparável a duas pessoas que 
trabalham de forma independente. Entretanto, na pesquisa realizada por 
Arisholm et al (2007) apud Sommerville (2011) e Parrish et al (2004) apud 
Sommerville (2011), como programadores experientes, não foi possível replicar 
o resultado, e sim, perceberam uma perda significativa de produtividade em 
comparação com dois programadores trabalhando sozinhos. Ainda segundo os 
autores, apesar do benefício na qualidade, não havia compensação na perda 
de produtividade.Entretanto, os entusiastas do XP garantem que a programação em pares permite 
agilidade, porque muitas vezes o desenvolvedor demora muito tempo para encontrar uma 
solução de código e, quando se trabalha em pares, duas cabeças pensam melhor do que uma. 
Já a refatoração é uma prática interessante, pois quando você revê um código, pode pensar 
em estratégias mais simples para resolver o mesmo problema, além de fazer uso de padrões 
de refatoração para melhorar um código-fonte, como os propostos por Fowler (2004).
Considerações finais
Como vimos, o movimento ágil trouxe novas abordagens para o desenvolvimento de 
software, de modo a propiciar desenvolvimento mais rápido e de qualidade.
Vimos dois métodos que atualmente são expoentes no mercado de desenvolvimento 
de software: Scrum e XP. Contudo, existem outros métodos que podem ser consultados para 
estudos mais aprofundados como: 
Senac São Paulo - Todos os Direitos Reservados
Engenharia de Software
10
• Feature Driven Development;
• Crystal Clear;
• Adaptive Software Development.
Ou ainda, existem experiências que misturam partes de um ou outro método ágil, 
propondo métodos híbridos. Também vamos encontrar nessa área práticas da indústria 
de manufatura que foram inseridas no contexto do desenvolvimento de software, como o 
Kanban e o Lean. 
Portanto, este é um tema muito envolvente e apresenta diversas possibilidades de 
investigação para os interessados no assunto. O mercado vem gradativamente se inserindo 
nessas práticas, sempre na expectativa de buscar melhores métodos para desenvolver 
softwares no prazo, sem ultrapassar o orçamento e com qualidade. 
Referências
BECK, K. Embracing Change with Extreme Programming. IEEE Computer, v. 32. N. 10, 1999. P. 
70-78.
COHN, M. Desenvolvimento de software com Scrum: aplicando métodos ágeis com sucesso. 
Porto Alegre: Editora Bookman, 2011.
FOWLER, M. Refatoração: aperfeiçoando projeto de código existente. Porto Alegre: Editora 
Bookman, 2004.
MANIFESTO ÁGIL. Disponível em: . Acesso em: 06 dez. 2014.
PRESSMAN, R. S. Engenharia de software: uma abordagem profissional. Porto Alegre: Mcgraw 
Hill - Artmed, 2011.
SCHAWABER, K.; SUTHERLAND, J. The Scrum Guide. Disponível em: . Acesso em: 06 dez. 2014.
SCHAWABER, K.; BEEDLE, M. Agile software development with Scrum. Englewood Cliffs, N. J.: 
Prentice Hall, 2001.
SOMMERVILLE, I. Engenharia de software. 9. ed. São Paulo: Pearson, 2011.
STAPLETON, J. DSDM: Dynamic system development method. Harlow, Reino Unido: Addison 
- Wesley, 1997.
	ENG_SOFT_04_PDF_2014

Mais conteúdos dessa disciplina