CATEGORIAS
Modelo en Espiral
El desarrollo o modelo en espiral es un enfoque de desarrollo de software que puede ser considerado como una respuesta a los inconvenientes del desarrollo en cascada. El modelo en espiral describe el ciclo de vida de un software por medio de espirales, que se repiten hasta que se puede entregar el producto terminado. El desarrollo en espiral también se conoce como desarrollo o modelo incremental. El producto se trabaja continuamente y las mejoras a menudo tienen lugar en pasos muy pequeños.
Una característica clave del desarrollo en espiral es la minimización de los riesgos en el desarrollo de software, lo que podría resultar en un aumento de los costes totales, más esfuerzo y un lanzamiento retardado. Estos riesgos son contrarrestados por el enfoque incremental, haciendo primero prototipos, que luego pasan al menos una vez, por las fases de desarrollo de software. El desarrollo en espiral es genérico y puede combinarse con otros métodos de desarrollo clásicos y ágiles, por lo que también se denomina modelo o desarrollo de segundo orden.
Información general
El desarrollo en espiral fue propuesto por Barry W. Boehm en su ensayo “A Spiral Model of Software Development and Enhancement.” En ese momento, el modelo de desarrollo en cascada prevalecía, por lo que los inconvenientes asociados fueron discutidos con frecuencia. A diferencia de otros modelos como “code and fix” o el “modelo cascada”, el desarrollo en espiral está basado en el riesgo. La identificación y resolución de riesgos juega un papel importante en las diferentes espirales del proyecto una vez definidos los objetivos y condiciones. El enfoque se centra en los posibles factores que pueden causar incertidumbres para el software o para todo el proyecto. Según el supuesto, si los riesgos pueden ser controlados de una manera rentable, no hay nada que impida la finalización exitosa del proyecto. Los enfoques para minimizar estos riesgos son, por ejemplo, prototipos, simulaciones, pruebas de referencia o entrevistas con los usuarios. Para ciertos tipos de riesgos, todo el procedimiento puede incluso ser revisado y estructurado de manera diferente. La intervención de la gerencia o management es posible en cada fase del proyecto y pueden adaptarse otros enfoques de desarrollo.
Cómo funciona
El modelo de desarrollo en espiral se caracteriza por los siguientes ciclos (también cuadrantes):[1]
- Objetivo y determinación alternativa: Los objetivos se determinan conjuntamente con el cliente. Al mismo tiempo, se discuten posibles alternativas y se especifican las condiciones marco (por ejemplo, sistemas operativos, entornos y lenguajes de programación).
- Análisis y evaluación de riesgos: Se identifican y evalúan los riesgos potenciales. También se evalúan las alternativas existentes. Los riesgos son registrados, evaluados y luego reducidos utilizando prototipos, simulaciones y softwares de análisis. En este ciclo, existen varios prototipos como plantillas de diseño o componentes funcionales
- Desarrollo y prueba: Los prototipos se amplían y se añaden funcionalidades. El código real es escrito, probado y migrado a un entorno de prueba varias veces hasta que el software pueda ser implementado en un entorno productivo.
- Planificación del siguiente ciclo: El siguiente ciclo se planifica al final de cada etapa. Si se producen errores, se buscan soluciones, y si una alternativa es una mejor solución, se prefiere en el siguiente ciclo.
La fuerza impulsora más importante del desarrollo en espiral es el análisis y la evaluación de riesgos. Cualquier riesgo que amenace el proyecto debe ser identificado desde el principio. El progreso del proyecto depende decisivamente de cómo se puedan eliminar los riesgos. El proyecto se considera exitoso sólo cuando no hay riesgos. El objetivo del ciclo es producir un producto en continua mejora. El software o la aplicación se perfecciona constantemente. El modelo en espiral es incremental, pero no necesariamente repetitivo. Las repeticiones ocurren sólo cuando los riesgos, errores o conflictos amenazan el proyecto. Entonces el producto tiene que pasar por un ciclo de nuevo, llamado una iteración o repetición.
Beneficios / Desventajas
El modelo de desarrollo en espiral se utiliza a menudo para proyectos más grandes que están sujetos a riesgos. Dado que estos riesgos tienen un impacto monetario directo, el control de los presupuestos de los clientes y de las empresas promotoras es fundamental. El modelo en espiral se utiliza especialmente en los nuevos entornos técnicos, ya que éstos suponen un riesgo.[2]
Los conflictos entre los requisitos de un software y su diseño se evitan eficazmente mediante el enfoque cíclico, ya que los requisitos pueden comprobarse constantemente y, si es necesario, modificarse.[3]
Se puede obtener feedback de los usuarios, desarrolladores y clientes en las primeras fases del proyecto. Sin embargo, esta estructura también requiere una gestión que tenga en cuenta los ciclos del producto y pueda responder rápidamente a los riesgos. El control de tales proyectos es, por lo tanto, relativamente complejo y también requiere una buena documentación para que se registren todos los cambios.
Aunque el software se prueba bajo varios aspectos durante el ciclo de desarrollo y prueba (unidad, prueba de aceptación e integración), a menudo sucede que los prototipos se transfieren al sistema de producción. Por lo tanto, existe el riesgo de que se introduzcan otros errores e incoherencias conceptuales en el producto final posterior.
En los lugares donde se toman decisiones sobre los ciclos siguientes, existe el riesgo de que se formen bucles y el proyecto tarde más tiempo si se toman decisiones equivocadas. Por esta razón, las alternativas y su evaluación son importantes.
Relevancia para la programación
A diferencia de un modelo secuencial (por ejemplo, el modelo en cascada) dispuesto en fases sucesivas, el modelo en espiral esboza el ciclo de vida de un software por medio de espirales que hay que recorrer. Por lo tanto, este enfoque se parece más a la creación de prototipos que los enfoques clásicos. El modelo en espiral se supone que evita las desventajas de otros modelos y enfatiza las ventajas. Al centrarse en la minimización del riesgo, este modelo tiene un componente financiero que puede ser relevante para los responsables de la toma de decisiones. A través de discusiones con los clientes, análisis y estudios de viabilidad, se pueden implementar proyectos a gran escala y monitorizar su impacto económico. Hasta qué punto los métodos ágiles como scrum, programación extrema o DevOps son mejores opciones dependen de muchos factores diferentes como el alcance del proyecto, el presupuesto o el nivel requerido de soporte y mantenimiento. Cuanto más flexibilidad se requiera, más métodos ágiles se considerarán.
Referencias