El ciclo de vida iterativo e incremental y el riesgo de olvidarse del iterativo y quedarse solo con el incremental

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.

jgarzas

Ph.D. en informática, Postdoctorado en la Carnegie Mellon (EE.UU) e Ingeniero en Informática.

Primera vez que me tocó hacer una gestión Ágil en una empresa... año 2001. Desde entonces he trabajado en, o para, más de 90. Y he formado a más de 2000 alumnos.

También soy profe de la Universidad Rey Juan Carlos.

11 comentarios en “El ciclo de vida iterativo e incremental y el riesgo de olvidarse del iterativo y quedarse solo con el incremental”

  1. Pingback: Bitacoras.com

  2. 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».

  3. 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.

  4. 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.

  5. Excelente explicación del tema, siempre se me confundían ambos conceptos, y ahora tengo claridad de su importancia en los proyectos ágiles.
    Gracias.

  6. 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!

  7. 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.

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *