SlideShare uma empresa Scribd logo
1 de 9
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
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,
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.
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:
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
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.
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.
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.
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.

Mais conteúdo relacionado

Mais procurados

MAPEAMENTO ENTRE A METODOLOGIA ÁGIL FDD E O MODELO DE QUALIDADE MPS.BR NOS N...
MAPEAMENTO ENTRE A METODOLOGIA ÁGIL FDD E O  MODELO DE QUALIDADE MPS.BR NOS N...MAPEAMENTO ENTRE A METODOLOGIA ÁGIL FDD E O  MODELO DE QUALIDADE MPS.BR NOS N...
MAPEAMENTO ENTRE A METODOLOGIA ÁGIL FDD E O MODELO DE QUALIDADE MPS.BR NOS N...Adson Wendel
 
Handbook Capitulo 14 - Expandindo a usabilidade
Handbook Capitulo 14 - Expandindo a usabilidadeHandbook Capitulo 14 - Expandindo a usabilidade
Handbook Capitulo 14 - Expandindo a usabilidadeLuiz Agner
 
Desenvolvimento ágil de software: análise sintética a partir de KANBAN
Desenvolvimento ágil de software: análise sintética a partir de KANBANDesenvolvimento ágil de software: análise sintética a partir de KANBAN
Desenvolvimento ágil de software: análise sintética a partir de KANBANFernando Palma
 
Implantacao.Processo.Fabrica.SL
Implantacao.Processo.Fabrica.SLImplantacao.Processo.Fabrica.SL
Implantacao.Processo.Fabrica.SLAnnkatlover
 
Uma análise sobre gestão de pessoas baseada nos métodos ágeis
Uma análise sobre gestão de pessoas baseada nos métodos ágeisUma análise sobre gestão de pessoas baseada nos métodos ágeis
Uma análise sobre gestão de pessoas baseada nos métodos ágeiss4nx
 
TCC_CMMI_Projeto_AndreLuisDeAndrade_FINAL
TCC_CMMI_Projeto_AndreLuisDeAndrade_FINALTCC_CMMI_Projeto_AndreLuisDeAndrade_FINAL
TCC_CMMI_Projeto_AndreLuisDeAndrade_FINALAndre Luis de Andrade
 
Desenvolvimento e manutenção de software usando práticas do gerenciamento do ...
Desenvolvimento e manutenção de software usando práticas do gerenciamento do ...Desenvolvimento e manutenção de software usando práticas do gerenciamento do ...
Desenvolvimento e manutenção de software usando práticas do gerenciamento do ...Washington Borges
 

Mais procurados (9)

MAPEAMENTO ENTRE A METODOLOGIA ÁGIL FDD E O MODELO DE QUALIDADE MPS.BR NOS N...
MAPEAMENTO ENTRE A METODOLOGIA ÁGIL FDD E O  MODELO DE QUALIDADE MPS.BR NOS N...MAPEAMENTO ENTRE A METODOLOGIA ÁGIL FDD E O  MODELO DE QUALIDADE MPS.BR NOS N...
MAPEAMENTO ENTRE A METODOLOGIA ÁGIL FDD E O MODELO DE QUALIDADE MPS.BR NOS N...
 
Handbook Capitulo 14 - Expandindo a usabilidade
Handbook Capitulo 14 - Expandindo a usabilidadeHandbook Capitulo 14 - Expandindo a usabilidade
Handbook Capitulo 14 - Expandindo a usabilidade
 
Desenvolvimento ágil de software: análise sintética a partir de KANBAN
Desenvolvimento ágil de software: análise sintética a partir de KANBANDesenvolvimento ágil de software: análise sintética a partir de KANBAN
Desenvolvimento ágil de software: análise sintética a partir de KANBAN
 
Implantacao.Processo.Fabrica.SL
Implantacao.Processo.Fabrica.SLImplantacao.Processo.Fabrica.SL
Implantacao.Processo.Fabrica.SL
 
Uma análise sobre gestão de pessoas baseada nos métodos ágeis
Uma análise sobre gestão de pessoas baseada nos métodos ágeisUma análise sobre gestão de pessoas baseada nos métodos ágeis
Uma análise sobre gestão de pessoas baseada nos métodos ágeis
 
TCC_CMMI_Projeto_AndreLuisDeAndrade_FINAL
TCC_CMMI_Projeto_AndreLuisDeAndrade_FINALTCC_CMMI_Projeto_AndreLuisDeAndrade_FINAL
TCC_CMMI_Projeto_AndreLuisDeAndrade_FINAL
 
Desenvolvimento e manutenção de software usando práticas do gerenciamento do ...
Desenvolvimento e manutenção de software usando práticas do gerenciamento do ...Desenvolvimento e manutenção de software usando práticas do gerenciamento do ...
Desenvolvimento e manutenção de software usando práticas do gerenciamento do ...
 
Engenharia de software
Engenharia de softwareEngenharia de software
Engenharia de software
 
Artigo23
Artigo23Artigo23
Artigo23
 

Destaque

WATER CONSERVATION PROPOSAL
WATER CONSERVATION PROPOSALWATER CONSERVATION PROPOSAL
WATER CONSERVATION PROPOSALMark Schwedel
 
Janvier 2006 Communiqué de Presse Arrow
Janvier 2006 Communiqué de Presse ArrowJanvier 2006 Communiqué de Presse Arrow
Janvier 2006 Communiqué de Presse Arrowpbcom1998
 
Double page ajnsjnssan
Double page ajnsjnssanDouble page ajnsjnssan
Double page ajnsjnssanHarryateccles
 
Capability Statement Globus Solutions
Capability Statement Globus SolutionsCapability Statement Globus Solutions
Capability Statement Globus SolutionsTim Cole
 
Cijferlijst Bachelor
Cijferlijst BachelorCijferlijst Bachelor
Cijferlijst BachelorTara Frakking
 
Neural network - how does it work - I mean... literally!
Neural network - how does it work - I mean... literally!Neural network - how does it work - I mean... literally!
Neural network - how does it work - I mean... literally!Christoph Diefenthal
 
7. Utilización de mecanismos de comunicación asíncrona
7. Utilización de mecanismos de comunicación asíncrona7. Utilización de mecanismos de comunicación asíncrona
7. Utilización de mecanismos de comunicación asíncronaLaura Folgado Galache
 

Destaque (11)

WATER CONSERVATION PROPOSAL
WATER CONSERVATION PROPOSALWATER CONSERVATION PROPOSAL
WATER CONSERVATION PROPOSAL
 
Taller 13 dahiana holguin 8 b
Taller 13 dahiana holguin 8 bTaller 13 dahiana holguin 8 b
Taller 13 dahiana holguin 8 b
 
Editing analysis
Editing analysisEditing analysis
Editing analysis
 
Ahmed Hegazy CV
Ahmed Hegazy CVAhmed Hegazy CV
Ahmed Hegazy CV
 
Janvier 2006 Communiqué de Presse Arrow
Janvier 2006 Communiqué de Presse ArrowJanvier 2006 Communiqué de Presse Arrow
Janvier 2006 Communiqué de Presse Arrow
 
Double page ajnsjnssan
Double page ajnsjnssanDouble page ajnsjnssan
Double page ajnsjnssan
 
Wkspb09
Wkspb09Wkspb09
Wkspb09
 
Capability Statement Globus Solutions
Capability Statement Globus SolutionsCapability Statement Globus Solutions
Capability Statement Globus Solutions
 
Cijferlijst Bachelor
Cijferlijst BachelorCijferlijst Bachelor
Cijferlijst Bachelor
 
Neural network - how does it work - I mean... literally!
Neural network - how does it work - I mean... literally!Neural network - how does it work - I mean... literally!
Neural network - how does it work - I mean... literally!
 
7. Utilización de mecanismos de comunicación asíncrona
7. Utilización de mecanismos de comunicación asíncrona7. Utilización de mecanismos de comunicación asíncrona
7. Utilización de mecanismos de comunicación asíncrona
 

Semelhante a Estudo empírico da metodologia do desenvolvimento ágil de software

Múltiplas equipes ágeis com o framework Large Scale Scrum - um estudo de caso...
Múltiplas equipes ágeis com o framework Large Scale Scrum - um estudo de caso...Múltiplas equipes ágeis com o framework Large Scale Scrum - um estudo de caso...
Múltiplas equipes ágeis com o framework Large Scale Scrum - um estudo de caso...André Luis Celestino
 
Exercicio 1 engenharia de software.
Exercicio 1 engenharia de software.Exercicio 1 engenharia de software.
Exercicio 1 engenharia de software.Renato Breaking
 
ANÁLISE DO PARADIGMA HÍBRIDO NA INDÚSTRIA DE SOFTWARE
ANÁLISE DO PARADIGMA HÍBRIDO NA INDÚSTRIA DE SOFTWAREANÁLISE DO PARADIGMA HÍBRIDO NA INDÚSTRIA DE SOFTWARE
ANÁLISE DO PARADIGMA HÍBRIDO NA INDÚSTRIA DE SOFTWAREKéllyson Gonçalves da Silva
 
SCRUM: ADOÇÃO DE UM FRAMEWORK ÁGIL NO DESENVOLVIMENTO DE UM SOFTWARE PARA TRA...
SCRUM: ADOÇÃO DE UM FRAMEWORK ÁGIL NO DESENVOLVIMENTO DE UM SOFTWARE PARA TRA...SCRUM: ADOÇÃO DE UM FRAMEWORK ÁGIL NO DESENVOLVIMENTO DE UM SOFTWARE PARA TRA...
SCRUM: ADOÇÃO DE UM FRAMEWORK ÁGIL NO DESENVOLVIMENTO DE UM SOFTWARE PARA TRA...Kéllyson Gonçalves da Silva
 
Proposta de um modelo de escalonamento de metodologia ágil para grandes organ...
Proposta de um modelo de escalonamento de metodologia ágil para grandes organ...Proposta de um modelo de escalonamento de metodologia ágil para grandes organ...
Proposta de um modelo de escalonamento de metodologia ágil para grandes organ...Jaffer Veronezi
 
Aplicação das abordagens Scrum e XP
Aplicação das abordagens Scrum e XPAplicação das abordagens Scrum e XP
Aplicação das abordagens Scrum e XPs4nx
 
Palestra Métodos Ágeis SERPRO
Palestra Métodos Ágeis SERPROPalestra Métodos Ágeis SERPRO
Palestra Métodos Ágeis SERPROWildtech
 
Artigo-Alex_Warmling
Artigo-Alex_WarmlingArtigo-Alex_Warmling
Artigo-Alex_WarmlingChaordic
 
Estudo de ferramentas em Software Livre para gestão ágil de projetos de desen...
Estudo de ferramentas em Software Livre para gestão ágil de projetos de desen...Estudo de ferramentas em Software Livre para gestão ágil de projetos de desen...
Estudo de ferramentas em Software Livre para gestão ágil de projetos de desen...Keila Freitas
 
Artigo Pós graduação_Caroline Seara (2)
Artigo Pós graduação_Caroline Seara (2)Artigo Pós graduação_Caroline Seara (2)
Artigo Pós graduação_Caroline Seara (2)Caroline Seara
 
Grupo 3 - Gestão Ágil (3).pptx
Grupo 3 - Gestão Ágil (3).pptxGrupo 3 - Gestão Ágil (3).pptx
Grupo 3 - Gestão Ágil (3).pptxssuser064821
 
Aula2 - Modelagem de Sistemas Orientada a Objetos
Aula2 - Modelagem de Sistemas Orientada a ObjetosAula2 - Modelagem de Sistemas Orientada a Objetos
Aula2 - Modelagem de Sistemas Orientada a ObjetosLeandro Rezende
 
Conhecendo o eXtreme Programming
Conhecendo o eXtreme ProgrammingConhecendo o eXtreme Programming
Conhecendo o eXtreme ProgrammingDaniel Wildt
 
Feature driven development
Feature driven developmentFeature driven development
Feature driven developmentIzabel Rodrigues
 
Uma abordagem de entrega contínua para empresas de desenvolvimento de software
Uma abordagem de entrega contínua para empresas de desenvolvimento de softwareUma abordagem de entrega contínua para empresas de desenvolvimento de software
Uma abordagem de entrega contínua para empresas de desenvolvimento de softwareRodolfo Bueno
 
QATEST - Agile Brazil 2014 - O impacto do DEVOPS na Qualidade de Software
QATEST - Agile Brazil 2014 - O impacto do DEVOPS na Qualidade de SoftwareQATEST - Agile Brazil 2014 - O impacto do DEVOPS na Qualidade de Software
QATEST - Agile Brazil 2014 - O impacto do DEVOPS na Qualidade de SoftwareWelington Monteiro
 

Semelhante a Estudo empírico da metodologia do desenvolvimento ágil de software (20)

Múltiplas equipes ágeis com o framework Large Scale Scrum - um estudo de caso...
Múltiplas equipes ágeis com o framework Large Scale Scrum - um estudo de caso...Múltiplas equipes ágeis com o framework Large Scale Scrum - um estudo de caso...
Múltiplas equipes ágeis com o framework Large Scale Scrum - um estudo de caso...
 
Exercicio 1 engenharia de software.
Exercicio 1 engenharia de software.Exercicio 1 engenharia de software.
Exercicio 1 engenharia de software.
 
ANÁLISE DO PARADIGMA HÍBRIDO NA INDÚSTRIA DE SOFTWARE
ANÁLISE DO PARADIGMA HÍBRIDO NA INDÚSTRIA DE SOFTWAREANÁLISE DO PARADIGMA HÍBRIDO NA INDÚSTRIA DE SOFTWARE
ANÁLISE DO PARADIGMA HÍBRIDO NA INDÚSTRIA DE SOFTWARE
 
SCRUM: ADOÇÃO DE UM FRAMEWORK ÁGIL NO DESENVOLVIMENTO DE UM SOFTWARE PARA TRA...
SCRUM: ADOÇÃO DE UM FRAMEWORK ÁGIL NO DESENVOLVIMENTO DE UM SOFTWARE PARA TRA...SCRUM: ADOÇÃO DE UM FRAMEWORK ÁGIL NO DESENVOLVIMENTO DE UM SOFTWARE PARA TRA...
SCRUM: ADOÇÃO DE UM FRAMEWORK ÁGIL NO DESENVOLVIMENTO DE UM SOFTWARE PARA TRA...
 
Proposta de um modelo de escalonamento de metodologia ágil para grandes organ...
Proposta de um modelo de escalonamento de metodologia ágil para grandes organ...Proposta de um modelo de escalonamento de metodologia ágil para grandes organ...
Proposta de um modelo de escalonamento de metodologia ágil para grandes organ...
 
Aplicação das abordagens Scrum e XP
Aplicação das abordagens Scrum e XPAplicação das abordagens Scrum e XP
Aplicação das abordagens Scrum e XP
 
Palestra Métodos Ágeis SERPRO
Palestra Métodos Ágeis SERPROPalestra Métodos Ágeis SERPRO
Palestra Métodos Ágeis SERPRO
 
Métodos ágeis
Métodos ágeisMétodos ágeis
Métodos ágeis
 
Artigo-Alex_Warmling
Artigo-Alex_WarmlingArtigo-Alex_Warmling
Artigo-Alex_Warmling
 
Estudo de ferramentas em Software Livre para gestão ágil de projetos de desen...
Estudo de ferramentas em Software Livre para gestão ágil de projetos de desen...Estudo de ferramentas em Software Livre para gestão ágil de projetos de desen...
Estudo de ferramentas em Software Livre para gestão ágil de projetos de desen...
 
Artigo Pós graduação_Caroline Seara (2)
Artigo Pós graduação_Caroline Seara (2)Artigo Pós graduação_Caroline Seara (2)
Artigo Pós graduação_Caroline Seara (2)
 
Agile explicacao 18
Agile explicacao 18Agile explicacao 18
Agile explicacao 18
 
Grupo 3 - Gestão Ágil (3).pptx
Grupo 3 - Gestão Ágil (3).pptxGrupo 3 - Gestão Ágil (3).pptx
Grupo 3 - Gestão Ágil (3).pptx
 
Aula2 - Modelagem de Sistemas Orientada a Objetos
Aula2 - Modelagem de Sistemas Orientada a ObjetosAula2 - Modelagem de Sistemas Orientada a Objetos
Aula2 - Modelagem de Sistemas Orientada a Objetos
 
Conhecendo o eXtreme Programming
Conhecendo o eXtreme ProgrammingConhecendo o eXtreme Programming
Conhecendo o eXtreme Programming
 
Feature driven development
Feature driven developmentFeature driven development
Feature driven development
 
Metodologias ágeis de desenvolvimento
Metodologias ágeis de desenvolvimento Metodologias ágeis de desenvolvimento
Metodologias ágeis de desenvolvimento
 
Metodologia de Desenvolvimento de Sistema
Metodologia de Desenvolvimento de SistemaMetodologia de Desenvolvimento de Sistema
Metodologia de Desenvolvimento de Sistema
 
Uma abordagem de entrega contínua para empresas de desenvolvimento de software
Uma abordagem de entrega contínua para empresas de desenvolvimento de softwareUma abordagem de entrega contínua para empresas de desenvolvimento de software
Uma abordagem de entrega contínua para empresas de desenvolvimento de software
 
QATEST - Agile Brazil 2014 - O impacto do DEVOPS na Qualidade de Software
QATEST - Agile Brazil 2014 - O impacto do DEVOPS na Qualidade de SoftwareQATEST - Agile Brazil 2014 - O impacto do DEVOPS na Qualidade de Software
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.