MODELO INCREMENTAL Aplica el enfoque del modelo en cascada, pero aplicado en forma iterativa. Cada secuencia lineal produce incrementos que agregan funcionalidades adicionales o mejoras al sistema. Cada etapa debe cumplir con sus requisitos. Incrementos parciales de la herramienta completa las diferentes versiones del proyecto. El modelo de proceso incremental, al igual que la construcción de prototipos y otros enfoques evolutivos, es iterativo por naturaleza.
Ventajas:
Los clientes no tienen que esperar hasta que el sistema se entregue completamente para comenzar a hacer uso de él. Los clientes pueden usar los incrementos iniciales como prototipo para precisar los requisitos posteriores del sistema. Minimización del riesgo de falla en el proyecto porque los errores se van corrigiendo progresivamente.
Desventaja: Adaptación de los requisitos del cliente para lograr incrementos pequeños (no más de 20.000 líneas de código) que añadan funcionalidad al sistema. Nota: Una evolución de este enfoque se conoce como Programación Extrema (XP-Extreme Programming).
MODELO EVOLUTIVO Los modelos evolutivos se caracterizan porque permiten a los ingenieros del software, desarrollar de manera iterativa, nuevas versiones del software cada vez más completas. Las actividades de especificación, desarrollo y validación se entrelazan en vez de separarse, esto permite una rápida retroalimentación entre ellas. Existen dos tipos de desarrollo evolutivos:
Desarrollo exploratorio Prototipos desechables
Desarrollo exploratorio (prototipado exploratorio o evolutivo) El objetivo es trabajar con clientes hasta evolucionar a un sistema final, a partir de una especificación inicial El sistema empieza con las partes del sistema que se comprenden mejor. El sistema evoluciona agregando nuevos atributos propuestos por el cliente Prototipaje desechable Persiguen objetivos más bien de exploración, por lo que poseen un corto ciclo de vida. Permiten crear opciones individuales de requisitos, diseño e implementación repentinas, de modo de satisfacer un nuevo requerimiento para luego ser desechado. La razón de su empleo radica en aprender lecciones necesarias a un costo mínimo.
Desventajas
El proceso no es visible: Los administradores tienen que hacer entregas regulares para medir el progreso. Si los sistemas se desarrollan rápidamente, no es rentable producir documentos que reflejen cada versión del sistema. A menudo los sistemas tienen una estrategia definida: Los cambios continuos tienden a corromper la estructura del software. Incorporar cambios en él se convierte cada vez en una tarea difícil y costosa.
Ventajas
Se detectan malentendidos entre los desarrolladores y los usuarios. Se detectan servicios no detectados antes. Dificultades de uso o servicios confusos pueden ser identificados y refinados. Staff de desarrollo de software puede encontrar requisitos incompletos o inconsistentes con el desarrollo del prototipo. El prototipo sirve como una base de la especificación para la producción de un sistema de calidad.
Problemas
Poca visibilidad en el proceso Los sistemas están pobremente especificados Se requieren habilidades especiales.
Aplicabilidad
Para sistemas interactivos pequeños o medianos. Para partes de sistemas grandes (p.ej. la interfaz de usuario). Para sistemas de corta vida.