Modelo Linear Sequencial (Cascata ou Ciclo de vida classico)
Análise -> Projeto (design) -> Codificação -> Teste -> Suporte
Problemas: Projetos reais normalmente não seguem uma ordem sequencial, o que pode causar confusão na equipe de projeto. Existe dificuldade dos usuários (clientes) definirem todos os requisitos inicialmente. A versão visível do projeto somente será vista no final do projeto.
Modelo de Prototipação
Definição dos Requisitos -> Projeto Rápido (versão visível ao cliente)
Natureza Iterativa. Permite que o usuário "perceba" o software antes do fim do projeto.
Problemas: O cliente não vê uma versão funcional do sistema. Possibilita práticas indesejáveis de programação. O software nunca está pronto.
Modelos Evolucionários
Modelo Evolucionário Incremental
Combina elementos do modelo Cascata com a filosofia iterativa da prototipação. Cada sequência linear produz uma versão "entregável" do software.
Modelo Evolucionário Espiral
O software é desenvolvido em uma série de "releases" incrementais. Nas primeiras iterações o resultado pode ser apenas um modelo em papel. Não termina quando o software é entregue.
Problemas: Dificuldade de provar que é uma abordagem controlável. Modelo pouco testado.