Segundo o dicionário Aurélio modelo é: aquilo que serve de objeto de imitação. Um modelo de engenharia de software é uma estratégia que é “imitada” pelos profissionais de desenvolvimento por ser uma prática amplamente divulgada e aceita no mercado. A importância de se ter um modelo é lidar com um framework já reconhecido e utilizado por outras organizações.
Entre os modelos de engenharia de software o modelo cascata – também chamado de modelo sequencial linear e ciclo de vida clásssico – continua sendo um modelo bastante utilizado para a engenharia de software, apesar de ser relativamente antigo. Basicamente um modelo de desenvolvimento em cascata resume-se em um modelo sequencial de desenvolvimento, com fases bem definidas, sendo comum as fases de: análise, projeto, codificação, teste e manutenção.
Em contraposição ao modelo cascata surgiu nos últimos anos o modelo ágil de desenvolvimento que consiste em uma série de ciclos ou iterações curtas – geralmente semanas – de desenvolvimento com um grau de colaboração entre os envolvidos bastante alta. Cada um destes ciclos representam mini-projetos dentro do projeto original com todas as fases características de um projeto, resultando ao final de cada ciclo a implantação de uma parte da funcionalidade requisitada. Ao final de todos os ciclos temos a funcionalidade disponibilizada ao usuário por completo.
Existem outros diversos tipos de modelos de engenharia de software. A escolha do modelo deve levar em conta fatores como: cultura da empresa, nível de maturidade dos processos, natureza da aplicação e do projeto, entre outros fatores. Imaginado cenários adequados para cada um dos modelos expostos nesse artigo: o modelo cascata e o modelo ágil, podemos fazer a seguinte correlação entre estes, focando nas principais vantagens e desvantagens de cada um:
Modelo Cascata – Vantagens
-
Fases bem definidas.
-
Maior foco no planejamento.
-
A fase seguinte só se inicia – geralmente – caso o cliente aceite os artefatos produzidos na fase anterior.
Desvantagens
-
O modelo cascata exige que o cliente estabeleça todos os requisitos no início do projeto.
-
O cliente irá visualizar alguma coisa apenas perto do fim do projeto.
-
Um esforço considerável na fase de teste do projeto e ocorrências de alguns “estados de bloqueio”, nos quais alguns membros de equipe do projeto precisam esperar que outros membros terminem as tarefas dependentes para que o projeto prossiga.
Modelo Ágil – Vantagens
- Diminuição da expectativa dos clientes por entregas.
- Rápida adaptação a mudanças.
- Maior satisfação dos clientes.
Desvantagens
- Em modelos ágeis o foco pode não ser o gerenciamento de riscos. Desta forma, um projeto, até a sua entrega final, pode ter um prazo maior do que o esperado. Importante ressaltar que uma característica do modelo ágil é ter, geralmente, a determinação da data fim do projeto apenas ao longo deste.
- Uma outra desvantagem é que o custo do projeto também é conhecido apenas ao longo do projeto. Esse fato exige que o gestor do projeto dedique mais tempo no controle dos custos envolvidos. Um orçamento limite seria interessante neste tipo de abordagem.
Qual é a sua opinião sobre estes modelos? O que a sua empresa utiliza como modelo de desenvolvimento? Opiniões e comentários são bem vindos!
Fontes:
-
ENGENHARIA DE SOFTWAR. PRESSMAN, Roger S..
-
SCRUM: Um modelo ágil para gestão de projetos de software. FERREIRA, Décio, COSTA, Felipe, ALONSO, Filipe, ALVES, Pedro, NUNES, Tiago