SCRUM

Metodologias de desenvolvimento – Waterfall vs Agile

A grande maioria das empresas que desenvolve software guia-se por metodologias de desenvolvimento previamente testadas.

A grande maioria utiliza o método Waterfall (ou metodologia em cascata), mas existem cada vez mais empresas a utilizar o método Agile.

A verdade é que existe uma diferença abismal entre ambas, e hoje iremos analisar as mesmas e explicar-lhe de forma simplificada o seu funcionamento.

1 – Waterfall vs Agile – Qual a melhor metodologia de desenvolvimento?

Uma das decisões mais importantes quando se faz a gestão de um processo tem a ver essencialmente com o tipo de metodologia de desenvolvimento que irá ser seguida.

Desta forma, e para o ajudar a tomar as melhores decisões, explicamos-lhe as duas mais implementadas.

1.1 – Metodologia de desenvolvimento Waterfall

Este modelo surgiu em 1970 através do cientista computacional Winston Walker Royce e atualmente é também conhecido como uma metodologia em cascata.

O Waterfall é um modelo de desenvolvimento de software que funciona de forma sequencial em que o passo seguinte só pode ser realizado se o anterior estiver concluído.

Contudo, para que um projeto seja desenvolvido de acordo com o mesmo é essencial que todos os requisitos do projeto estejam bem definidos (de forma a não gerar falhas ou atrasos).

Aqui, tanto o problema como a solução já têm de ser previamente conhecidos, de forma a que o processo corra de forma linear.

Este modelo funciona em 5 fases distintas. Sendo as mesmas as seguintes.

1 – Análise e definição de requisitos

Nesta fase são feitos vários estudos de forma a estabelecer a viabilidade do projeto, assim como os requisitos do software que será desenvolvido, tendo em conta o tipo de serviço, os objetivos do software e as limitações aceitáveis do projeto.

2 – Desenvolvimento do projeto

Esta fase é um pouco mais abrangente e é composta por diversos processos, nomeadamente a definição da estrutura de dados, arquitetura do software, caracterização das interfaces e definição dos detalhes procedimentais.

Nesta fase, são ainda delineadas e mapeadas as estruturas e funcionalidades necessárias de forma a tornar possível a construção do software.

3 – Implementação ou codificação

Esta é a terceira etapa do modelo Waterfall e trata-se efetivamente da criação do programa. Nesta fase, são também adicionados os testes de cada modelo desenvolvido, de forma a verificar se o mesmo está a cumprir o requisito para o qual foi desenvolvido.

Se tudo estiver a funcionar de forma correta, passa-se para a fase seguinte.

4 – Teste do sistema

O teste de sistema é realizado assim que a etapa de implementação termina, e tem como intuito focar dois pontos essenciais do software: as lógicas internas de funcionamento e as funcionalidades externas.

Aqui é possível verificar quais os erros que o software apresenta e se os requisitos devolvidos estão de acordo com o que foi previamente determinado.

5 – Manutenção

Contrariamente ao que possa pensar, a fase de manutenção é uma das mais importantes (e trabalhosas) do modelo de Waterfall.

Nesta fase são corrigidos todos os erros que não foram detetados durante os testes, mas são também implementadas melhorias funcionais e correções de software de forma a permitir a integração do mesmo com outros software.

Como vê, o funcionamento do modelo em cascata é bastante simples e todas as variações têm o mesmo conceito base: cada etapa oferece a saída que é utilizada para dar seguimento à etapa seguinte.

1.2 – Modelo de desenvolvimento Agile

O modelo Agile foi desenvolvido no final dos anos 90, tendo evoluído da definição dada por Edmons Agile em 1974, e culminou em 2001 com a criação do manifesto ágil que serve de orientação para as metodologias ditas ágeis.

Este manifesto define os parâmetros de valorização do desenvolvimento de um software, sendo que os seus princípios assentam em:

  • Promover as pessoas e a sua interação (em vez de valorizar os processos e as ferramentas);
  • Software em funcionamento (em vez da utilização da documentação abrangente);
  • Maior colaboração com o cliente (em detrimento da negociação de contratos);
  • Responder às mudanças (em detrimento de seguir um plano rígido previamente delineado).

Como pode ver pelo manifesto ágil, contrariamente ao que acontece com a metodologia de Waterfall, aqui, a abordagem é realizada de forma incremental e interativa.

Este tipo de metodologia é utilizado essencialmente quando se conhece o problema, mas não se sabe ao certo qual é que é a solução para o mesmo.

A sua principal vantagem passa essencialmente pelo fato de permitir uma maior interação de todos os interessados (através por exemplo da partilha de ideias) levando a que haja sempre um novo desenvolvimento na criação do software (uma vez que é realizado um trabalho de equipa).

Neste modelo, é também importante frisar que devido ao fato de ser uma abordagem incremental, é possível em qualquer fase do projeto promover mudanças estruturais ou funcionais.

Como pode ver existem diferenças bastante significativas entre ambas as metodologias de desenvolvimento. Contudo, obviamente cada uma tem as suas vantagens e desvantagens, sendo por isso aplicadas em diferentes tipos de problemas.

Tendo em conta a complexidade dos projetos que são desenvolvidos nos dias de hoje, a grande maioria das empresas acaba por adotar metodologias de desenvolvimento híbridas, ou seja, metodologias que aplicam os pressupostos do Waterfall e do Agile.

Desta forma, conseguem num único projeto aproveitar o que há de melhor em cada uma delas.

Tenha em mente, que antes de começar a desenvolver o seu projeto deve analisar de forma coerente cada uma das metodologias, por forma a conseguir optar pela que melhor o irá ajudar a tornar o seu software uma realidade.

Não existe uma metodologia melhor do que a outra. O que existe é um projeto para desenvolver, e várias formas de o fazer. A melhor metodologia, será aquela que se adaptar a 100% ao seu projeto.