Si en un ciclo de vida en cascada las fases del ciclo de vida (requisitos, análisis, diseño, etc.) se realizan (en teoría) una única vez, y el inicio de una fase no comienza hasta que termina la fase que le precede, en un ciclo de vida iterativo e incremental se va liberando partes del producto (prototipos) periódicamente, en cada iteración, y cada nueva versión, normalmente, aumenta la funcionalidad y mejora en calidad respecto a la anterior.
El ciclo de vida iterativo e incremental es una de las buenas prácticas de ingeniería del software más antiguas, su primer uso en el software se data en los 50 (te dejo este post donde hablamos del tema).
Además, el ciclo de vida iterativo e incremental es una de las bases de un proyecto ágil, más concretamente, con iteraciones cortas en tiempo, de pocas semanas, normalmente un mes y raramente más de dos.
Normalmente se habla, se lee, etc., “el ciclo de vida iterativo e incremental” (o incluso por defecto sólo el “el ciclo de vida iterativo”). Pero ello no quiere decir que iterativo e incremental sea lo mismo. De hecho, el desarrollo iterativo no implica, ni presupone el uso del incremental, y viceversa.
El problema es que muchas veces se olvida “la parte iterativa”, del “ciclo de vida iterativo e incremental”. Pero veamos antes qué implica incremental y qué iterativo.
El ciclo de vida incremental
Desarrollar por partes el producto software, para después integrarlas a medida que se completan. Un ejemplo de un desarrollo puramente incremental puede ser la agregación de módulos en diferentes fases. El agregar cada vez más funcionalidad al sistema.
El ciclo de vida iterativo
En cada ciclo, iteración, se revisa y mejora el producto. Un ejemplo de desarrollo iterativo es aquel basado en refactorizaciones (te dejo el post de introducción a la refactorización), en el que cada ciclo mejora más la calidad del producto. Es importante señalar que este ciclo no implica añadir funcionalidades en el producto, pero si revisión y mejora.
No olvides “la parte iterativa”, del “ciclo de vida iterativo e incremental”
De la unión del ciclo de vida iterativo y el incremental al final de cada iteración se consigue una versión más estable del software, de más calidad, y añadiendo además nuevas funcionalidades respecto a versiones anteriores.
Pero en la práctica, muchas veces nos encontramos con que los equipos olvidan la parte iterativa, olvidan que cada prototipo debe mejorar en calidad al anterior, y se centran solo en añadir funcionalidad.
El problema de esto es que pasadas unas cuantas iteraciones, el producto se hace inmantenible, por su baja calidad, y por ello es muy difícil añadir nueva funcionalidad, alargándose las iteraciones, los ciclos, y muriendo la esencia de todo esto.
- Quieres que tus equipos cambien, pero pasan de ti + Nuevo video OKRs con IA + Cumplo 24 años de Doctor en Informática #LaNewsletterdeJavierGarzas - 26 septiembre, 2024
- Amazon: la IA nos ahorra 4.500 años de programación + 3 familias de ESTIMACIÓN + Video creando Videojuegos con Hija e IA #LaNewsletterdeJavierGarzas - 19 septiembre, 2024
- Debes crear apps sin saber programar (no hay que saber nada) + Crea Test con IA + Scrum es el nuevo Excel - 12 septiembre, 2024
Pingback: Bitacoras.com
Excelente post, y es lo que constantemente ocurre en las empresas de este país.
Creo que si hablas algo o lo relacionas con la odiosa «deuda técnica», mejor que mejor.
Por otra parte, parece normal en un país de gente con mente «cortoplazista».
Muy cierto, los proyectos Iterativos e Incrementales terminan siendo Incrementales, ya sea porque hay una premura de terminar las funcionalidades definidas para el producto y por tanto se olvidan de la revisión y mejora de lo ya terminado. Creo que esto se da por tratar de terminar el proyecto lo antes posible por el cronograma del proyecto, si el usuario final da el OK de una funcionalidad no se vuelve a revisar ni se mejora aunque se haya detectado una posible mejora, sólo se trata de terminar el proyecto y esto lo hacen terminando toda la funcionalidad que definieron en el alcance del proyecto.
Esto es precisamente lo que agiliza el desarrollo de sofware para el usuario esto es muy valioso.
El iterativo e incremental se complementan… Si falta alguno de los dos fracasa el proyecto de software aun queriendo ser ágiles…
gracias por el post realmente explica de manera mas explicita lo que es un ciclo de vida de software iterativo e incremental en el que no solo hay que tener en cuenta la parte incremental sino saber manejar las mejoras y retrabajos de cada nueva version ademas de la cantidade de tiempo en la que se lanzan las diferentes versiones.
Excelente explicación del tema, siempre se me confundían ambos conceptos, y ahora tengo claridad de su importancia en los proyectos ágiles.
Gracias.
Me parece una gran definición de lo que son estos dos ciclos de vida que no son iguales pero se me complementan, uno necesita del otro, la única duda que me queda es la parte donde se afirma que el ciclo de vida iterativo no implica implementar nuevas funcionalidades al software, esto quiere decir que al ser iterativo no puede correguir e instaurar mejoras en el programa partiendo de colocar o desarrollar nuevas funciones en el software?. Espero alguien pueda sacarme de esa duda. Gracias!
Un post breve, claro y conciso. El ciclo de vida iterativo e incremental, conceptos fundamentales a conocer en la aplicación de Metodologías Ágiles.
Gracias por las aclaraciones, pero al igual que el comentario anterior me queda la duda si el ciclo iterativo no añade funcionalidad como concluye el producto completo.
me podrían dar un ejemplo de como se podría ocupar esto de el ciclo de vida iterario en un negocio u algo por el estilo