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

12
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ção e 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

Transcript of Estudo empírico da metodologia do desenvolvimento ágil de software

Page 1: Estudo empírico da metodologia do desenvolvimento ágil de software

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ção e 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-se a 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

Page 2: Estudo empírico da metodologia do desenvolvimento ágil de software

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 sucesso e maior 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 processo de 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

Page 3: Estudo empírico da metodologia do desenvolvimento ágil de software

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 ÁgeisAdaptabilidade a mudança Mudança de

sustentabilidadeMudança de

adaptabilidadeAbordagem de

desenvolvimentoPreditiva Adaptativa

Orientação de desenvolvimento

Processo orientado Pessoa orientada

Tamanho do projeto Grande Pequeno/MédioEscala de planejamento Longo prazo Curto termo

Estilo de gestão Comando e controle Liderança e colaboraçãoAprendizagem Aprendizagem continua

enquanto desenvolveAprendizagem depois do

desenvolvimentoDocumentaçã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.

Page 4: Estudo empírico da metodologia do desenvolvimento ágil de software

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 como proposto, como a 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:

Page 5: Estudo empírico da metodologia do desenvolvimento ágil de software

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

Page 6: Estudo empírico da metodologia do desenvolvimento ágil de software

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

Page 7: Estudo empírico da metodologia do desenvolvimento ágil de software

Outro conceito único em XP é a programação em pares, onde programadores trabalham em duplas, resultando em melhor comunicação e 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 processo de 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 software atuais 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.

Page 8: Estudo empírico da metodologia do desenvolvimento ágil de software

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.

Page 9: Estudo empírico da metodologia do desenvolvimento ágil 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 composta de várias abordagens de desenvolvimento de software que 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.