Modelo Evolutivo (Prototipos y Espiral)

Definición

Es un enfoque de desarrollo de software evolutivo basado en la creación de prototipos y la mejora progresiva del sistema. Se centra en la adaptabilidad y la gestión de riesgos, permitiendo ajustar los requerimientos a medida que se avanza en el desarrollo. Dentro de este enfoque, el Modelo de Prototipos permite construir versiones preliminares del software para evaluar y refinar requisitos, mientras que el Modelo en Espiral, propuesto por Barry Boehm en 1986, introduce una estructura iterativa con un fuerte enfoque en la evaluación de riesgos (Zk Lit (Pfleeger, 2006) Software Engineering Theory and Practice; Pressman, 2013).


Fases Principales

Conforme a Pressman (2013 y Sommerville (2011), las principales fases con las siguientes:

Identificación de Requerimientos
Se determinan las necesidades iniciales del sistema basándose en la retroalimentación del usuario.

Diseño Inicial del Prototipo
Creación de un modelo preliminar que represente aspectos clave del sistema.

Evaluación del Prototipo
Se presenta el prototipo a los usuarios para obtener retroalimentación y refinar los requisitos.

Desarrollo Iterativo
Se ajusta y mejora el prototipo en ciclos sucesivos hasta alcanzar la versión final.

Pruebas y Validación
Evaluación del software desarrollado para garantizar su funcionalidad y calidad.

Implementación y Entrega
Se pone en producción el sistema final, asegurando que cumpla con los requisitos establecidos.

Mantenimiento y Evolución
Se realizan mejoras y correcciones en respuesta a cambios en el entorno y nuevas necesidades del usuario.

Iteración
Repetición del proceso para agregar nuevos incrementos hasta completar el sistema.

Mantenimiento


Ventajas

De acuerdo a Pfleeger (2006) y Sommerville (2011) se destacan las siguientes:


Desventajas

En cuanto a los inconvenientes, Pressman (2013 y Sommerville (2011), indican:


Aplicaciones

Para Pfleeger (2006) y Sommerville (2011), algunas aplicaciones de este modelo:


Conclusión

Es un enfoque efectivo cuando se requiere flexibilidad y entrega continua de valor al usuario. Su enfoque iterativo permite minimizar riesgos y adaptarse a cambios en los requisitos. Sin embargo, requiere una buena planificación y gestión para evitar problemas de integración y control de versiones. Es particularmente útil en proyectos de software moderno, como aplicaciones web y servicios en la nube, donde la evolución constante es un factor clave de éxito. Además, la fase de mantenimiento garantiza la continuidad y adaptabilidad del software a largo plazo.