La entrega incremental es un enfoque intermedio que combina las ventajas de los modelos en cascada y el evolutivo. En un procesos de desarrollo incremental, los clientes identifican, a grandes rasgos, los servicios que proporcionará el sistema. Entonces, se definen varios incrementos en donde cada uno proporciona un subconjunto de la funcionalidad del sistema.
"La asignación de los servicios a los incrementos depende de la prioridad del servicio con los servicios de prioridad más alta entregados primero"
Una vez que un incremento se completa y entrega, así los clientes pueden ponerlo en servicio. Esto significa que tienen un entrega temprana de parte de la funcionalidad del sistema. Pueden experimentar con el sistema, lo cual les ayuda a clarificar sus requerimientos para los incrementos posteriores y para las últimas versiones del incremento actual.
Ventajas :
- Los clientes no tienen que esperar hasta que el sistema completo se entregue para sacar provecho de el.
- Los clientes pueden utilizar los incrementos iniciales como prototipos y obtener experiencia sobre los requerimientos de los incrementos posteriores del sistema.
- Existe un bajo riesgo de un fallo total del proyecto.
- Puesto que los servicios de más alta prioridad se entregan primero, y los incrementos posteriores se integran en ellos, es inevitable que los servicios más importantes del sistema sean a los que se les hagan más pruebas.
Problemas :
- Los incrementos deben ser relativamente pequeños (no más de 20000 de líneas de código) y cada uno debe entregar alguna funcionalidad del sistema.
- Puede ser dificil adaptar los requerimientos del cliente a incrementos de tamaño apropiado.
- Puede ser difícil identificar los recursos comunes que requieren todos los incrementos.
Variante :
- Se ah desarrollado una variante de este enfoque incremental denominada programación extrema.
- Esta se basa en el desarrollo y la entrega de incrementos de funcionalidad muy pequelos,
- En la participación del cliente en el proceso,
- En la mejora constante del código y en la programación por parejas.
- Se estudia la programación por parejas y otros llamados métodos ágiles.