Processos Ágeis
Aprenda o que são processos ágeis
Conheça as metodologias Scrum e Extreme Programming e quais as
diferenças entre as metodologias tradicionais e ágeis
Leonardo Simas, Osias Carneiro, Vagner Fonseca e Weslley Leandro
O desenvolvimento de tecnologias e a necessidade crescente de sistemas de informação vem
desafiando as empresas responsáveis pela criação de aplicações. É difícil acompanhar as mudanças
de tecnologias, as soluções cada vez mais complexas, as interferências do mundo externo, mudanças
nos requisitos, entre outros. Para tentar amenizar esses problemas, a Engenharia de Software procura
definir metodologias de desenvolvimento de software, que possibilitam uma organização nos
processos e etapas desde sua especificação até a implantação, como os processos ágeis.
Há diversas maneiras de se desenvolver um software de maneira rápida, por meio dos métodos ágeis
de desenvolvimento de software. Essa metodologia de desenvolvimento evoluiu a partir da metade
dos anos 90, com o fortalecimento da Engenharia de Software e com o surgimento de novas maneiras
de se pensar ao construir um software.
O objetivo deste artigo consiste em realizar uma abordagem a respeito das metodologias tradicionais
e as metodologias de processos ágeis, apresentando um breve histórico e focando nas duas principais
metodologias de desenvolvimento “Scrum” e “Extreme Programing (XP)”.
Metodologias Tradicionais
O modelo em Cascata, um dos mais utilizados até pouco tempo atrás (LEACH, 2000), definia etapas
que deveriam ser sequenciais, uma só deve ser iniciada após o termino da sua antecessora, como
observado na Figura 1.
Um modelo inflexível onde o cliente só poderia validar o que foi desenvolvido no final do processo
depois do software completamente desenvolvido, alterações na especificação eram difíceis ou
simplesmente impossíveis de serem realizadas durante o desenvolvimento. Muitas vezes gerava
o famoso “big bang” onde no final o software já não atendia as necessidades por mudanças no
ambiente externo ou precisava ser alterado e um novo fluxo se iniciaria.
O modelo em Espiral (Figura 2) sugere uma sequência de etapas mas, diferente do cascata, o
software é divido em versões chamadas de incremento. Possui quatro atividades:
1. Determinação dos objetivos da iteração
2. Análise dos riscos
3. Desenvolvimento
4. Validação, Testes e planejamento da próxima iteração
Figura 1. Etapas do modelo em cascata
Dessa forma é possível lidar melhor com alterações durante o projeto e a validação do que se está
desenvolvendo é melhor para o cliente, que acompanha o desenvolvimento. Mas assim como no
modelo em cascata não permite etapas sendo realizadas em paralelo ou que precisem de comunicação
com outras etapas.
Figura 2. Modelo em Espiral
O modelo Iterativo e Incremental apresenta um ciclo de vida iterativo baseado no aumento e no
refinamento sucessivo de um sistema através de múltiplos ciclos de desenvolvimento de análise, de
projeto, de implementação e de teste” (LARMAN, 2000).
Atualmente é o modelo mais utilizado, ou outros modelos baseados neste, que traz alguns benefícios
como (MARTINS, 1999):
● A redução de riscos com os custos e prazos planejados;
● A equipe fica focada com os objetivos de cada incremento, trabalhando de maneira mais
eficiente;
Um modelo emergente que combina um melhor gerenciamento e a preocupação com “como as
pessoas trabalham” (CANTOR, 1999).
Figura 3. Modelo Iterativo e Incremental
Processos Ágeis
As metodologias ágeis promovem o desenvolvimento com o trabalho em equipe, colaboração e
adaptabilidade durante o ciclo de vida do projeto. Assim como no modelo iterativo e incremental, o
software é dividido em versões, ou seja, possuem incrementos que são partes menores do software e
são realizados em torno de uma a quatro semanas, passando por todas as etapas desde especificação
até a fase de testes.
Com o objetivo de minimizar a quantidade dos possíveis erros a cada iteração, ela pode não gerar
uma versão com funcionalidade suficiente para o mercado e várias iterações podem ser necessárias
para lançar uma nova funcionalidade.
Há uma priorização na comunicação “cara a cara” entre os integrantes da equipe do que a
documentação (não quer dizer que não há documentação) e por isso sugere que todos trabalhem na
mesma sala.
É necessário um representante do cliente para que se possa tirar dúvidas e esclarecer questões que
possam surgir durante as iterações e que esteja disponível para atender os os demais participantes no
projeto do software.
Manifesto Ágil
Ao passar dos anos as organizações passaram a estar mais focadas em resultados rápidos e
precisos, contratando empresas de desenvolvedoras de software para agilizar os seus processos
institucionais e devido aos projetos de software sofrer diversas transformações, nos últimos tempos
metodologias de desenvolvimento, como o Scrum e o XP, se fortaleceram. Entre elas, a metodologia
de desenvolvimento ágil de software se consolidou no mundo de desenvolvimento de software e
em 2001 o “Manifesto Ágil” termo criado após a criação da Aliança Ágil onde foram apresentados
alguns métodos de desenvolvimento de software entre eles se destacam os métodos Scrum e Extreme
Programming (XP), e também foram fundamentados alguns princípios e características entre os
métodos. Esses métodos aumentam o desempenho e provendo mais qualidade ao produto final.
Scrum
No início do ano de 1986 Hirotaka Takeuchi e Ikujiro Nonaka, escreveram um artigo, foi observado
que equipes pequenas e com baixo nível de especialização, obtêm melhores resultados do que
equipes grandes, nisso há uma semelhança com uma equipe de rugby, quando uma falta é cometida,
eles se arranjam em uma formação coesa de nome Scrum.
O Scrum é uma metodologia ágil iterativa e incremental, pois trata-se de um framework que facilita a
visualização de problemas, mesmo os que possuem de dificuldade elevada.
Scrum tem por objetivo agregar o máximo de valor ao negócio com o menor tempo possível, focando
no Retorno de Investimento (ROI), administrando complexidade, imprevisibilidade e mudança por
meio da visibilidade, inspeção e adaptação (SUTHERLAND, 2002).
Quanto aos papéis executados o Scrum determina três (SCHWABER, 2009):
● Scrum Master - Tem a função de líder de equipe, protegendo-a de obstáculos e problemas
que a impeçam de realizar seu trabalho.
● Product Owner - Maximiza o trabalho do time Scrum, definir recursos, escolher datas de
lançamento, fornecer feedback dos processos e garantir que as regras Scrum sejam seguidas,
ou seja, é o cliente ou alguém que o represente.
● Time Scrum - Responsável pelo desenvolvimento do projeto, tem de 5 à 9 integrantes, define
tarefas e o esforço para realizar as tarefas com a qualidade desejada pelo Product Owner.
Para SUTHERLAND(2008) as princípais ferramentas do Scrum são o backlog do produto, backlog
do sprint, burndown para entrega e burndown do sprint.
SCHWABER(2009) define que o backlog do produto é um documento com requisitos separados por
prioridades que são indispensáveis ao produto. Backlog do sprint é a lista de tarefas que a equipe
executará para transformar o backlog do produto em um incremento entregavel ao cliente. Um
burndown de versão para entrega mede o backlog de produto restante ao longo do tempo de um plano
de entrega. O burndown de sprint mede os ítens do burndown de sprint restantes ao longo do tempo
de uma sprint.
O scrum utiliza-se de eventos de duração fixa, planejamento de versão para entrega, sprint, reunião
diária, revisão e retrospectiva da sprint
● Planejamento da versão: é onde os documentos que definem os requisitos do produto
são concebidos (backlog de produto), suas prioridades e a estimativa de esforço para cada
requisito.
● Reunião da sprint: aqui os requisitos são apresentados à equipe e são definidos, de acordo
com a habilidade de cada um, a tarefa que executarão (backlog da sprint) essa reunião tem em
média 3 a 12 horas dependendo da sprint.
● Sprint: para SCHWABER (2009) essa fase é a coroação do Scrum, com duração por volta de
30 dias, nesse momento os requisitos são desenvolvidos e implementados, ao final é entregue
um incremento funcional ao cliente.
● Revisão da sprint: Reunião entre a equipe com no máximo duas horas de duração onde os
resultados são apresentados, deve-se ter cuidado ao dizer “realizado” já que os resultados
serão apresentados ao cliente.
● Retrospectiva do sprint: Nessa reunião verifica-se o que foi feito de positivo e também
os pontos negativos, afim de revisar o que foi feito de errado para ser corrigido em versões
posteriores, atualizando-se o backlog do produto.
Figura 4. As etapas da metodologia Scrum e sua duração média
Extreme Programming (XP)
O Extreme Programming (XP), metodologia criada por Kent Beck, está voltado principalmente para
pequenas e médias equipes, visando o desenvolvimento de software que se baseiam em requisitos
vagos e que se modificam rapidamente (Beck, 1999). O método XP se diferencia dos demais devido
a uma abordagem incremental, fortalecendo a comunicação (feedback) entre as pessoas envolvidas no
processo de desenvolvimento.
O XP possui quatro valores fundamentais: comunicação, simplicidade, feedback e coragem (Beck,
1999). Para alcançar sucesso na utilização do XP, é preciso seguir todos esses valores.
● Comunicação: deve ocorrer da maneira mais direta (face-a-face) e eficaz possível, a fim
de oferecer agilidade aos assuntos tratados, esclarecendo dúvidas de imediato e evitando
especulações ou mal entendidos entre as partes. O cliente deve estar a disposição da equipe e
membros introvertidos devem ser evitados.
● Simplicidade: é preciso simplicidade no desenvolvimento das funcionalidades solicitadas.
O desenvolvedor deve implementar apenas o necessário para atender ao usuário, sem se
preocupar com funcionalidades que podem ser importantes no futuro, pois elas podem nunca
ser utilizadas.
● Feedback: com partes funcionais em mãos, o cliente estará apto a conduzir a equipe de
desenvolvimento, estabelecendo prioridades e identificando erros imediatamente. Em
contrapartida, o desenvolvedor poderá apontar riscos e estimativas.
● Coragem: por se tratar de uma metodologia nova, que contraria o modelo tradicional, a
equipe precisa de coragem para implantar os três valores anteriores. Nem todos possuem
facilidade de comunicação ou paciência para obter feedback constante do cliente.
Além dos quatro valores básicos, o XP baseia-se em diversas práticas (Figura 5). Para Beck (1999)
existem doze principais práticas de desenvolvimento, elencadas e descritas abaixo:
● Planejamento: consiste em definir o que será feito e o que será adiado. O foco deve estar nos
requisitos atuais e não nos futuros. A escolha deve gerar o máximo de valor para o cliente.
● Entregas frequentes: trata-se de construir um software simples e em seguida adicionar
funcionalidades conforme elas forem surgindo. Com isso, o feedback do cliente será mais
rápido e surpresas serão evitadas.
● Metáfora: são comparações e analogias utilizadas para explicar situações mais facilmente,
sem o uso de termos técnicos. Essa técnica facilita a comunicação e a fixação dos assuntos
entre as partes.
● Projeto simples: o software desenvolvido deve ser o mais simples possível para resolver
o problema atual do cliente, sem se preocupar com requisitos futuros. Esses devem ser
adicionados assim que forem realmente necessários.
● Testes: garantem resultados corretos das funcionalidades. Os testes devem ser feitos de
preferência antes do desenvolvimento (TDD - Test Driven Development).
● Programação em pares: dois desenvolvedores trabalharão em um único computador.
Enquanto um codifica o outro observa, buscando estratégias para otimizar o código do colega.
A troca de experiências e idéias é um dos grandes benefícios.
● Refatoração: consiste em reescrever um código ilegível, duplicado, despadronizado etc. sem
alterar o seu comportamento.
● Propriedade coletiva: o código pertence a toda a equipe. Dessa forma, qualquer
desenvolvedor que julgar necessário modificá-lo, poderá fazé-lo.
● Integração contínua: a integração entre as partes do software deve ser efetuada,
preferencialmente, várias vezes ao dia.
● 40 horas de trabalho semanal: mais de 40 horas semanais de trabalho significa problema
no projeto e deve ser resolvido com melhor planejamento, não com aumento de horas
trabalhadas.
● Cliente presente: o cliente deve estar sempre disponível para tirar dúvidas, evitando atrasos
na comunicação e implementações erradas. É interessante torná-lo parte da equipe de
desenvolvimento.
● Código padrão: seguir padrões previamente acordados de codificação reforça a comunicação
entre os programadores, facilitando o entendimento e a manutenção.
Figura 5. Valores, princípios e práticas do Extreme Programming
Relato - Implantação de Processos Ágeis
Segundo o estudo de caso realizado no Banco Central do Brasil (MELO e FERREIRA, 2010), a
implantação de processos ágeis pode solucionar questões que não são abordadas pelas metodologias
tradicionais. A empresa utilizava um processo derivado do Rational Unified Process (RUP), um
processo iterativo, mas robusto.
A empresa planejou dois projetos pilotos com duas equipes contendo 7 e 6 pessoas respectivamente,
sendo que a maioria dos desenvolvedores possuíam experiência de 2 ou mais anos na área de
desenvolvimento, mas poucos conheciam as metodologias a serem utilizadas ou sobre os conceitos
de processos ágeis.
No início do primeiro projeto foram apresentados os conceitos sobre métodos ágeis e as
metodologias Scrum e XP, para familiarização da equipe. Segundo o relato (MELO e FERREIRA,
2010), as equipes compreenderam e aplicaram facilmente as práticas de pares e de equipes do XP,
sendo que a programação em pares foi de fácil compreensão e absorção pela equipe e a prática
da “metáfora” a mais complexa de ser interpretada.
A prática de execução de testes pelo cliente bem como as entregas curtas, apesar de bem
compreendidas, não foram de fácil aplicação devido cultura do cliente. Mesmo que as entregas
agregassem funcionalidades de certo valor, a organização não tinha o costume de receber soluções
inacabadas.
A equipe relata que houve um ganho quanto a rapidez no aprendizado de tecnologias, conceitos e
padrões. A produtividade foi medida nos dois projetos pilotos utilizando, a medição por pontos de
função e pelas horas gastas nos mesmos. No primeiro houve um ganho de mais de 8% e no segundo
mais de 30% em relação a média da organização. O primeiro era mais complexo que o segundo e a
curva de aprendizado foi maior, pois foi a primeira vez que utilizaram processos ágeis e o segundo
aprendeu com os erros do primeiro.
Os clientes compararam os resultados obtidos com suas experiências passadas usando metodologias
tradicionais, com isso foi gerado uma nítida satisfação do cliente, pois foi possível observar
benefícios como:
● Redução no prazo de entrega
● Facilidade/possibilidade de alterações
● Entendimento aprimorado sobre os custos
● Maior segurança quanto aos testes realizados
A implantação de qualquer metodologia em uma organização é um processo lento, complexo e
exige mudanças na cultura organizacional da empresa, logo dois pilotos não foram suficientes para
a mudança. Mas os ganhos com produtividade e satisfação do cliente compensam tais custos e
obstáculos e favorece a implementação.
Conclusão
Neste artigo abordamos a respeito do Scrum e XP que são metodologias de desenvolvimento de
software utilizadas nos projetos piloto do Banco Central do Brasil. Aplicar um processo ágil em
uma organização requer uma mudança na cultura da mesma exigindo tempo e gerenciamento dessa
implantação. A organização deve precisa ter um ambiente favorável a comunicação, o tamanho do
projeto pode inviabilizar essa comunicação, são indicadas a formação de equipes de no máximo 20
ou 40 pessoas sendo ela composta por pessoas experientes. Os processos ágeis atendem muito bem
projetos e organizações que preenchem esses requisitos mas apesar de já proporcionarem resultados
de sucesso há aqueles que afirmam que ainda é preciso de mais resultados para comprovar o sucesso
desses métodos.
Referências
OLIVEIRA, Alexsandro; MATEUS, Andrade; VINICIUS, Corrêa; Uma Introdução às Metodologias
Ágeis de Desenvolvimento de Software. Salvador, Bahia.
SILVA, Maysa Alves da Conceição; FILHO, Heitor Roriz; SILVA, Helena de Fátima Nunes;
Análise do BA durante o processo Scrum. Artigo apresentado no XVII Simpósio de engenharia de
produção, Bauru, São Paulo, Brasil, 2010.
BONA, Cristina. Avaliação de Processos de Software: Um Estudo de Case em XP e ICONIX. 2002.
122 f. Dissertação (Mestrado em Engenharia de Produção) - Universidade Federal de Santa Catarina.
Florianópolis, 2002.
Agile Alliance. Acesso em: 25 de julho de 2011. Disponível em: <http://www.agilealliance.org>
Manifesto para Desenvolvimento Ágil de Software. Acesso em 26 de julho de 2011. Disponivel em
<http://agilemanifesto.org/iso/ptbr/>
Agile Software Development. Acesso em 29 de julho de 2011. Disponível em: <http://
en.wikipedia.org/wiki/Agile_software_development>
Comparação entre Metodologias Ágeis e Tradicionais para o Desenvolvimento de Software. Acesso
em 28 de julho de 2011. Disponível em:
<http://www.inf.ufrgs.br/~dsogari/material/S5/INF01127/Material/Comparacao-Metodos-AgeisTradicionais.pdf>
MELO, Claudia de O, FERREIRA, and Gisele R. M. Adoção de métodos ágeis em uma Instituição
Pública de grande porte - um estudo de caso., In Proceedings of the Brazilian Workshop for Agile
Methods (WBMA 2010) in the Brazilian Conference on Agile Methods (Agile Brazil 2010), pp. 112125. June, 2010. Disponível em: <http://www.agilcoop.org.br/files/WBMA_Melo_e_Ferreira.pdf>
Leonardo Simas ([email protected]) é graduando em Sistemas de Informação pela Universidade do Estado da Bahia
(UNEB) e estagiário no Instituto Recôncavo de Tecnologia.
Osias Carneiro ([email protected]) é graduando em Sistemas de Informação pela Universidade do Estado da Bahia
(UNEB) e estagiário no Instituto Recôncavo de Tecnologia.
Vagner Fonseca ([email protected]) é graduando em Sistemas de Informação pela Universidade do Estado da Bahia
(UNEB), foi coordenador do grupo de desenvolvimento da XI Escola Regional de Computação Bahia Alagoas Sergipe (XI ERBASE),
participou do projeto de desenvolvimento de agente para sistema de Segurança de Notebooks Leadership e estagiário da Gerência
de Informática da UNEB.
Weslley Leandro ([email protected]) é graduando em Sistemas de Informação pela Universidade do Estado da Bahia
(UNEB) e estagiário na Wcs Design.
Download

Artigo Completo () - Colegiado de Sistemas de Informação