Este documento fornece um resumo de três metodologias ágeis populares: Scrum, Extreme Programming (XP) e Kanban. Ele analisa comparativamente essas metodologias e revela que Scrum é a mais amplamente adotada na indústria de software atualmente.
QATEST - Agile Brazil 2014 - O impacto do DEVOPS na Qualidade de Software
Estudo empírico da metodologia do desenvolvimento ágil de software
1. Estudo empírico da Metodologia do Desenvolvimento Ágil de Software: Uma
análise comparativa.
RESUMO
Na atual indústria de software, proezas tecnológicas e a constante evolução das
necessidades dos clientes levaram a uma demanda de software mais complexos. O
software baseado no desenvolvimento ágil está sendo cada vez mais adotada pelos
desenvolvedores, uma vez que o software é desenvolvido de forma rápida e com alta
qualidade. Além disso, oferece a capacidade de resposta à alterações requeridas pelo
usuário, fornecida pela sua rápida compreensão durante o desenvolvido do software.
Neste papel, nós elaboramos a importância, benefícios e o aumento da adoção da
metodologia Ágil no contexto de demandas de software complexos e em evolução de
hoje. O objetivo principal deste artigo é conduzir um estudo empírico na escolha entre
as metodologias Ágeis mais populares, Scrum, Programação Extrema (Extreme
Programming) e Kanban. Além disso, este artigo prevê uma análise comparativa entre
as várias metodologias de desenvolvimento ágil de software. Este artigo fornece uma
análise comparativa entre os resultados de várias metodologias de desenvolvimento ágil
de software e revela a alta adoção do desenvolvimento baseado no Scrum na indústria
de software atual quando comparada com as metodologias Programação Extrema e
Kanban.
1. INTRODUÇÃO
Na indústria moderna de software, a entrega de software de alta qualidade é o objetivo
primordial para os desenvolvedores. Abordagem não planejada e não sistemática no
desenvolvimento de software, se aplicado nos requisitos de softwares complexos,
certamente irá resultar em desenvolvimento de baixa qualidade e alto custo do produto.
Assim,a abordagem de desenvolvimento de software desempenha um papel importante
na decisão sobre a qualidade do software a ser entregue. Essa percepção entre os
profissionais de software levou à formaçãoe implantação de vários modelos de software
de ciclo de vida de desenvolvimento. De acordo com Kevin Roebuck, um Ciclo de Vida
de Desenvolvimento de Software fornece a estrutura para o planejamento e controle do
desenvolvimento ou modificação dos produtos, juntamente com as metodologias e
modelos utilizados para desenvolvimento de software.
A indústria de software passou de modelos de desenvolvimento de software tradicionais
para o de desenvolvimento Ágil baseado em resposta à crescente complexidade do
software e as necessidades dos utilizadores dinâmicos. Ao contrário dos modelos
tradicionais, os métodos ágeis são caracterizados pelo desenvolvimento em pequenos
ciclos, maior interação com o cliente, entrega incremental, redesenho frequente com as
mudanças exigidas requeridas pelas necessidades dos usuários. Apesar de diversas
metodologias de desenvolvimento de software praticar o mesmo conjunto de princípios
ágeis formulada por Manifesto Ágil (Agile Manifesto), eles diferem entre si em vários
parâmetros.
Este estudo fornece uma comparação entre as metodologias Ágeis mais populares,
Scrum, Extreme Programming e Kanban. Os resultados da pesquisas certamente irá
ajudar os profissionais de software a escolher entre essas metodologias Ágeis. O
restante deste artigo é estruturado da seguinte forma. Seção 2 compromete-sea revisão
da literatura, seguida pela seção 3, que elabora sobre a transição com base no
desenvolvimento ágil e seus benefícios associados. Seção 4 discute os métodos ágeis
2. mais populares, seguido pela seção 5 que fornece uma análise comparativa entre as
metodologias Scrum, Extreme Programming e Kanban baseadas do desenvolvimento
Ágil, finalizando com a seção 6 que fornece as conclusões.
2. REVISÃO LITERAL
Embora muitos estudos tenham sido feitos por equipes individuais, poucos dados estão
disponíveis no suporte de sucessoemaior adoção de metodologias do desenvolvimento
de ágil software. O relatório CHAOS 2011 do grupo Standish conclui que as
metodologias são três vezes tão bem sucedidas como as abordagens tradicionais de
desenvolvimento de software.
As conclusões da 8º Estado Anual de Pesquisa do Desenvolvimento Ágil [3] conduzido
por Versionone.com em 2013 concluiu que 92% dos entrevistados acreditam que a
abordagem os auxiliaram a gerenciar as mudanças de requisitos dos clientes; 87% deles
concordaram que a abordagem ágil ajudou a melhorar a produtividade das suas equipes
considerando que 70% acreditam que a abordagem de software ágil acelerou o
processode desenvolvimento. Além disso,a pesquisa indicou uma clara tendência para
a maior adoção de metodologias baseadas em Scrum com 73% dos entrevistados
praticando Scrum e suas variantes para o desenvolvimento de software.
A Pesquisa Ágil de Xebia 2012 revela que 80% dos entrevistados concordaram em fazer
uso da metodologia Ágil para o desenvolvimento de software. Além disso, a pesquisa
também concluiu que 92% dos entrevistados seguem o Scrum e o Extreme
Programming (XP) enquanto que 30% segue o Kanban. O estudo empírico conduzido
por O. Salo e P. Abrahamsson apontam para a maior adoção do Extreme Programming
do que para a metodologia Scrum por organizações de desenvolvimento de software
em toda a Europa.
Um outro estudo empírico significante conduzido por Andrew Begel e Nachiappan
nagappan [6] na Microsoft revelou que em torno de 33% dos entrevistados afirmaram
utilizar o método de desenvolvimento Ágil, com o Scrum sendo o método de
desenvolvimento ágil mais popular na Microsoft. A pesquisa conduzida por G. Azizyan
e M.K. Magarian [7] concluiu que dois terços dos entrevistados usavam ferramentas do
método Ágil, com o Scrum sendo a metodologia usada entre as empresas entrevistadas.
3. TRANSIÇÃO PARA DESENVOLVIMENTO DE SOFTWARE ÁGIL
Desde a década de 70, intervenções tecnológicas avançadas e requisitos dinâmicos dos
usuários têm contribuído para demandas mais complexas de software que exigem
desenvolvimento planejado através do desenvolvimento e aplicação de modelos formais
de desenvolvimento de software, eliminando, assim, abordagens de desenvolvimento
de software antigos e informais. Profissionais de software modernos empregam
modelos de desenvolvimento de software para a produção de software de alta
qualidade, atendendo as necessidades dos clientes e assegurando a entrega em tempo
certo e de uma forma rentável. Os modelos de desenvolvimento de software garantem
uma abordagem sistemática e organizada para o desenvolvimento.
Metodologias de peso, também conhecidas como desenvolvimento tradicional de
software são caracterizadas pelo planejamento abrangente, processo de orientação,
abordagem preditiva e documentação pesada. Ao contrário das metodologias
tradicionais de software, as metodologias leves prometem entregas frequentes de
incrementos de softwares em pequenos ciclos de interação. As metodologias leves,
3. popularmente conhecidas como metodologias ágeis, fizeram grandes incursões na
indústria de software nos últimos anos. Uma comparação entre os métodos tradicionais
e métodos ágeis estão apresentados na Tabela 1.
TABELA 1. COMPARAÇÃO DE MÉTODOS TRADICIONAIS DE DESENVOLVIMENTO DE SOFTWARE
E MÉTODOS ÁGEIS DE DESENVOLVIMENTO DE SOFTWARE
Parâmetro Métodos Tradicionais Métodos Ágeis
Adaptabilidade a mudança Mudança de
sustentabilidade
Mudança de
adaptabilidade
Abordagem de
desenvolvimento
Preditiva Adaptativa
Orientação de
desenvolvimento
Processo orientado Pessoa orientada
Tamanho do projeto Grande Pequeno/Médio
Escala de planejamento Longo prazo Curto termo
Estilo de gestão Comando e controle Liderança e colaboração
Aprendizagem Aprendizagem continua
enquanto desenvolve
Aprendizagem depois do
desenvolvimento
Documentação Alta Baixa
Metodologias baseadas no desenvolvimento Ágil oferece uma produção sistemática de
software resultado em uma melhor qualidade do produto. Além disso, os métodos
baseados na metodologia Ágil são caracterizados por uma melhor produtividade,
flexibilidade, maior envolvimento do cliente e capacidade de resposta à evolução das
exigências dos usuários. Várias pesquisas confirmaram uma rápida adaptação da
abordagem ágil na indústria de software. Uma pesquisa foi feita por Murphy et al. [9]
demonstrou um aumento na prática da metodologia Ágil dentro da Microsoft entre 2006
e 2012.
4. METODOLOGIAS DO DESENVOLVIMENTO ÁGIL DE SOFTWARE
Na abordagem de desenvolvimento ágil de software, o trabalho é levado em pequenas
fases, baseado na colaboração, planejamento adaptativo, entrega rápida, melhorias
continuas, feedbacks regulares dos clientes, redesenho frequente resultando em
desenvolvimento de melhorias no software sendo entregues em sucessivas iterações
em resposta às necessidades dos clientes em constante mudança. Metodologias ágeis
estão sendo cada vez mais adotada por empresas em todo o mundo para atender a
complexidade do software e a evolução das demandas dos usuários.
4. O desenvolvimento ágil de software incorpora várias metodologias, incluindo Extreme
Programming,Scrum,Kanban, Lean (magra, pobre), FDD(Feature-Driven Development
– Recurso de Desenvolvimento Orientado), Crystal, DSDM (Dynamic Systems
Development Method – Métodos de Desenvolvimento Dinâmico de Sistemas).
Figura 1. Benefícios dos Métodos Ágeis
4.1 Scrum
Em um passado recentes, a indústria de software tem enfrentado vários desafios
incluindo a demanda dos clientes dinâmicos, requisitos complexo, cronogramas de
projetos apertados e limitações de recursos e orçamentos. Isto exige uma abordagem
pragmática para o desenvolvimento de software que fornece seus produtos de alta
qualidade dentro do cronograma e do orçamento atribuído. O Scrum é uma metodologia
do tipo que gerencia o desenvolvimento de software em várias iterações curtas
conhecidas como sprints. Cada sprint inclui todas as fases do modelo de ciclo de vida
de desenvolvimento do software comoproposto, comoa implementação, testes, revisão
do cliente, etc.
De acordo com a pesquisa realizada pelo French Scrum User Group (Grupo Fracês de
Usuários Scrum) [10] em 2009, 86% das companhias entrevistadas defendeu o uso do
desenvolvimento baseado no Scrum. As conclusões do 8º Estado Anual da Pesquisa
de Desenvolvimento Ágil realizada por Versionone.com em 2013 revelou que 73% dos
entrevistados concordam com a prática do Scrum e suas variáveis para
desenvolvimento de software. A pesquisa feita por O. Salo e P. Abrahamsson [5] focada
nas empresas de desenvolvimento de software na Europa com 27% delas respondendo
a favor da metodolodia Scrum. As características únicas do desenvolvimento baseado
no Scrum são:
5. 4.1.1 Colaboração
O desenvolvimento baseado no Scrum promove a colaboração, uma vez que ele é
conduzido por equipes multifuncionais onde todas as pessoas com suas habilidades e
experiências, contribuem para a melhor solução do projeto. Uma equipe multifuncional
inclui uma mistura de programadores, arquitetos de software, analistas de software e
QA experts (especialistas em perguntas e respostas).
4.1.2 Reuniões Diárias
A metodologia Scrum é marcada por reuniões diárias de curta duração onde o grupo de
desenvolvimento de um produto se reúne para conversaram e avaliarem o status do
progresso do desenvolvimento de um software, e assim, melhorando a produtividade
dos membros da equipe.
4.1.3 Product Backlog
O Product Backlog é uma lista de funcionalidades desejadas de um produto, ou seja, os
requisitos que um cliente espera receber ao final do projeto, descrito com sua própria
linguagem. O ponto central do Scrum é a criação do Product Backlog, é nele que o
projeto começa.
4.1.4 Sprint Backlog
O Sprint Backlog é uma lista de tarefas que o Scrum Team se compromete a fazer em
um Sprint. Os itens do Sprint Backlog são extraídos do Product Backlog, pela equipe,
com base nas prioridades definidas pelo proprietário do produto e a percepção da
equipe sobre o tempo que será necessário para completar as várias funcionalidades.
4.1.5 Papéis
O desenvolvimento baseado no Scrum é regido por 3 papéis primários:
4.1.5 Proprietário do Produto: Responsável por definir, priorizar e comunicar os
requisitos do produto e guiar o processo de desenvolvimento do mesmo.
4.1.5 Equipe de Desenvolvimento: Responsável pela execução das tarefas atribuídas
pelo proprietário do produto dentro do prazo de entrega. Geralmente, uma equipe
multifuncional com 3 – 9 membros implementam as tarefas previstas pelo proprietário
do produto.
4.1.5 Scrum Master: Responsável por fazer cumprir as regras e os princípios do
desenvolvimento baseados no Scrum. O Scrum Master remove os obstáculos e ajuda a
melhorar o processo, a equipe de desenvolvimento e o produto a ser desenvolvido.
Figura 2. Desenvolvimento baseado no Scrum
6. 4.2 Extreme Programming (XP)
James Newkirk [11] define o Extreme Programming (XP) como uma metodologia leve
que facilita o desenvolvimento de software planejados e iterativos por pequenas equipes
de desenvolvedores para alcançar um alto nível de qualidade e maior produtividade, em
resposta à rápida evolução dos requisitos. Extreme Programming é caracterizada por
níveis intensos de interação com o consumidor durante o processo de desenvolvimento
do software.
O French Scrum User Group [10] realizou uma pesquisa sobre o uso e a utilidade da
metodologia Ágil na França em 2009. Dentre os entrevistados incluíam 230 profissionais
de mais de 150 companhias, e com a pesquisa se pode concluir que 52% das
companhias defenderam o uso do Extreme Programming (XP). Uma outra pesquisa
realizada por O. Saulo e P. Abrahamsson [5] algumas organizações de desenvolvimento
de software em torno da Europa revelou que 54% das organizações entrevistadas
estavam usando o Extreme Programming. As características distintivas do Extreme
Programming (XP) que a destaca das outras abordagens são [12, 13, 14]:
4.2.1 Requisitos como Cartão de História
Os requisitos são representados como cenários pelos utilizadores, os quais são, em
seguida, formulados em Cartões de História. Os desenvolvedores dividem cada cartão
de história em uma série de pequenas tarefas, que são posteriormente priorizadas pelo
cliente para ser implementado.
4.2.2 Simplicidade
O XP favorece o início do desenvolvimento de software com o projeto mais simples,
enquanto as funcionalidades adicionais podem ser adicionadas como e quando for
necessário por parte do cliente. Além disso, um simples projeto e um simples código
pode ser facilmente compreendido pela equipe de desenvolvimento.
4.2.3 Interação Contínua
O XP inclui níveis extremos de interação com o cliente através de loops de feedback
estabelecidos. O envolvimento do cliente ocorre em pequenas iterações frequentes,
garantindo com que ele permaneça familiarizado com o progresso do desenvolvimento
de software. Além disso, isso permite uma rápida adaptação de mudanças no software
conforme o feedback do cliente.
4.2.4 Test Drive do Desenvolvimento
O XP emprega o “teste drive do desenvolvimento”, onde os casos de teste para uma
certa tarefa são escritos antes de sua codificação começar. Esses testes continuam a
ser uma parte integral durante todo o processo do Extreme Programming.
4.2.5 Refatoração
O XP incentiva o esforço para melhorar o projeto e a solução de alta qualidade por
refatoração de soluções existentes, conseguindo assim maior confiabilidade de código
e redução da complexidade.
4.2.6 Programação em Pares
Outro conceito único em XP é a programaçãoem pares, onde programadores trabalham
em duplas, resultando em melhor comunicaçãoe redução do horário de trabalho e carga
de trabalho.
7. Figura 3. Extreme Programming (XP)
4.3 Kanban
Entre o grupo de metodologias ágeis, a metodologia Kanban está ganhando
popularidade significativa na indústria de software. Como explicado por David J.
Anderson et al. [15], Kanban fornece um meio de visualizar e limitar o trabalho em
andamento durante o processode desenvolvimento de software. O método Kanban foca
no agendamento de trabalho de modo a facilitar a entrega de produto de software no
tempo certo para a implementação. Organizações de todo o mundo estão adotando o
Kanban e o absorvendo em seus processos de desenvolvimento de softwareatuais para
melhor agilidade do modelo de negócio.
4.3.1 Quadro Kanban
O quadro Kanban é uma ferramenta de visualização de fluxo de trabalho que permite
otimizar e orientar esse fluxo através da divisão do trabalho em categorias, incluindo
trabalhos a fazer, em andamento e concluídos.
4.3.2 Maximiza a Produtividade
O desenvolvimento de software Kanban promete uma otimização de fluxo de trabalho e
programação, maximizando a produtividade da equipe e reduzindo o tempo ocioso.
4.3.3 Entrega Contínua
A metodologia Kanban está intimamente relacionada com a entrega contínua de
incrementos de software em vez de liberação de funcionalidades em lotes. Lançamento
de pequenas partes do produto em sucessivas iterações é dirigida a satisfazer as
exigências dinâmicas dos clientes.
4.3.4 Minimização de Perdas
Na abordagem Kanban, as tarefas são executadas apenas quando elas são realmente
necessárias. Isso resulta na eliminação da superprodução e reduz o trabalho
desperdiçado e tempo perdido.
8. 4.3.5 Limites de Trabalho em Progresso (WIP)
O objetivo principal da metodologia Kanban é limitar o trabalho em andamento, de modo
a otimizar o fluxo de trabalho do sistema de acordo com sua capacidade. Uma restrição
WIP pode ser aplicada em partes do fluxo de trabalho ou em todo o processo.
5. COMPARAÇÃO ENTRE AS METODOLOGIAS DE DESENVOLVIMENTO ÁGIL DE
SOFTWARE
Embora várias metodologias seguem o mesmo conjunto de princípios formulados pelo
método Ágil [17], eles se diferem em vários parâmetros de princípios ágeis.
Figura 4. Quadro Kanban usado na metodologia Kanban
Uma mistura de conversas telefônicas e e-mail foram realizadas com os representantes
de 15 empresas de desenvolvimento de software. De acordo com os resultados do
inquérito, 10 empresas foram consideradas adeptas do desenvolvimento baseado no
Scrum, enquanto três delas expressaram sua confiança no abordagem do Extreme
Programming e as 2 restantes adotaram a abordagem Kanban para desenvolvimento
de software.
9. Figura 5. Gráfico de barra que descreve que o Scrum está sendo mais praticado em
comparação ao XP e Kanban
6. CONCLUSÃO
O desenvolvimento de software baseado na metodologia Ágil fornece uma solução
eficaz para os desafios que a indústria de software enfrenta atualmente, incluindo uma
complexidade cada vez maior de software, requisitos de usuário, os baixos orçamentos
e prazos apertados. O súbito aumento da adoção dos métodos ágeis em toda a indústria
de software comprova a sua utilidade e eficácia. Os processos ágeis asseguram
interação frequente entre desenvolvedores e clientes, além de oferecer um valor
adicional e melhor retorno sobre o investimento, juntamente com a capacidade de
resposta rápida às demandas do software. Com o nosso estudo empírico, pretende-se
contribuir para o corpo já existente de conhecimento sobre a análise comparativa de
metodologias ágeis. Os resultados do inquérito demonstram uma clara tendência para
a maior adoção de desenvolvimento baseado no Scrum em comparação com outras
variantes ágeis, como Extreme Programming e Kanban. A análise comparativa das três
metodologias ágeis, ou seja, Scrum, XP e Kanban concluiu que, embora a família Ágil
seja compostade várias abordagens de desenvolvimento de softwareque compartilham
o mesmo conjunto de princípios ágeis, eles se diferem em vários parâmetros. Entre
todos os métodos ágeis, o Scrum tem a maior aprovação enquanto que a Extreme
Programming ainda está conquistando o os profissionais de software, e o Kanban está
sendo cada vez mais explorado.