Metodologias Ágeis
Uma Visão Prática
De que se trata o artigo:
Avaliação da presença das metodologias ágeis no mercado de desenvolvimento de software. Neste artigo, o autor procura verificar quantitativamente alguns pontos de interesse, identificando o estado atual do movimento ágil e a pouca disponibilidade de estudos de caso que possam ser usados como fonte sistemática de resultados para comparação.
Para que serve:
Fornecer subsídios para o processo de escolha de uma metodologia de desenvolvimento a ser adotada por uma empresa de software através de uma avaliação crítica das informações disponíveis sobre os resultados da aplicação das metodologias ágeis em projetos reais de desenvolvimento.
Em que situação o tema é útil:
As metodologias ágeis, como a Extreme Programming (XP) e o Scrum, entre outras, têm despertado atenção crescente do mercado. Esse movimento, baseado no ciclo de desenvolvimento incremental e iterativo, está focado na colaboração do cliente, no valor dos indivíduos e na adaptação às mudanças, tendo mostrado ganhos de produtividade nos mais diversos tipos de projetos de desenvolvimento de software.
A escolha da metodologia mais adequada para o desenvolvimento de software em uma organização não é uma tarefa trivial. As metodologias ágeis têm despertado o interesse do mercado, apresentando evidências de melhoria na produtividade, mas, para que possam ser efetivamente usadas em larga escala, precisam provar alguns de seus pontos de vista. Neste artigo, procura-se verificar quantitativamente alguns pontos de interesse, identificando a presença das metodologias ágeis no mercado, o estado atual do movimento ágil e a pouca disponibilidade de estudos de caso que possam ser usados como fonte sistemática de resultados para comparação.
Introdução
A maior parte dos projetos de desenvolvimento de software pode ser descrita simplesmente como “programar e corrigir”, sendo desenvolvidos sem planejamento ou uma fase organizada de design do sistema. Disso usualmente decorre uma grande quantidade de erros, os quais precisam ser resolvidos, em uma longa etapa que sempre estende o prazo inicialmente proposto. O movimento original de melhoria no setor foi o que introduziu a noção de metodologia, ou seja, uma abordagem disciplinada para o desenvolvimento de software com o objetivo de tornar o processo mais previsível e eficiente (FOWLER, 2005).
Em 2001, movidos pela observação de que equipes de desenvolvimento de software nas mais diversas organizações estavam presas por processos cada vez mais burocráticos, um grupo de profissionais reuniu-se para delinear os valores e princípios que permitiriam às equipes de desenvolvimento produzir rapidamente e responder às mudanças. Eles chamaram a si mesmos de Aliança Ágil. Trabalharam por dois dias para criar um conjunto de valores. O resultado foi o Manifesto da Aliança Ágil (MARTIN, 2002). Embora as metodologias que compõem o movimento ágil já estivessem no mercado há alguns anos, com a denominação de “metodologias leves”, o Manifesto Ágil é considerado oficialmente como o início do movimento ágil.
Segundo Abrahamsson (2002), uma metodologia pode ser dita ágil quando efetua o desenvolvimento de software de forma incremental (liberação de pequenas versões, em iterações de curta duração), colaborativa (cliente e desenvolvedores trabalhando juntos, em constante comunicação), direta (o método em si é simples de aprender e modificar) e adaptativa (capaz de responder às mudanças até o último instante). Nesse conceito, inclui como metodologias ágeis: Extreme Programming (XP), Scrum, Crystal, Feature Driven Development (FDD), Dynamic Systems Development Method (DSDM), Open Source Software Development e, com certa ressalva, o Rational Unified Process (RUP).
As idéias relativas ao movimento ágil têm sido rapidamente disseminadas pela comunidade de desenvolvimento. Todavia, mesmo que os desenvolvedores avaliem, de forma favorável, técnicas como o desenvolvimento incremental e a programação orientada a testes, sugerindo a adoção de uma metodologia ágil, essa decisão ainda tem que ser tomada pela organização na qual estão inseridos. Para isso, se faz necessária uma argumentação quantitativa.
Na Curva de Adoção de Tecnologia, apresentada na Figura 1, Rogers (2003, apud GRINYER, 2007) introduz o conceito de “decisão sobre a inovação”, o qual indica que um grupo (ou indivíduo) procura determinar as vantagens e desvantagens de uma inovação, com o objetivo de reduzir a incerteza antes de sua adoção. A partir disso, descreve cinco categorias sociais, determinadas com base no seu grau de adoção das inovações. Os “inovadores” são os que mais facilmente adotam as inovações e, para a direita do gráfico, cada grupo apresenta uma resistência maior, terminando com os “tardios”, menos afeitos à adoção de qualquer inovação.
Figura 1 – Curva de Adoção de Tecnologia. Fonte: adaptado de Ambler (2006)
Segundo Ambler (2006), existe uma grande mudança na percepção do mercado, dos dois lados do “abismo” apontado nessa curva. As empresas à direita do abismo possuem uma expectativa significativamente diferente daquelas à esquerda na curva. Segundo esse autor, as empresas no lado esquerdo do abismo estão mais interessadas em novas idéias e mais propensas a aceitar riscos, enquanto que as empresas no lado direito são mais conservadoras e preferem aguardar por uma prova de que a idéia realmente funciona.
Grinyer (2007) afirma que as metodologias ágeis como o XP e o Scrum são consideradas inovações, pois ainda são relativamente recentes no mercado. Todavia, nem todas as técnicas ágeis são inovadoras. Por exemplo, o desenvolvimento iterativo já se encontra bem estabelecido no mercado. Ambler (2006) complementa, afirmando que, como um conceito, o movimento ágil já cruzou o abismo, visto que a maior parte das empresas que se enquadram na categoria de primeira ou segunda maioria está ao menos demonstrando interesse nas técnicas ágeis. A metodologia Scrum e técnicas como a refatoração e o desenvolvimento orientado a testes certamente cruzaram o abismo, mas o XP como um todo ainda encontra resistência nesse sentido.
Para que o desenvolvimento ágil possa ser efetivamente aceito em todos os segmentos do mercado, é necessário satisfazer às necessidades dos diversos grupos, os quais são muito diferentes dos “inovadores”. Ao apresentar uma nova metodologia a uma comunidade bastante técnica como a dos desenvolvedores de software, pode-se conseguir atenção apontando as suas qualidades e idéias inovadoras. Por outro lado, para cruzar o “abismo” e ganhar efetivamente a atenção das organizações situadas no seu lado direito, é necessário reunir informações e apresentá-las de forma a atingir a esfera gerencial, responsável pela efetiva tomada de decisões. No decorrer deste artigo, são fornecidos alguns dados recentes, com respeito ao efetivo posicionamento das metodologias na Curva de Adoção de Tecnologia.