• A metodologia define como o trabalho de desenvolvimento de software é planejado e trabalhado para obter sucesso no projeto.
  • Waterfall é um modelo de desenvolvimento de software sequencial no qual o processo é visto como uma cascata.
  • Agile é um conjunto de práticas para projetos que são consideradas inovadoras, nesse modelo é realizada uma abordagem mais interativa.

Um dos motivos que podem influenciar no produto final é a metodologia de gerenciamento utilizada durante a execução do projeto. É nessa fase em que todos os esforços podem ser desperdiçados caso existam falhas de comunicação, aumento dos custos, atrasos, entre outros problemas.

Antes de iniciar um projeto de desenvolvimento de software é importante decidir sobre a metodologia de gerenciamento que será usada. Mas esta não é uma tarefa muito fácil.

De um lado, existe a abordagem tradicional de desenvolvimento de software, a Metodologia Waterfall, onde o projeto é tratado linearmente com vários eventos. Já do outro lado, tem a abordagem moderna do Agile, que envolve um desenvolvimento mutável, iterativo e com foco na equipe.

Uma pesquisa realizada por Scott Ambler revelou que nas últimas décadas as metodologias ágeis vêm ganhando cada vez mais espaço no mercado de Tecnologia da Informação e Comunicação.

Ambler aponta que 82% das empresas tiveram melhorias na produtividade, enquanto que 77% apresentaram melhorias na qualidade do produto. E complementa dizendo que as empresas que adotaram metodologias ágeis em seus projetos, possuem uma taxa de sucesso de 55%.

Embora as duas metodologias de desenvolvimento se esforcem para ajudar a simplificar o processo de gerenciamento de tarefas de desenvolvimento de software, elas funcionam de maneiras totalmente diferentes.

O que é Metodologia Waterfall ou Cascata?

A metodologia Waterfall, palavra em inglês que significa cascata, é considerada a forma mais tradicional de gerenciar projetos. Assim como os fluxos de trabalho de construção e fabricação, essa metodologia é um processo sequencial.

A abordagem Waterfall foi a principal e mais utilizada metodologia de desenvolvimento de software desde que foi introduzida nos anos 70.

Naquela época, os gerentes de projeto usavam o Waterfall como uma maneira de trazer uma estrutura mais organizada para o desenvolvimento de software.

O modelo demonstrou-se funcional e introduziu importantes qualidades ao desenvolvimento de software, contribuindo para que diversas organizações evitassem desperdício de dinheiro.

Como o processo desta metodologia é sequencial, uma vez que uma etapa foi concluída, os desenvolvedores não podem voltar para uma etapa anterior. É quase impossível voltar ou avançar etapas sem comprometer parte ou todo o projeto.

Não há espaço para mudança ou erro, portanto, um resultado do projeto e um plano extenso devem ser definidos no início e seguidos com cuidado.

Etapas da Metodologia Waterfall

As empresas geralmente possuem um conjunto exclusivo de estágios para a abordagem em cascata, mas normalmente são esses oito estágios descritos a seguir.

Concepção

Estágio inicial em que a equipe responsável pelo projeto decide sobre a ideia e o que desejam criar. Depois irá evoluir para a análise de custo-benefício e terminará com uma estimativa de todo o projeto.

Iniciação

Essa fase pretende reunir e documentar o que o projeto precisará, incluindo os requisitos de software e sistema. Os membros serão convocados ou contratados para compor a equipe à medida que expande o alcance da tarefa com finalidade, resultados e objetivos.

Análise

O próximo estágio envolve a realização de testes de análise de viabilidade para criar uma documentação mais detalhada da especificação de requisitos.

Design

Nesta fase, os designers desenvolvem storyboards, modelos e wireframes para ajudá-los a obter uma representação visual do projeto. Eles revisam e avaliam os requisitos, estabelecem metas de equipe, desenvolvem um plano de ação e o resultado é uma arquitetura de software clara.

Codificação

É a fase onde o trabalho principal de construção de software começa. Essa fase envolve o trabalho de codificação de todas as partes individuais do software. Os desenvolvedores começam a criar seguindo os designs e processos com os quais concordaram no estágio anterior.

Teste

O software construído passa por extensos testes para eliminar todos os erros. Esse estágio geralmente envolve codificação adicional para resolver qualquer problema no código-fonte do software.

Implementação

Etapa em que o produto final é finalmente lançado no mercado para uso dos consumidores.

Manutenção

Os desenvolvedores devem criar uma estrutura de suporte para resolver os problemas que surgirem com patches e correções de bugs. Os patches podem até ser usados ​​para adicionar novas funcionalidades para manter a competitividade no mercado

Vantagens da Metodologia Waterfall

O método Waterfall recebe muitas críticas por sua rigidez. Entretanto, seus benefícios existem e podem trazer excelentes resultados para alguns tipos de projeto.

Uma de suas principais vantagens é que, para que o planejamento seja realizado, é necessário avaliar e estruturar as etapas com antecedência e prever cenários variados.

A metodologia enfatiza a manutenção de registros meticulosos. Tendo esses registros permite a capacidade de melhorar futuramente.

Esse cuidado em desenhar a execução permite que os prazos e custos sejam mais previsíveis. Além disso, o projeto se torna mais fácil de ser gerenciado, já que suas fases estão bem arquitetadas.

Com a metodologia, o cliente sabe o que esperar. Eles terão uma ideia do tamanho, custo e cronograma para o projeto. Eles saberão definitivamente qual será o resultado do seu projeto.

Com etapas tão bem definidas, claras e sequenciais, os projetos em cascata ficam mais simples de serem compreendidos pela equipe e o fluxo das atividades é mais organizado.

Desvantagens da Metodologia Waterfall

A realidade é que os clientes e outras partes interessadas normalmente não têm certeza sobre o que desejam até que passem algum tempo com um protótipo.

Apesar dos benefícios acima, a metodologia Waterfall impõe grande rigidez à execução do projeto.

Quando uma etapa foi inteiramente concluída, a opção de voltar atrás e refazer parte do trabalho implica em custos elevados. O teste é feito muito tarde no ciclo de vida do projeto, o que significa que provavelmente será tarde para fazer alterações.

É bastante arriscado realizar todos os testes extensivos uma vez que o projeto está quase pronto, devido à tentação ou pressa, especialmente quando se trabalha com prazos apertados.

A realidade é que produtos mal testados podem resultar em um lançamento altamente desastroso e os desenvolvedores também perderão dados valiosos e feedbacks que eles poderiam ter usado nos estágios anteriores do projeto.

O que é Metodologia Agile?

A Metodologia Agile surgiu como uma alternativa para as limitações da metodologia Waterfall. Em vez de um processo sequencial, a metodologia Agile segue uma abordagem incremental.

As organizações operam em um ambiente com riscos e incertezas, trazendo sempre a necessidade de reorganização e reavaliação de recursos. Isso sugere formas organizacionais menos centralizadas e mais flexíveis e autogerenciadas.

Os métodos ágeis surgiram na década de 80, com Takeuchi e Nonaka. Os autores observaram que os projetos usando equipes pequena e multidisciplinares, somada a uma série de técnicas relacionadas ao Sistema Toyota de Produção, conseguiam aumentar a percepção de qualidade dos clientes e reduziam a quantidade de sistemas desenvolvidos que não seriam utilizados.

Em vez de usar um processo longo e sequencial para o desenvolvimento de software, o Agile oferece uma abordagem iterativa mais flexível que apresenta ciclos mais curtos.

Com o Agile, o foco está no desenvolvimento enxuto e na criação de MVPs ou produtos mínimos viáveis ​​em durações específicas, além de oferecer melhorias a cada nova iteração de software.

Apesar das semelhanças encontradas no desenvolvimento de software nas duas metodologias, como planejamento, design e codificação, essas etapas ocorrem de forma incremental no Agile, em vez de serem executadas de uma só vez como no Waterfall.

O trabalho em equipe, a melhoria contínua, o feedback constante e a capacidade de se adaptar às mudanças nos requisitos do projeto são fundamentais nas metodologias ágeis.

Vale ressaltar que Agile se refere a todos os métodos que seguem as ideologias estabelecidas no Manifesto Ágil, criado em 2001.

Princípios básicos do desenvolvimento Agile

Existem alguns princípios básicos em todas as várias metodologias de desenvolvimento Agile mencionadas acima.

Desenvolvimento de software enxuto

O desenvolvimento ágil visa tornar o produto final o mais direto possível. Ou seja, seguir as etapas mais fáceis para obter resultados de alta qualidade. Assim, os desenvolvedores reduzem a complexidade e o inchaço que podem afetar significativamente o desempenho.

Trabalho em equipe

A metodologia Agile valoriza as vantagens de se trabalhar em equipe. As equipes devem trabalhar juntas e avaliar continuamente como podem melhorar e se tornar mais eficientes.

Envolvimento do cliente

Devido às mudanças frequentes no design e nos resultados, o Agile exige que a equipe de operação e os clientes colaborem estreitamente. Isso significa garantir alta satisfação do cliente com os MVPs e obter feedback contínuo também.

Sustentabilidade

Ao invés de pressionar a equipe com prazos mais rápidos e receber projetos inacabados, o desenvolvimento Agile enfatiza a criação de um ritmo de desenvolvimento mais sustentável.

Teste

O Agile envolve testes em todos os estágios do projeto, diferente do modelo em Cascata. Os sprints curtos no Agile incluem testes contínuos, e os desenvolvedores devem fornecer feedback contínuo e a qualidade do projeto regularmente.

Adaptabilidade

A metodologia Agile destaca os benefícios de ter espaço para alterar requisitos, arquitetura, entregas e design durante o desenvolvimento do projeto. É uma estratégia de desenvolvimento de software mais flexível.

Vantagens da Metodologia Agile

Uma das principais vantagens da metodologia Agile e que ela permite que mudanças sejam feitas após o planejamento inicial.

Os ciclos de desenvolvimento curtos e cronometrados dão ao projeto de desenvolvimento de software mais flexibilidade para se adaptar às mudanças do cliente sempre que aplicável.

No final de cada sprint, as prioridades do projeto são analisadas. Isso permite que os clientes adicionem o seu feedback para que eles finalmente obtenham o produto que desejam.

O benefício de dividir o projeto em partes interativas é o fato de que os desenvolvedores têm espaço e tempo suficientes para criar testes de unidade mais abrangentes para medir recursos específicos no produto viável mínimo.

Outro benefício é que os testes no final de cada iteração significam que irá obter versões de maior qualidade com menos bugs. Essa é uma base robusta que contribui para lançamentos de software de qualidade mais rápida com iterações sucessivas.

Além de envolver comunicações frequentes entre as equipes, programação em pares e, portanto, utiliza a força de todos os membros da equipe.

O Relatório CHAOS Manifesto, da consultoria Standish Group revela que projetos de software, desenvolvidos segundo metodologias ágeis têm taxa de sucesso três vezes maior se comparados às formas tradicionais.

Desvantagens da Metodologia Agile

A flexibilidade também pode ser um aspecto negativo nesta metodologia pois pode deixar algum espaço para a procrastinação.

Além do mais, como as tarefas geralmente são geradas e priorizadas a cada iteração, o resultado é que o cronograma geral de entrega será mais avançado no futuro.

Outra limitação é que o Agile só funciona com eficiência quando todos os membros da equipe estão realmente comprometidos com o projeto. Isso ocorre porque envolve a colaboração da equipe e reuniões diárias que podem consumir muito tempo.

Embora a metodologia permita um melhor planejamento, é provável que entregas específicas não sejam entregues a tempo. E a criação de sprints extras necessários pode, portanto, significar maiores custos do projeto para o cliente.

Como escolher entre Waterfall e Agile

Existem várias maneiras de desenvolver um software, sendo que dois dos métodos mais usuais são o Waterfall e o Agile. E qual utilizar?

A metodologia Waterfall pode não trazer bons resultados quando o projeto exige uma duração maior ou é muito complexo. Porém, em projetos em que os requisitos são muito claros e que dificilmente serão alterados ao longo do tempo podem optar pelo uso dessa metodologia.

Essa prática é comum em empreendimentos da indústria e da construção civil, quando os ambientes são altamente controlados e estruturados e as mudanças após as entregas do projeto serão muito caras ou impossíveis.

Ao perceber que a probabilidade de mudanças nos requisitos são altas, o ideal é adotar métodos mais flexíveis de gerenciamento, que permitam mudanças a cada etapa sem grandes impactos na qualidade, no custo e no prazo.

Assim, o método ágil é adequado para projetos maiores e mais complicados e que têm acesso aos clientes para feedbacks. Devido à sua flexibilidade incorporada, a estratégia ágil é ideal para os projetos que mudam continuamente os requisitos.

Conclusão

As discussões sobre as melhores metodologias para o gerenciamento de projetos podem gerar debates fervorosos, mas a verdade é que todas elas possuem prós e contras e podem ser aplicadas com resultados positivos.

A verdade é que não existe um certo ou errado. A chave para escolher qual metodologia é a mais adequada se resume ao contexto de cada projeto.

O projeto vai mudar rapidamente? Em caso afirmativo, escolha Agile. A equipe sabe exatamente o que precisa? Então, talvez Waterfall é a melhor opção.

Ou quem sabe, considerar os aspectos de ambas as metodologias e combiná-las, a fim de fazer o melhor processo de desenvolvimento de software para o projeto.

O importante é que independente de qual é a decisão, se é mais convencional ou mais popular, entre qual modelo de desenvolvimento usar deve focar e se basear em objetivos individuais, clientes, equipes e necessidades do projeto.

Links para Leitura

Adriele Portugal

Analista Adm/Financeira na GoBacklog, uma empresa especializada no desenvolvimento de soluções digitais que vem mudando a forma de se criar negócios digitais de sucesso. Estudante de Ciências Econômicas na UFJF/GV.