Modelo en Espiral
El modelo en espiral es una combinación entre el modelo lineal o de cascada y el modelo iterativo o basado en prototipos que habíamos mencionado anteriormente. Se utiliza con éxito en proyectos donde el coste de un fallo es un gran riesgo, de ahí que su principal aportación sea considerar la gestión de esos riesgos, algo que en los modelos anteriores ni siquiera se menciona.
En concreto, los proyectos ejecutados con el modelo en espiral empiezan siendo pequeños, investigando los mayores riesgos que se pueden tolerar, para pasar a agrandarse poco a poco, en base a elementos clave sobre los que se construyen las siguientes fases de la espiral.
Las fases por las que pasa cada ciclo de la espiral son:
Planificación. Se determinan los objetivos y el alcance del ciclo que comienza, tras un necesario ejercicio de investigación. Con cada iteración, se irá incrementando el tamaño de software entregado y la funcionalidad cubierta.
Análisis de Riesgo. Se evalúa todo aquello que pueda afectar al proyecto según el estado en que se encuentre y su grado de avance. Para ello, se diseñarán los prototipos que deberán ser validados en el ciclo.
Implementación. Se desarrolla y valida el software según el alcance acordado, el cual está íntimamente relacionado y condicionado con el análisis de riesgos anterior.
Evaluación. Antes de proceder a realizar otra vuelta en la espiral, se debe prestar atención a lo que sucedió en la vuelta anterior. Se debe analizar en detalle si los riesgos detectados anteriormente ya tuvieron solución. Básicamente, esta fase servirá para determinar el avance del proyecto y dar pistas de hacia dónde debe enfocarse la próxima iteración.
Ventajas
Los factores de riesgo son reducidos.
El desarrollo es iterativo y se pueden incorporar funcionalidades progresivamente.
En cada ciclo se pasa por dichas fases bien definidas, como en el modelo de cascada, pero con capacidad de evolucionar su complejidad con cada ciclo. Por tanto, se trata de un modelo evolutivo que, conforme avancen los ciclos, aumentará el tiempo de ejecución, así como el volumen de código fuente desarrollado y la complejidad de la gestión de riesgos y de la planificación.
Inconvenientes
La duración de la ejecución no es concreta.
Fallos en el análisis de riesgos podría influir negativamente a todo el proyecto.