Fazem parte dos modelos evolutivos.

Há situações em que a engenharia de software necessita de um modelo de processo que possa acomodar um produto que evolui com o tempo. Modelos evolutivos são iterativos, possibilitam o desenvolvimento de versões cada vez mais completas do software. Esses processos são usados quando: - os requisitos de produto e de negócio mudam conforme o desenvolvimento procede. - data de entrega apertada (mercado) – impossível a conclusão de um produto completo. - o conjunto de requisitos importantes é bem conhecido, porém os detalhes ainda devem ser definidos.

O que difere o modelo iterativo incremental do modelo espiral?

Barry Boehm sugeriu, tendo em vista as limitações da abordagem tradicional, que o desenvolvimento de sistemas de informação poderia ser administrado numa série de incrementos. Assim, poderia haver uma série de ciclos de vida tradicionais para cada incremento.

O Modelo Incremental foi desenvolvido através da combinação entre os modelos linear e prototipação. O desenvolvimento é dividido em etapas, denominadas “incrementos”, que produzirão incrementalmente o sistema, até a sua versão final.

Em cada incremento é realizado todo o ciclo do desenvolvimento de software, do planejamento aos testes do sistema já em funcionamento. Cada etapa produz um sistema totalmente funcional, apesar de ainda não cobrir todos os requisitos.

O Modelo Incremental apresenta diversas vantagens para o desenvolvimento de um software, especialmente se os requisitos não estão claros inicialmente. Por exemplo: quando o Modelo Incremental é utilizado, o primeiro incremento é normalmente constituído do núcleo do sistema. Isto é, os requisitos básicos são implementados, e os detalhes suprimidos. Esse produto será entregue para uma avaliação, que poderá detectar, inicialmente, problemas que poderiam ser de dimensões muito maiores se detectados somente na entrega do produto final.

Outra vantagem para o desenvolvedor é que, em contato com o sistema, o cliente esclarece seus requisitos e suas prioridades para os próximos incrementos, além de contar com os serviços da versão já produzida.

Outras vantagens são: A construção de um sistema menor é sempre menos arriscada que a construção de um grande; Se um grande erro é cometido, apenas o último incremento é descartado; Reduzindo o tempo de desenvolvimento de um sistema, as chances de mudanças nos requisitos do usuário durante o desenvolvimento são menores.


                                        


O modelo espiral combina a iteratividade da prototipagem com os aspectos controlados e sistemáticos do modelo cascata.

Seguindo a mesma linha do modelo incremental,o modelo foi proposto o modelo EPS (Boehm, 1988) - Evolutionary Spiral Process. Este modelo baseia-se em quatro principais atividades:

Determinação dos objetivos, alternativas e restrições; Análise de risco e prototipação; Validação e verificação; Planejamento da fase seguinte.

                                         

Esta concepção tende a criar um roteiro de atividades e etapas para que se alcance uma maturidade do processo evolutivo de desenvolvimento de sistemas complexos e obter, ao final, um produto em sua forma mais completa possível.

Problemas do Modelo espiral. O modelo em espiral, por suas características de avaliação e planejamento baseadas em risco, exige que se tenha gerentes e técnicos experientes. As tarefas gerenciais para acompanhamento e controle do projeto tornam-se mais difíceis, uma vez que o modelo em espiral pode levar ao desenvolvimento em paralelo de múltiplas partes do projeto, cada uma sendo abordada de modo diferenciado. É necessário o uso de técnicas específicas para estimar e sincronizar cronograma.


Conclusão: O modelo Espiral é uma de versões incrementais gera o software no bom estilo do modelo incremental. A cada ciclo, versões progressivamente mais completas do software são construídas. Ajustes ao plano do projeto são feitas a cada passagem pela região de planejamento. Os gerentes de projeto ajustam o custo, o cronograma e a quantidade de iterações que completarão o projeto através da avaliação do cliente. Dessa forma, observa-se que o modelo espiral acrescenta aspectos gerenciais ao processo de desenvolvimento de software (análise de riscos, planejamento, controle, tomada de decisão), redução de riscos antes que os mesmos fiquem problemáticos, usa a prototipagem como mecanismo de redução de riscos e pode ser adaptado às necessidades de cada projeto.