Desarrollo de software. Ciclo de vida en espiral

También recibe el nombre de ciclo de vida de Boehm (Barry Boehm describió este modelo en 1988). Este modelo es de carácter evolutivo, de manera que la versión final del producto se obtiene mediante la realización de diversas iteraciones y tiene como principal característica la realización de un análisis de riesgos en cada iteración (estudio de alternativas de solución y selección de aquella que más convenga al proyecto).

Cada iteración se divide en cuatro fases:

– Definición de objetivos: Especificación del alcance del producto que se obtendrá al final de la iteración (catálogo de objetivos y requisitos), se identificarán riesgos y se determinarán posibles alternativas de solución.

– Análisis del riesgo.

– Desarrollar y probar: Comprende las actividades de análisis, diseño, construcción e implantación de la versión del producto.

– Planificación: Se realiza una estudio de la situación actual del sistema y del proyecto, se determina la necesidad o no de una nueva evolución y en el caso de que sea necesaria se realiza la planificación de la misma.

La principal crítica que tiene este modelo es que es tan ideal que es complicado de llevar a cabo. Se considera costoso, ya que su enfoque se basa en construir el sistema poco a poco y además en cada evolución no solo se tienen en cuenta evoluciones propias de un incremento del producto sino evoluciones y correcciones resultado del trabajo con los usuarios con la sección del producto que está en producción.

Por otro lado, en muchos casos se considera complicado la realización del análisis de riesgos, ya que en función del sistema de información resulta muy complejo definir alternativas de solución y determinar con claridad cuál de ellas es la más apropiada (además, introduce un overhead en el proyecto, que tiene consecuencias tanto en el esfuerzo necesario para realizar el proyecto y el tiempo necesario para liberar cada versión).

Todas estas iteraciones y el conjunto de actividades que hay que realizar en las mismas, hace que el tiempo necesario para obtener una versión «final» del producto sea superior que al de otros ciclos de vida (el sistema se obtiene poco a poco y con mucho cuidado).

Es complicado realizar una planificación global del proyecto, ya que eso dependerá de cómo evolucione el proyecto, producto y usuarios en las distintas iteraciones. Se puede establecer una planificación inicial, con una serie de evoluciones, pero existe una cierta incertidumbre en cuanto hasta dónde se podrá llegar con el presupuesto inicial.

Su principal ventaja es que reduce el tiempo en que el usuario puede tener una versión usable del producto (aunque con funcionalidades limitadas) y se acerca más a la realidad de lo que es un proyecto de desarrollo de software en la realidad y su mantenimiento.