Métodos ágeis de desenvolvimento de software

Por Antônio de Lemos Filho*

Podemos dizer que os métodos ágeis surgiram como uma alternativa ao desenvolvimento tradicional, também conhecido como cascata. Este é um modelo de desenvolvimento de software sequencial que ocorre geralmente por meio das fases de análise de requisitos, projeto, implementação, testes (validação), integração, e manutenção de software.

O grande problema do desenvolvimento em cascata é que dificilmente o cliente sabe definir todos os problemas que ele quer solucionar com o sistema ainda na fase de análise. Portanto, é improvável que um software projetado e desenvolvido dessa forma atenda por completo todas as expectativas do cliente e resolva os seus reais problemas.

243

Já o desenvolvimento ágil foca totalmente na solução do problema do cliente, utilizando a prototipação, desenvolvimento incremental e times reduzidos. Com a metodologia ágil, definem-se as questões que o software deve resolver, também conhecidas como história do usuário. O objetivo das primeiras reuniões com o cliente não é definir todo o comportamento e detalhes técnicos que o software deverá resolver como é feito no desenvolvimento tradicional, e sim as funcionalidades mais relevantes que o software deve ter.

Não tem como falar em metodologias ágeis sem citar o Manifesto Ágil, então vamos a ele.

Manifesto Ágil

Em 2001, 17 especialistas em processos de desenvolvimento de software estabeleceram princípios comuns compartilhados por diferentes métodos. Este encontro deu origem ao Manifesto Ágil, uma declaração com os princípios que regem o desenvolvimento ágil.

Os Quatro Valores

Estamos descobrindo maneiras melhores de desenvolver software, fazendo-o nós mesmos e ajudando outros a fazê-lo. Com esse trabalho, passamos a valorizar:

Indivíduos e a interação entre eles mais que processos e ferramentas;

Software em funcionamento mais que documentação abrangente;

Colaboração com o cliente mais que negociação contratual;

Responder a mudanças mais que seguir um plano.

“Mesmo havendo valor nos itens à direita, valorizamos mais os itens à esquerda.”

Os Doze Princípios

Nossa maior prioridade é satisfazer o cliente, por meio da entrega adiantada e contínua de software de valor.

Aceitar mudanças de requisitos, mesmo no fim do desenvolvimento. Processos ágeis se adéquam a mudanças, para que o cliente possa tirar vantagens competitivas.

Entregar software funcionando com frequência, na escala de semanas até meses, com preferência aos períodos mais curtos.

Pessoas relacionadas a negócios e desenvolvedores devem trabalhar em conjunto e diariamente, durante todo o curso do projeto.

Construir projetos ao redor de indivíduos motivados, dando a eles o ambiente e suporte necessários, e confiar que farão seu trabalho.

O método mais eficiente e eficaz de transmitir informações para e por dentro de um time de desenvolvimento é com uma conversa cara a cara.

Software funcional é a medida primária de progresso.

Processos ágeis promovem um ambiente sustentável. Os patrocinadores, desenvolvedores e usuários devem ser capazes de manter indefinidamente passos constantes.

Contínua atenção à excelência técnica e bom design aumenta a agilidade.

Simplicidade: a arte de maximizar a quantidade de trabalho que não precisou ser feito.

As melhores arquiteturas, requisitos e designs emergem de times auto-organizáveis.

Em intervalos regulares, o time reflete em como ficar mais efetivo, então, se ajustam e otimizam seu comportamento de acordo.

Como você pode perceber, o Manifesto Ágil é o embasamento filosófico de todos os métodos ágeis e diversos métodos de desenvolvimento de software estão alinhados a ele. A maioria deles se utiliza de ciclos curtos, que são chamados de iterações e normalmente têm duração de poucas semanas, dessa forma garantindo feedback frequente e respostas rápidas às mudanças.

Listo a seguir os principais métodos ágeis, considerando os métodos representados na conferência original:

• Extreme Programming (XP)

• SCRUM

• Crystal Family of Methodologies

• Feature-Driven Development

• Kanban

• Lean Development

• Dynamic Systems Development Method

• Adaptive Software Development

Métodos ágeis, por si só, é um assunto relativamente vasto, e seriam necessários vários artigos para abordá-lo de maneira completa. Este artigo tem por objetivo fornecer uma visão introdutória sobre a fundamentação das metodologias ágeis para desenvolvimento de software.

Vale lembrar que desenvolvimento ágil não é a única forma de se encarar o desenvolvimento de software, nem é a única maneira eficiente. Como disse Frederick Brooks em 1986, nenhuma tecnologia ou técnica de gestão resolve todos os problemas de todos os contextos. Ele resumiu essa ideia dizendo que “não há bala de prata”.

*Antônio de Lemos Filho, MBA em Gestão de Projetos, graduado em Gestão da Tecnologia da Informação e em Sistemas de Informação. Atua como analista de desenvolvimento de sistemas no Instituto das Cidades Inteligentes (ICI) desde 2012.