1. MODELO EM CASCATA
Também conhecido como ciclo de vida clássico, o modelo em cascata define estágios seqüenciais para o desenvolvimento de software. Estes estágios compreendem as atividades de análise e levantamento de requisitos, planejamento, análise e projeto de sistemas e de software, implementação e testes, implantação e manutenção. É indicado para sistemas que apresentem requisitos bem definidos e estáveis, isto porque, apesar do modelo permitir “ciclos de realimentação”, modificações durante o projeto tendem a ser onerosas e envolvem um ‘retrabalho’ significativo. Além disto, a natureza linear do modelo pode gerar, ainda, o que Pressman apud Bradac denominou “estados de bloqueio”, que ocorrem quando membros da equipe precisam esperar que outros membros concluam as suas atividades para iniciarem ou retomarem às suas.
2. MODELO INCREMENTAL
O modelo incremental combina elementos do modelo em cascata aplicados interativamente [Pressman]. No modelo incremental o primeiro incremento, chamado de núcleo do produto, apresenta os requisitos básicos do sistema. O núcleo do produto é disponibilizado para o cliente enquanto novos incrementos são elaborados, fornecendo progressivamente novas funcionalidades, de modo a atender necessidades do cliente que ainda não haviam sido definidas ou que não foram implementadas por escassez de mão de obra ou prazos impossíveis.
Os primeiros incrementos são versões funcionais do sistema que, embora incompleto, atende às necessidades iniciais do cliente e servem como uma plataforma de avaliação pelo usuário [Pressman].
3. MODELO EVOLUCIONÁRIO
O modelo evolucionário tem como base a idéia de criar rapidamente um sistema inicial a partir de especificações abstratas que são progressivamente refinadas pelo cliente de modo a produzir um sistema que satisfaça suas necessidades [Sommerville]. O modelo evolucionário caracteriza-se, ainda, por intercalar as fases do ciclo de vida clássico do software em detrimento da linearidade tradicional do modelo em cascata.
Segundo Sommerville, há dois tipos de modelo evolucionário: o desenvolvimento exploratório, também conhecido como modelo espiral e a prototipagem. O desenvolvimento exploratório tem por objetivo trabalhar com o cliente a fim de explorar seus requisitos. O desenvolvimento se inicia com as partes do sistema que foram compreendidas enquanto às demais são elaboradas à medida que novas necessidades forem sendo identificadas pelo cliente. Já a prototipagem consiste em compreender os requisitos do cliente e elaborar protótipos para validação dos mesmos. A prototipagem oferece ao cliente uma visão mais clara dos requisitos quando o mesmo não identifica quais são os requisitos de entrada, processamento e saída do sistema [Pressman]. Apesar de poder ser utilizada como um modelo independente, a prototipagem geralmente é utilizada como uma técnica em quaisquer dos modelos citados com o objetivo de refinar os requisitos junto ao cliente.
O modelo evolucionário permite que os usuários desenvolvam uma melhor compreensão de seus problemas, o que reflete diretamente na eficácia do sistema [Sommerville]. Além disso, permite que o cliente tenha uma melhor compreensão dos riscos de cada etapa do projeto e reajam de maneira a causar o menor impacto possível no processo de desenvolvimento.
REFERÊNCIAS BIBLIOGRÁFICAS
SOMMERVILLE, Ian. Engenharia de Software. 6 ed. São Paulo: Addison Wesley, 2003.
PRESSMAN, Roger S. Engenharia de Software. 6 ed. São Paulo: McGraw-Hill, 2006.