Waterfall & Agile: uma questão de flexibilidade

Waterfall & Agile: uma questão de flexibilidade

Este artigo é o segundo de uma série de quatro artigos. Leia aqui o primeiro: “Introdução ao mundo das metodologias”

Waterfall 101

Esta é a metodologia mais antiga, que funciona de uma forma bastante linear. Por esse motivo, é ainda bastante usada pelas empresas na gestão de projeto. Caracteriza-se por ter fases bem definidas, onde uma só começa após a anterior ter terminado, e não existe a possibilidade de regressar à fase anterior. Assim, caso seja necessário realizar alguma revisão, o processo tem de recomeçar, mostrando-se assim como uma metodologia menos flexível.

Para que o projeto seja realizado sem percalços é necessário que os requisitos estejam muito bem definidos. Desta forma, o primeiro passo é recolher e documentar todos os requisitos e garantir que estão acessíveis a todos os membros da equipa.

Paralelamente, os membros da equipa também documentam o seu trabalho, sendo que idealmente os membros podem entrar ou sair do projeto sem que isso represente um obstáculo para o projeto. Ou seja, a metodologia Waterfall pode ser uma boa aposta para equipas com turnover ou rotatividade elevados.

Quais são as fases estabelecidas do projeto?

  • Levantamento de requisitos e documentação
  • Design de sistemas – desenho das especificações do sistema, compreender que ações/tarefas precisam de ser realizadas nas fases seguintes
  • Implementação – desenvolvimento de código
  • Teste – teste do software para encontrar erros
  • Entrega – após o teste, o software é entregue ao cliente
  • Manutenção – quando os consumidores começam a usar o software, podem surgir alguns problemas que devem ser resolvidos, ou features que necessitem de ser alterados

 

Vantagens

  • Estrutura clara – as fases estão bem definidas e todos os membros da equipa sabem exatamente o que devem fazer em cada uma;
  • O objetivo/resultado final é definido desde o início do projeto – desta forma, existe clareza sobre aquilo que é esperado da equipa, o que a mantém focada durante todo o processo;
  • Não necessita de certificações ou formação específica – ao contrário de outras metodologias;
  • Abordagem metódica permite a transmissão de informação entre fases, pressupondo que a fase seguinte será desenvolvida por outros membros da equipa que necessitam de ter um guia claro dos acontecimentos a priori;
  • Resultados finais mais previsíveis, bem como uma visão mais real do tempo e orçamento necessários.

 

Desvantagens

  • Torna difícil fazer mudanças – a metodologia deixa pouco espaço para mudanças não esperadas ou problemas não planeados, sendo mais rígido na reação;
  • Não inclui o cliente ou consumidor final – o foco da metodologia está no funcionamento da equipa do projeto, e não necessariamente em incluir os clientes no processo e receber feedback ao longo do projeto;
  • O teste só ocorre no final do projeto – este é um risco associado à metodologia, visto que realiza-lo tão tarde no processo pode significar mudanças consideráveis o que implicará revisões aprofundadas e possíveis atrasos.

 

 

It’s an Agile world

O desenvolvimento de software Agile baseia-se numa abordagem interativa e incremental, permitindo a ocorrência de mudanças de requisitos ao longo do tempo e impulsionando o feedback do consumidor final.

A metodologia Agile rege-se por 12 princípios, destacando-se a priorização da satisfação do cliente, o trabalho conjunto entre developers e a equipa operacional e de gestão, o foco na motivação dos colaboradores, promovendo o ambiente e suporte necessário, alavancando a flexibilidade, a melhoria contínua e a rapidez de resposta.

O ciclo de desenvolvimento Agile tem 6 fases distintas, que não têm necessariamente de acontecer de forma sequencial, sendo flexíveis e podendo acontecer simultaneamente:

  • Planeamento – desconstruir o trabalho em várias partes e priorizar cada uma, de forma a organizar a equipa;
  • Análise de requisitos – identificar os requisitos, compreender quem vai usar o produto e como;
  • Design – definido a partir dos requisitos identificados, quando a equipa estabelece como deverá ser o produto ou solução;
  • Implementação ou desenvolvimento – criar os features;
  • Teste – após o desenvolvimento, o código é testado face aos requisitos definidos para garantir que está a responder às necessidades do cliente;
  • Entrega – o produto é entregue ao cliente, e daí podem surgir novos problemas e necessidades para responder.

 

Vantagens

  • Promoção da aceitação da mudança – com ciclos de planeamento curtos torna-se mais fácil aceitar mudanças nas várias fases do projeto, havendo sempre oportunidade de redefinir prioridades e permitir que as equipas realizem as mudanças em pouco tempo;
  • O objetivo final pode ser desconhecido – a metodologia é vantajosa quando o projeto não tem o objetivo final bem definido, visto que à medida que o projeto avança, o desenvolvimento pode adaptar-se aos novos requisitos facilmente;
  • Entrega mais rápida e com melhor qualidade – repartir o projeto em pequenas fases permite que a equipa se foque no desenvolvimento com elevada qualidade, testando no final de cada fase para identificar os possíveis bugs e resolvê-los mais rapidamente;

Capacidade de ouvir os clientes – os clientes têm diversas oportunidades de ver o trabalho que está a ser desenvolvido e dar feedback sobre o mesmo, contribuindo com maior impacto para o produto final.

 

Desvantagens

  • Dificuldade em definir uma data de entrega final;
  • A documentação tende a ser negligenciada;
  • Necessita de dedicação completa ao projeto por parte dos developers, o que requer um compromisso durante todo o período de duração do projeto;
  • O produto final poder ser muito diferente daquilo que foi visionado inicialmente.