Os modelos evolucionários são iterativos, apresentando
características que possibilitam desenvolver versões
cada vez mais completas do software.
Modelo Evolucionário baseia-se na ideia de
desenvolvimento de uma implementação inicial,
expondo o resultado aos comentários do usuário e
refinando esse resultado por meio de várias versões
até que seja desenvolvido um sistema adequado ou
descartando-o. As implementações mais famosas do
Modelo Evolucionário são: Prototipagem e Espiral!
Em geral, a abordagem evolucionária é mais eficaz
que abordagem em cascata. Por que? Porque a
especificação pode ser desenvolvida de forma
incremental. À medida que os usuários
compreendem melhor seu problema, isso pode ser
refletido no sistema de software.
O processo não é visível: se os sistemas são desenvolvidos
rapidamente, não é viável economicamente produzir
documentos para cada versão do sistema.
Os sistemas são frequentemente mal estruturados: mudanças
contínuas tendem a corromper a estrutura do software e tornar
mudanças difíceis e caras.
O Pressman recomenda o Desenvolvimento Evolucionário
para sistemas de pequeno e médio porte (até 500 mil
linhas de código).
Diferença entre modelo incremental e Evolucionário
Incremental: Tem o objetivo de apresentar um produto de trabalho
ou uma funcionalidade operacional a cada iteração.
Evolucionário: Durante as primeiras iterações, pode
gerar versões compostas apenas por modelos em
papel ou protótipos.
Em suma, um Modelo Evolucionário não vai
necessariamente liberar funcionalidades a cada
iteração como ocorre no Modelo Incremental,
logo alguns autores não consideram, por
exemplo, o Modelo Espiral como um Modelo
Incremental, mas como Evolucionário.
As atividades de especificação, desenvolvimento e validação
são intercaladas, em vez de separadas, com feedback rápido
que permeia as atividades