Anteriormente definimos de manera general qué es el ciclo de vida del software, cuáles son sus fases y por qué es tan importante conocerlas para llevar a cabo un proyecto. Ahora es el turno de conocer a los modelos de ciclo de vida del software, esos que definen cómo estas fases pueden formar parte de un flujo secuencial, o bien, convertirse en un ciclo adaptable a los cambios que puedan surgir durante el periodo de desarrollo.
En este artículo hablaremos de dos grandes modelos de ciclo de vida del software muy conocidos y ampliamente utilizados por la comunidad de desarrolladores: el modelo en cascada (o secuencial) y el modelo iterativo. Al finalizar la lectura tendrás una perspectiva más enriquecida sobre las ventajas y desventajas de implementar un modelo u otro en tus proyectos personales o laborales.
Es el modelo más tradicional adoptado por los equipos de desarrollo. Su nombre se debe a que el flujo de las fases del ciclo de vida se visualiza como si de una cascada se tratase: primero se reúnen todos los requisitos del cliente, luego se procede a hacer el diseño del proyecto, se programa el software, se depura y posteriormente se entrega con el mantenimiento y soporte acordado en los términos iniciales. Todas las fases ocurren en ese orden estricto una sola vez.
Su flujo está regido por lo siguiente:
Se debe realizar una planificación completa y rígida del proyecto durante las fases iniciales.
Cada fase del ciclo se llevará a cabo si y solo si la anterior culminó en su totalidad.
Antes de proceder a la siguiente etapa, se realiza una verificación para corregir errores.
No se puede regresar a la fase anterior.
Cada etapa debe estar fuertemente documentada y ser independiente.
Gracias a la completa planificación inicial, se reducen las probabilidades de que surjan problemas que implicarían un mayor coste resolverlos durante la etapa de desarrollo.
Permite minimizar la cantidad de consultas al cliente.
Es relativamente sencillo de gestionar en términos de tiempo y costos económicos.
Es un modelo ideal para proyectos en los que los requerimientos del cliente están bien estructurados y detallados.
Debido a sus características, se considera un modelo poco o nada flexible. No es apto para reaccionar de manera rápida a los cambios.
El cliente no puede visualizar la evolución de su producto de software hasta que no esté finalizado.
La falta de retroalimentación entre etapas impide detectar errores que tarde o temprano aparecerán en el final del ciclo.
Es un modelo derivado del flujo en cascada basado en iteraciones de varios ciclos de vida de corta duración.
En este modelo se llevan a cabo todas las fases descritas anteriormente, se entrega un resultado funcional para el cliente al final del proceso para que pueda probarlo y luego se reinicia el ciclo de desarrollo, con el objetivo de mejorar el producto final aplicando los nuevos requerimientos obtenidos.
Las características más destacables de este modelo son:
Su naturaleza incremental: debido a que se hace posible incluir funcionalidades nuevas en el software por cada iteración, decimos que se trata de un modelo evolutivo.
Su capacidad de entregar un producto que satisfaga al cliente por completo: se pueden realizar tantas iteraciones como sean necesarias hasta obtener un resultado que cumpla con las expectativas.
Su preferencia por la comunicación en lugar de la documentación.
Proporciona una mayor flexibilidad durante el proceso de desarrollo debido a su naturaleza adaptativa.
La respuesta a los cambios es muy rápida. Ya no hay que esperar a tener un producto completamente terminado para probarlo y validarlo.
Ideal para proyectos en los que el cliente tiene una idea muy general sobre lo que necesita pero no es capaz de precisar con detalles todos los requerimientos.
La falta de documentación en pro de la comunicación deviene en la poca reusabilidad de los elementos del proyecto y en la aparatosa integración de nuevos miembros al marco de trabajo.
Es difícil determinar la cantidad de tiempo necesario para el desarrollo del proyecto, así como los costes debido a la naturaleza variable del modelo.
La comunicación entre el equipo de trabajo y el cliente debe ser efectiva el cien por ciento de las veces.
En el próximo artículo profundizaremos en las metodologías ágiles, en cómo estas implementan el modelo iterativo en sus marcos de trabajo y cuáles son las más conocidas hoy en día.
© All Rights Reserved.