El desarrollo incremental es un modelo de proceso estratégico dentro del desarrollo ágil de software. En primer lugar, se planifica el sistema general, que sigue una estructura modular. Luego, el proyecto se implementa en pasos individuales.
La idea básica del desarrollo incremental se basa en una planificación general para el proyecto general y, por lo tanto, en el supuesto de que los requisitos de los usuarios ya se pueden registrar al comienzo del proceso de desarrollo. Luego, el sistema se implementará en sucesivas etapas de expansión.
Se entrega al usuario una primera versión del sistema lo antes posible, en la que ya están incluidas las funcionalidades básicas del programa. Estas funcionalidades solo se amplían mediante incrementos entregados posteriormente.
Entrega de módulos aplicables
El desarrollo incremental significa que el software se crea en partes individuales y estos incrementos se entregan listos para su uso. Por tanto, un sistema que se crea en un proceso de desarrollo incremental sigue un enfoque modular.
En el primer paso, se debe diseñar la arquitectura del sistema, incluidas todas las interfaces relevantes para los módulos individuales. Luego se divide en sus partes individuales para definir las etapas de expansión individuales. Cada incremento representa una funcionalidad específica que es autónoma, tiene su propio código y se puede probar antes de la entrega.
Por tanto, un desarrollo incremental siempre contiene componentes iterativos. Sin embargo, a diferencia de un modelo de proceso iterativo clásico, un enfoque incremental supone que cada componente entregado al usuario representa un paso del proyecto completado. No se requieren revisiones posteriores de los incrementos individuales, al menos en teoría. El tamaño de los incrementos individuales no importa aquí.
Diferencias entre estrategias incrementales e iterativas
Las estrategias incrementales se basan en el hecho de que la arquitectura y, por tanto, las estructuras del sistema global forman el punto de partida del proceso de desarrollo. Su objetivo es entregar módulos terminados que sus usuarios ya puedan usar en contextos de trabajo específicos. Alternativamente, el desarrollo de prototipos temporales también es posible en este contexto.
En cualquier caso, sin embargo, los incrementos individuales son productos parciales utilizables. Un desarrollo incremental permite, por ejemplo, que los requisitos del cliente nuevos o modificados se separen del proceso de desarrollo en curso y solo se implementen cuando se crea un módulo posterior. El desarrollo de los módulos individuales se puede asegurar mediante contratos individuales.
En el caso de una estrategia puramente iterativa, por otro lado, el producto general o las funcionalidades individuales se mejoran continuamente. Las repeticiones (iteraciones) forman la base para esto. Los cambios en las pautas y especificaciones a menudo hacen que sea necesario volver a pasar por todo el proceso de desarrollo para programar una sola funcionalidad. A menudo, no existe una descripción general del sistema de aplicación que se va a desarrollar, ya que la arquitectura del sistema solo surge en el proceso de desarrollo en sí.
Procesos de desarrollo incremental personalizados
En teoría, el desarrollo incremental aparece como un proceso lineal y modularmente estructurado de desarrollo de software, que a menudo se describe con el llamado modelo en cascada. Los pasos individuales del proyecto, para el proyecto general, pero también para la creación de incrementos individuales, se suceden en cascada y sin repeticiones. En detalle, estos son:
- Requisitos del proyecto, especificaciones
- Desarrollo de la arquitectura del sistema
- Desarrollo de los incrementos funcionales
- implementación
- prueba
- Entrega del producto terminado.
Sin embargo, en la práctica del desarrollo de software ágil, este enfoque puramente lineal solo se puede implementar en raras ocasiones. Los denominados procesos de desarrollo incremental adaptado son la norma. Un ejemplo de esto es el modelo STEPS o el modelo de proyecto cíclico, que sigue un enfoque incremental, pero describe las dependencias orientadas a los resultados entre los pasos individuales del proyecto.
En este caso, el sistema general y todos los incrementos se desarrollan de manera evolutiva, de modo que las rutinas de revisión (iterativas) también son parte de la implementación del proyecto. En contraste con un proyecto puramente iterativo, el enfoque aquí también está en el diseño de la arquitectura del sistema global.
Leer: ¿Qué es un registro de cambios?
Los desarrolladores de software y los usuarios finales trabajan en estrecha colaboración en el área del uso práctico del sistema y con respecto a cualquier establecimiento de revisión necesario. Como resultado, ambas partes están involucradas en la definición del proceso dentro del proyecto general.
En el caso de un desarrollo incremental adaptado, el producto y sus componentes individuales se someten a un proceso de evaluación continuo. Las experiencias de la optimización de un incremento se utilizan para el desarrollo del siguiente módulo mediante un procedimiento adaptado correspondientemente.