Modelo cascata em projetos de software: entenda essa metodologia

O modelo cascata traz etapas sequenciais e organização para o processo de desenvolvimento de software. É importante conhecer a metodologia. Veja mais sobre o assunto.

Foto de Christina Morillo no Pexels


Hoje, é comum que sejamos bombardeados com os termos típicos das metodologias ágeis: sprint, scrum master, backlog, continuous delivery e muitos outros. Temos a impressão de que essas metodologias são as únicas usadas e que isso sempre foi assim. Contudo, é importante pontuar que essa é uma concepção errada da gestão de projetos. Por muito tempo, o modelo principal era o modelo cascata.

Essa estratégia surgiu como uma forma de lidar com os problemas na criação de softwares e gerar maior capacidade de previsão. Mesmo que hoje ela não seja a mais usada no mercado, ainda é favorita em alguns ambientes acadêmicos.

Nesse sentido, pela sua importância, é imprescindível que estudantes e pessoas programadoras saibam como ela funciona e se estrutura. Pode ser um assunto interessante para pessoas que programam para desktop, pessoas full stack ou pessoas que focam o mobile. Para saber mais, confira o artigo completo. 

Modelo cascata: o que é e como funciona?

A metodologia de desenvolvimento de software cascata (ou waterfall) surgiu em meados dos anos 70 como uma forma de otimizar a gestão desse tipo de projeto. Baseia-se em uma hierarquia rígida de etapas sequenciais, com um controle fixo das funções. 

Inicialmente, o modelo waterfall foi proposto como uma maneira de melhorar a previsibilidade dos projetos. Como ele é fincado em planejamento e em extensa documentação, gera uma capacidade preditiva maior sobre tempo e orçamento para as empresas.

Geralmente, a documentação suporta a definição do cronograma, dos custos e do escopo como aspectos fixos do desenvolvimento de software

A metodologia em cascata é marcada por suas etapas: levantamento de requisitos, planejamento, modelagem, desenvolvimento, testes e implantação. Veremos, a seguir, como funciona essa sequência e o que é feito em cada fase.

Levantamento de requisitos

Esse momento envolve uma entrevista com o cliente para entender exatamente do que se trata o software. Ou seja, compreende-se a proposta do projeto e os problemas que devem ser atendidos. Os pontos principais são transformados em funcionalidades a serem implementadas, de fato, e definem as expectativas do cliente com relação ao produto. 

Os requisitos são fundamentais, pois definem o que chamamos de escopo do projeto. Em outras palavras, é o que limita o sistema para as necessidades que ele deve solucionar especificamente. Portanto, determina o que deve ser resolvido e o que deve ser ignorado.

Planejamento

Uma vez que já se tem o escopo e os requisitos, é preciso planejar o projeto propriamente dito e começar a desenvolver a documentação. Escolhem-se os pontos principais, como as linguagens de programação utilizadas, a divisão de papéis, o orçamento, os prazos para cada etapa e outros. 

Modelagem

Na modelagem são estipulados aspectos gerais como as plataformas usadas, as metodologias, a modelagem dos dados do sistema, bem como a adaptação do mundo real para o código. No paradigma da orientação a objetos, por exemplo, esse é o momento importante para definir as classes e as interfaces do sistema e determinar os modelos de representação da realidade. 

O objetivo é chegar a um mapa do processo de desenvolvimento, que é a etapa seguinte. Nesse sentido, a fase é marcada pela criação de muitos documentos que servirão como um norte nas outras fases.

Desenvolvimento

O desenvolvimento propriamente dito é a hora de colocar a mão no código, a codificação. A equipe coloca em prática a divisão dos membros e constrói as funcionalidades e os arquivos do projeto. O foco é levantar e desenvolver o sistema em sua completude, atendendo aos pontos que foram identificados anteriormente.

Por mais complexa que pareça a fase de desenvolvimento no método cascata, ela depende fortemente das fases que a precedem. Assim, se você fez um bom levantamento de requisitos, se definiu muito bem o seu escopo e se tem modelos claros e intuitivos, o processo de codificação seguirá bem.

Testes

Existe também uma etapa específica para garantir a consistência do sistema implementado: os testes. Nesse momento, o sistema é executado com combinações diversas para assegurar sua robustez e encontrar erros. A metodologia de teste pode variar a depender do que sua equipe preferir, mas geralmente passa por essas questões. 

A jornada de testes deve sempre olhar para os requisitos e para os documentos referentes ao escopo como um roteiro. Com eles, define-se o que analisar e como validar um produto. 

Implantação

Por fim, uma vez que o sistema já está pronto para ser entregue e o prazo já foi cumprido, é preciso implantá-lo no ambiente de uso. Isso inclui a distribuição e as manutenções posteriores para atualizações e reparações. Geralmente, nesse momento, é preciso reforçar o suporte ao cliente na sua adaptação ao software.

Vantagens e desvantagens do método waterfall

Agora, vamos conhecer as vantagens e desvantagens do método cascata.

Vantagens

A divisão da produção em momentos muito bem estruturados é importante para gerar visibilidade sobre os projetos. O time sabe exatamente o que está fazendo a cada momento e consegue se concentrar o máximo para entregar o melhor. Ou seja, essa é uma forma interessante de organizar o desenvolvimento de software.

Aliás, o foco em documentação nos traz outra vantagem: a ênfase em documentar e registrar o que é feito. É comum que pessoas programadoras simplesmente queiram começar um projeto já com a diversão: a codificação, os testes, o tratamento de erros. Por isso, muitos negligenciam a criação de documentos e relatórios que ajudarão a compreender o sistema futuramente.

Muitas pessoas até não gostam ou não criaram o hábito de comentar seus códigos, o que é uma péssima escolha em termos de sustentabilidade. Afinal, essa documentação favorece as manutenções futuras.

Da mesma forma, a etapa de planejamento é essencial para muitos projetos. É uma vantagem contar com ela, pois ajuda os times a entender melhor o escopo do produto e definir um limite para o que farão. Isso gera uma meta muito clara, com obstáculos conhecidos, e impede que o projeto cresça demais.

Uma visão clara do escopo e dos requisitos é como definir os trilhos para que o trem siga o seu caminho. Diminui os riscos de perder a rota e sair da jornada proposta. Trata-se de um ótimo intermédio em discussões dos membros também: todos podem recorrer à documentação para tirar dúvidas.

Desvantagens

Um dos principais problemas da produção que segue o método cascata é a burocracia. Por conta da documentação extensa e do foco na rigidez das etapas, o processo de desenvolvimento pode se tornar extremamente lento e difícil de fluir. O ato de gerar relatórios e documentos sobre cada etapa se torna, às vezes, um entrave e um gargalo para a produtividade.

Outro ponto é a pouca participação de clientes no processo. Geralmente, clientes são uma voz ativa apenas no momento de definição dos requisitos. Então, a pessoa que contratou a equipe deve esperar até o final do projeto para visualizar o resultado. Não existe interferência no meio, já que tudo segue um roteiro preestabelecido.

A própria rigidez das sequências de etapas se torna um problema também. Como as fases seguintes só podem começar depois que as anteriores terminam, a equipe perde a capacidade de improvisar para lidar com imprevistos. Caso haja a identificação de erros, é difícil tratá-los devidamente.

Assim, em alguns projetos, o modelo waterfall pode gerar um acúmulo de falhas não tratadas que resultam em um produto ruim.

Por isso, a metodologia é também inflexível e, portanto, lida mal com mudanças. Em um mundo dinâmico, em que é difícil ter controle de todas as variáveis, os times sofrem muito com essa questão. Até mesmo a comunicação se fecha bastante em hierarquias prontas e tem pouca capacidade de variar disso.

Em quais tipos de projeto o modelo cascata é recomendável?

Apesar de seus pontos negativos, a metodologia cascata, assim como qualquer outra, é ideal para alguns tipos específicos de projeto. Nesses tipos, ela consegue superar outras estratégias de gestão. O desafio é, então, saber aplicá-la devidamente.

No geral, se há a possibilidade de ter certeza sobre requisitos ou escopo, o modelo waterfall pode ser interessante. Quando o foco é criar um produto que é pouco customizável e já tem uma fórmula pronta, então o time não enfrentará grandes problemas (claro, isso depende muito do tipo de nicho que se analisa).

Outro ponto é se há restrições de tempo e de orçamento. Com a cascata, você define de antemão quanto utilizará de dinheiro no projeto e qual é o limite de prazo. Então, existe essa previsibilidade que é muito importante quando a pessoa gestora precisa responder a superiores ou a clientes.

Estipular antes a quantidade de dinheiro é como definir um teto de custos para o processo em específico. A cascata, nesse sentido, se destaca mais do que suas concorrentes que dão mais liberdade para as equipes e, por consequência, podem acabar custando mais.

Além disso, se você tem como produto um objeto físico ou quer desenvolver um plano de construção de algo, a metodologia waterfall é uma boa opção. Afinal, nesse caso, não há muita variação e a documentação é realmente essencial. 

Outro uso que dá muito certo é a aplicação de cascata para atualização de um sistema que já existe ou para mudanças pontuais em aplicações construídas. Ou seja, projetos menores, em que se pode ter um controle mais estrito. Nesse cenário, os requisitos são conhecidos e fáceis de administrar. Além disso, o produto em si já está pronto, então não haverá um longo período de espera.

Outras metodologias de desenvolvimento de software

Para entender melhor como a metodologia cascata se aplica a determinados tipos de projetos, vamos conhecer seus concorrentes. Nesta seção, examinaremos os principais modelos de gestão de projetos de software e suas características.

Modelo em V

A metodologia em V é uma melhoria da cascata. Visa interpolar etapas de planejamento e construção com testes organizados para garantir a consistência do produto. Assim, aproveitam-se melhor os processos de testagens e, no geral, é possível obter produtos com uma qualidade superior.

Scrum

O Scrum é, provavelmente, a metodologia ágil mais usada e mais famosa no mercado. Envolve a divisão de um processo de desenvolvimento em diversas etapas menores, chamadas de sprints. Para cada sprint, existe uma reunião para definir o que será codificado. O método traz foco na participação do cliente e na flexibilidade do processo.

Também ocorrem reuniões diárias para alinhar e planejar próximas etapas. Ou seja, o planejamento do Scrum é sempre de curto prazo, com um olhar específico para o que vem logo adiante apenas.

Por mais que exista uma definição dos requisitos do produto, eles serão revisados a cada sprint. Com essa lógica do “dividir para conquistar”, os times planejam chegar a versões funcionais mais rapidamente (depois de cada sprint, o time tem um entregável) e a resultados mais satisfatórios para os clientes. É uma ótima estratégia para produtos que precisam de muita personalização e para empresas modernas.

Feature Driven-Development (FDD)

O Feature Driven Development é uma metodologia focada em funcionalidades e características. Assim, orienta todo o processo para atender a essas demandas, com divisão dos times de acordo com as funções e testes de qualidade constantes. É muito focada em visibilidade, com modelagens e criações de formas de representação da realidade.

No FDD, o planejamento e a modelagem são orientados por funcionalidade. Além disso, o processo visa fazer entregas constantes para mostrar essas funcionalidades prontas a clientes e coletar seu feedback.

XP

A Extreme Programming (XP) é muito famosa em empresas focadas em desenvolver software e em startups recém-criadas.

Envolve foco em comunicação interna para desenvolver um trabalho cooperativo, feedbacks constantes dos clientes, eficiência, flexibilidade para atender a mudanças e realizar alterações necessárias. Outro ponto é a disposição para mudar os requisitos conforme a visão do produto vai mudando com o tempo.

Para alcançar mais eficiência, a XP requer divisão dos times em equipes menores, programação em pares, testes e refatoração, lançamentos curtos, entre outros. 

O modelo cascata tem vantagens e alguns pontos negativos. Contudo, sua aplicação possibilita características importantes para projetos menores, com requisitos conhecidos/padronizados e projetos que geram produtos físicos. Nesse sentido, as pessoas que trabalham com programação e desenvolvimento devem continuar entendendo essa metodologia e como ela pode ser aplicada.

Apesar de sua importância, no mundo do software a metodologia cascata tem perdido espaço nos últimos anos. Isso se dá por sua falta de flexibilidade e pela burocracia associada com a documentação extensa. Assim, é fundamental conhecer bem suas alternativas também para obter o melhor em seus projetos. Uma das melhores alternativas são as metodologias ágeis.

Agora que você já entende melhor esse tema, confira nosso e-book sobre metodologias ágeis e aprofunde-se nessa tendência moderna.