Desarrollo iterativo e incremental


El desarrollo iterativo e incremental es cualquier combinación de diseño iterativo o método iterativo y modelo de construcción incremental para el desarrollo .

El uso del término comenzó en el desarrollo de software , con una combinación de larga data de los dos términos iterativo e incremental [1] que ha sido ampliamente sugerida para grandes esfuerzos de desarrollo. Por ejemplo, el DOD-STD-2167 de 1985 [2] menciona (en la sección 4.1.2): "Durante el desarrollo de software, más de una iteración del ciclo de desarrollo de software puede estar en progreso al mismo tiempo". y "Este proceso puede describirse como un enfoque de 'adquisición evolutiva' o 'construcción incremental'". En software, la relación entre iteraciones e incrementos está determinada por el proceso general de desarrollo de software .

La idea básica detrás de este método es desarrollar un sistema a través de ciclos repetidos (iterativos) y en porciones más pequeñas a la vez (incrementales), lo que permite a los desarrolladores de software aprovechar lo aprendido durante el desarrollo de partes o versiones anteriores del sistema. El aprendizaje proviene tanto del desarrollo como del uso del sistema, donde los posibles pasos clave en el proceso comienzan con una implementación simple de un subconjunto de los requisitos del software y mejoran iterativamente las versiones en evolución hasta que se implementa el sistema completo. En cada iteración , se realizan modificaciones de diseño y se agregan nuevas capacidades funcionales. [3]

El procedimiento en sí consta del paso de inicialización, el paso de iteración y la Lista de control del proyecto. El paso de inicialización crea una versión base del sistema. El objetivo de esta implementación inicial es crear un producto al que el usuario pueda reaccionar. Debe ofrecer una muestra de los aspectos clave del problema y proporcionar una solución que sea lo suficientemente simple para comprender e implementar con facilidad. Para guiar el proceso de iteración, se crea una lista de control del proyecto que contiene un registro de todas las tareas que deben realizarse. Incluye elementos tales como nuevas funciones a implementar y áreas de rediseño de la solución existente. La lista de control se revisa constantemente como resultado de la fase de análisis.

La iteración implica el rediseño y la implementación de la iteración debe ser simple, directa y modular, apoyando el rediseño en esa etapa o como una tarea agregada a la lista de control del proyecto. [ aclaración necesaria ] El nivel de detalle del diseño no está dictado por el enfoque iterativo. En un proyecto iterativo ligero, el código puede representar la principal fuente de documentación del sistema; sin embargo, en un proyecto iterativo crítico se puede utilizar un Documento de diseño de software formal. El análisis de una iteración se basa en los comentarios de los usuarios y las funciones de análisis del programa disponibles. Implica el análisis de la estructura, modularidad, usabilidad, fiabilidad, eficiencia y consecución de objetivos. La lista de control del proyecto se modifica a la luz de los resultados del análisis.

El desarrollo incremental divide la funcionalidad del sistema en incrementos (porciones). En cada incremento, se entrega una parte de la funcionalidad a través del trabajo interdisciplinario , desde los requisitos hasta la implementación . El Proceso Unificado agrupa incrementos/iteraciones en fases: inicio, elaboración, construcción y transición.


Modelo de desarrollo iterativo
Una versión simplificada de un ciclo de iteración típico en la gestión ágil de proyectos
Desarrollo iterativo.