A primeira decisão ao iniciar um projeto é definir qual metodologia será adotada para gerenciar as entregas previstas. Veremos a seguir as duas principais metodologias de desenvolvimento de software: o modelo de cascata e o modelo ágil. Vamos conhecer suas características, analisar suas vantagens e desvantagens e o entender qual o real valor para o cliente.
Modelo de Cascata
O modelo de cascata, em inglês waterfall model, é um modelo tradicional de desenvolvimento de software. Conhecida por possuir uma abordagem linear desde o início de um projeto até a conclusão, em que as etapas são seguidas de forma rigorosa e sequencial. Basicamente as etapas para a entrega do produto se baseia na seguinte ordem: levantamento de requisitos, definição do escopo do projeto, desenho, desenvolvimento, testes e entrega do produto final
Essa metodologia não permite flexibilizações no percurso, pois cada etapa se inicia somente quando a anterior é finalizada. Por exemplo, caso na etapa de desenvolvimento os envolvidos no projeto entendam que seria necessário um novo módulo para o sistema que está sendo desenvolvido, isso não seria possível, pois a etapa de levantamento de requisitos já foi finalizada e não pode ser retomada.
Benefícios do uso do modelo cascata
Como benefícios do modelo cascata, há a regra de que o cliente e o time de desenvolvimento (analistas de negócios, engenheiros de software, designer, entre outros profissionais envolvidos) entrem em um consenso por meio dos requisitos pré-estabelecidos, aprovando o desenho do produto final antes do início do desenvolvimento. Ou seja, esse modelo evita brechas para retrabalho, uma vez que o cliente não tem a possibilidade de solicitar a inclusão de novos requisitos, telas, funcionalidades, enquanto que os desenvolvedores se comprometem a entregar o que foi acordado previamente.
Desvantagens do modelo cascata
No entanto, esse modelo costuma ser bastante demorado para se ter um resultado tangível para o cliente, uma vez que cada etapa é explorada profundamente, para que todos os cenários sejam levantados, desenhados e aprovados – e isso faz com que as próximas etapas fiquem estacionadas. Ou seja, suponhamos que cada etapa leve dois meses para ser concluída, então o cliente só verá o desenho de telas a partir do 5º mês e assim por diante.
Há diversos relatos de fracasso de entregas nesse modelo, uma vez que foram necessários meses de trabalho para que o cliente recebesse o produto final. E, quando finalmente recebeu, o escopo do negócio havia mudado e consequentemente o software entregue não atendia mais suas necessidades e expectativas ao final.
Modelo Ágil
Enquanto que o modelo cascata é um modelo que leva muito tempo para ser desenvolvido, o modelo ágil é eficiente e rápido, como o próprio nome sugere. Este modelo traz uma abordagem iterativa, onde um componente funcional é desenvolvido, testado e entregue em questão de semanas, permitindo que o cliente tenha pequenas funcionalidades entregues separadamente, e que irão compor um único produto ao final.
Metodologia ágil e Manifesto Ágil
Em conjunto com a metodologia ágil, existe o Manifesto Ágil, que é um documento criado em 2001 por um grupo de 17 desenvolvedores que se reuniram nos EUA, a fim de discutir as melhores maneiras de desenvolvimento de software.
No documento que resultou as discussões, foi estabelecido 4 fundamentos básicos:
- Indivíduos e interações acima de processos e ferramentas;
- Software funcionando acima de documentação abrangente;
- Colaboração com o consumidor/cliente acima de negociação de contratos,
- Resposta às transformações/mudanças, mais do que seguir um plano.
E também 12 princípios que são desdobramento dos fundamentos citados acima:
- Ter como prioridade a satisfação do cliente por meio de entregas de valor contínuas e rápidas;
- Ser receptivo a alterações nos requisitos em qualquer fase do processo. Aliás, ambientes mutáveis são empregados em toda etapa do projeto para entregar ao cliente vantagem competitiva;
- Realizar entregas frequentes (do produto ou serviço) no menor período de tempo possível;
- Manter a colaboração das partes envolvidas em todo o projeto, diariamente;
- Fornecer o ambiente, as ferramentas e o suporte necessários aos indivíduos do projeto, além de acreditar neles para realizar as atividades;
- Estimular a comunicação pessoal, que transmite as informações necessárias ao time de colaboradores, sendo o meio mais eficiente. Nesse ponto, atenção especial para reuniões presenciais, consideradas mais eficazes para o sucesso do projeto;
- Um produto final de trabalho corresponde à medida final do êxito. No caso da tecnologia, a medida primária de progresso consiste no software em funcionamento;
- Os profissionais envolvidos no processo precisam manter um ritmo constante, de modo indefinido, pois fluxos ágeis estimulam um desenvolvimento sustentável. Da mesma maneira, o desenvolvimento sustentável é feito por intermédio de processos ágeis, por meio dos quais as partes interessadas conseguem manter um ritmo contínuo e cíclico;
- Manter atenção frequente à excelência de design e técnica eleva ou aprimora a agilidade;
- Eliminar o máximo de esforços que não geram valor ao produto, pois a simplicidade é fundamental;
- Equipes auto-organizáveis propiciam os melhores designs e arquiteturas, além de atenderem aos requisitos do projeto,
- Por meio de intervalos regulares, o time de colaboradores do projeto reflete sobre como melhorar a sua eficiência e eficácia para otimizar o seu comportamento.
Benefícios do Modelo Ágil
Pensando nos itens do Manifesto, diferente do modelo cascata que possui etapas, o modelo ágil possui sprints (abordagem do Framework Scrum), que são fases com tempo pré-definido, que varia entre uma e quatro semanas, onde é planejada uma lista de tarefas para ser executada para compor a entrega de um componente. Caso as tarefas não sejam finalizadas na sprint determinada, elas são repassadas para a próxima sprint e assim por diante, até que a entrega seja finalizada.
Os times, denominados squads, são formados por pessoas de diferentes áreas de conhecimento, como designers, desenvolvedores, analistas de negócios e analistas de projetos, além de uma pessoa que trabalha em função de acompanhar o andamento do projeto e retirar impedimentos que possam atrasar as entregas do time.
Esse modelo permite uma flexibilidade enorme para o projeto, já que possibilita que o cliente esteja próximo do desenvolvimento, sugerindo melhorias e adequando as demandas conforme a necessidade do negócio, uma vez que é possível priorizar demandas que só seriam desenvolvidas no futuro e também ajustar demandas que estão em desenvolvimento.
Desvantagens do Modelo Ágil
Mesmo com todos os benefícios apresentados, o modelo ágil também possui desvantagens em certos aspectos, como:
- Dificuldade de prever o custo final do projeto, pois diferente do modelo tradicional, o escopo do projeto pode ser alterado a qualquer momento.
- Entregas de pequenos módulos que irão compor o sistema final, o que pode ser um problema para clientes que necessitam do sistema completo para o seu negócio.
Conclusão
Portanto, não podemos dizer que existe um modelo bom e um ruim, mas sim um modelo que se adequa melhor para o projeto do cliente, seja ele o modelo cascata, o modelo ágil ou outro existente. Mas para saber qual se adequa melhor, a empresa e as pessoas devem se permitir testar e aprender com cada modelo, sempre observando qual é mais produtivo e efetivo para o seu time e para o seu modelo de negócio.
Ana Carolina Adescenco Fernandes
Moro em SP, tenho 23 anos e sou formada em Sistemas de Informação. Trabalhei com TI em diversos segmentos, desde indústria, área hospitalar e financeira, e atualmente sou Engenheira de Software no Itaú. Amo tecnologia, animais e música, além de gostar de passar meus conhecimentos e orientar pessoas que querem vir para a área de tecnologia.