A metodologia ágil de desenvolvimento de software, ou Agile, surgiu e ganhou muita força nos últimos anos devido à necessidade do mercado em atender às demandas dos clientes e seus projetos de maneira mais dinâmica, flexível e com maior produtividade.
O desenvolvimento ágil utiliza uma abordagem de planejamento incremental e muito iterativa. Dessa forma, diferentemente do método tradicional em que a princípio se define e se documenta detalhadamente todas as fases do início ao fim do projeto, no método ágil isso é feito em pequenas partes, também chamadas iterações.
Cada iteração é um mini-projeto, que normalmente dura de 1 a 4 semanas, e inclui todas as fases para implementá-lo como levantamento de recursos e requisitos, projeto, desenvolvimento de código, testes e documentação. Ao final de cada iteração deve haver uma entrega ao cliente, que inclua um conjunto de novas funcionalidades, uma nova versão de software. Após essa entrega há um novo processo de comunicação com o cliente e então são definidas quais deverão ser as novas entregas.
Esse processo visa que o cliente receba regularmente uma nova porção funcional de seu produto, visa também uma proximidade e colaboração constante entre o cliente e a equipe de desenvolvimento e entrega, reduzindo riscos de falhas de comunicação e possibilitando mudanças mas ágeis no andamento do projeto. Dessa forma o cliente recebe um produto realmente útil à sua empresa e com maior qualidade.
O que é o Manifesto Ágil
Em 2001, um grupo de 17 renomados desenvolvedores de software, agruparam e aprimoraram os diversos conceitos de metodologias ágeis existentes e assinaram o “Manifesto para o Desenvolvimento Ágil de Software”, que passou então a ser muito difundido pelas comunidades de desenvolvimento.
Esse manifesto basicamente reúne 4 valores e 12 princípios que devem ser mantidos em mente:
Os valores determinam que se deve priorizar:
- Os indivíduos e as interações entre eles mais que os processos e as ferramentas;
- O software funcionando mais do que uma documentação completa e abrangente;
- A colaboração com e dos clientes mais do que as negociações de contratos e;
- Respostas a mudanças mais do que seguir o plano inicial.
É importante notar que não se diz que os itens à direita não são importantes, apenas qual devem ser as prioridades.
Quanto aos princípios, são eles:
- A maior prioridade é satisfazer o cliente, através da entrega adiantada e contínua de software de valor;
- Aceitar mudanças de requisitos, mesmo no fim do desenvolvimento. Processos ágeis se adequam a mudanças, para que o cliente possa tirar vantagens competitivas;
- Entregar software funcionando com frequência, preferencialmente em semanas;
- Cooperação diária entre pessoas que entendem do ‘negócio’ e desenvolvedores;
- Projetos surgem através de indivíduos motivados, entre os quais existe relação de confiança.
- A maneira mais eficaz e eficiente de transmitir informações são através de conversas cara a cara;
- Software funcionais são a principal medida de progresso do projeto;
- 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 é essencial. Cultivar a arte de maximizar a quantidade de trabalho que não precisou ser feito;
- As melhores arquiteturas, requisitos e projetos emergem de equipes auto-organizadas;
- Em intervalos regulares, o time reflete em como se tornar mais efetivo, então, se ajustam e otimizam seu comportamento de acordo.
O vídeo abaixo do professor André Gomes descreve um pouco mais o que foi o “Agile Manifesto“:
As Técnicas e Práticas
Para seguir os valores e princípios do manifesto ágil, as diversas metodologias ágeis costumam utilizar as seguintes técnicas e práticas durante todo o processo:
- Equipes Auto Gerenciáveis: É importante que a equipe atue em conjunto para tomar as melhores decisões, ao invés de haver um gerente que dita o caminha, há um líder que atua como facilitador;
- Comunicação: É essencial a constante comunicação entre a equipe de desenvolvimento e a área de negócio;
- Preferência por Equipes Pequenas: É consenso que equipes pequenas são mais produtivas, evitam conflitos e falhas de comunicação;
- Uso de TDD (Test-Driven Development): É uma técnica que permite a realização de testes contínuos e não apenas na conclusão do sistema;
- Planejamento Incremental: Ao invés de planejar o software como um todo, o planejamento é feito de forma sistêmica. O todo é determinado, mas o planejamento é feito por etapas;
- Entregas menores: Uso de incrementos pequenos de software, entregando novas funcionalidades em meses ou semanas, ao invés de anos;
- Uso de Refatoração: Melhoria constante do código, tornando-o mais fácil de manter;
- Integração sistêmica continua: Sempre que um incremento está pronto, ele é integrado ao sistema como um todo.
As Vantagens da Metodologia Ágil
Vamos mencionar algumas das principais vantagens do uso dos métodos ágeis de desenvolvimento de software, tanto do lado dos clientes, quando das equipes de desenvolvimento e entrega.
Para o cliente:
- Mais entrega de Valor ao Negócio, e consequente um melhor ROI (Return On Investment);
- Produto final com melhor qualidade;
- Entregas mais frequentes e regulares, os usuários podem ver os resultados parciais do projeto;
- Melhor Time-to-Market gerando um ganho de competitividade;
- Melhor Transparência e Visibidade da situação do projeto;
- Maior flexibilidade a mudanças e ajustes nos requisitos e nas prioridades de entrega.
Para a área de desenvolvimento:
- Melhor comunicação com o cliente e usuários finais;
- Antecipação de Problemas e tomadas de decisão mais rápidas;
- Definição de escopo, objetivos e prioridades mais claros;
- Maior autonomia e responsabilidade das equipes, gerando consequentemente mais comprometimento;
- Melhoria contínua do processo de desenvolvimento.
Os Frameworks de Desenvolvimento Ágil
Sem dúvidas o framework mais utilizado e reconhecido para metodologias ágeis é o Scrum, principalmente por sua simplicidade e facilidade de adoção e adaptação.
Algumas outras metodologias que podem ser citadas são: Extreme Programming (XP), Lean Development, Feature-Driven Development (FDD), Kanban, RUP e OpenUP.