Tabla de contenido
Ver contenido
Introducción
En el desarrollo de un proyecto, existe mucha diversidad en cuanto a la adopción de modelos según las necesidades de cada proyecto, los equipos definirán dichas necesidades específicas y optarán por el enfoque que mejor se acople.
Clasificación de Modelos de Desarrollo
Una forma común de clasificar los modelos de desarrollo es predictivos frente a adaptativos.
Modelos Predictivos
Un modelo predictivo se centra en tener una detallada lista de los requisitos del software y una buena comprensión de los mismos desde el principio, este modelo es beneficioso cuando:
- El cliente tiene claro lo que quiere y que lo solicitado es adecuado.
- Los requisitos no varían y están bien definidos desde la primera etapa del proyecto.
Este modelo se aplica para el desarrollo de un producto completo con una base de comprensión clara de requisitos conocidos y tiene como característica la poca flexibilidad a cambios durante la etapa de implementación.
Modelos Adaptativos
Los modelos adaptativos son flexibles a cambios, son beneficiosos siempre que:
- El cliente tenga una idea principal pero sin muchos detalles de lo que quiere al principio.
- El desarrollo necesite de versiones mínimas del producto para comenzar a probar.
- El equipo necesite construir y retroalimentarse para evolucionar el producto.
Este modelo permite que la entrega final sea diferente a lo que se esperaba al inicio del proyecto, pero dado que tiene retroalimentación contínua, se espera entrega algo más fiel a las necesidades del usuario.
Modelos Predictivos vs. Modelos Adaptativos
Aspecto | Modelo Predictivo | Modelo Adaptativo |
---|---|---|
Definición de requisitos | Requisitos claros y bien definidos desde el inicio. | Requisitos iniciales generales; se detallan y ajustan durante el desarrollo. |
Flexibilidad al cambio | Baja flexibilidad; los cambios son costosos y difíciles de implementar. | Alta flexibilidad; el modelo permite ajustes continuos según retroalimentación. |
Participación del cliente | Limitada después de definir los requisitos. | Activa durante todo el proceso, con entregas frecuentes. |
Entregas parciales | No suelen entregarse versiones funcionales hasta finalizar el desarrollo. | Se entregan versiones mínimas funcionales para obtener retroalimentación temprana. |
Visión del producto final | Clara desde el principio. | Evoluciona con cada iteración; puede diferir del concepto inicial. |
Cuándo usarlo | Cuando los requisitos son estables y bien comprendidos. | Cuando se espera incertidumbre o cambios durante el desarrollo. |
La aplicación de estos modelos en un proyecto de software no responde a una clasificación predictiva completa ni adapativa completa, dependerá del grado de flexibilidad buscada por el equipo de desarrollo para cada tipo de proyecto.
Otro tipo de clasificación es la diferencia entre modelos incrementales e iterativos.
Modelos Incrementales
Puede solapar la construcción de un incremento con otro Los modelos incrementales pueden dar lugar a retrabajos, se centran en la entrega de nuevas funcionalidades Si el despliegue de un incremento a los usuarios reales puede beneficiar a la organización, el uso de un modelo incremental es un candidato potencial a considerar.
Modelos Iterativos
Se centran en la mejora contínua a través de retroalimentación
Modelos Incremental vs. Modelos Iterativo
Aspecto | Modelo Incremental | Modelo Iterativo |
---|---|---|
Visión del producto | Se tiene una visión clara del producto final. | No se tiene una idea completamente clara del producto final. |
Enfoque de construcción | El producto se construye por partes o incrementos. | Se comienza con una versión simple o provisional que se mejora con cada iteración. |
Uso de resultados intermedios | Puede ser útil si se pueden aprovechar resultados parciales. | Las versiones anteriores pueden ser reemplazadas completamente. |
Cambio basado en retroalimentación | Posible: si se adapta con base en comentarios, se vuelve adaptativo; si no, es más predictivo. | La retroalimentación impulsa los cambios; cada versión mejora con base en la anterior. |
Diferencia clave | Se construye por partes, sin reemplazar lo anterior. | Se mejora o reemplaza lo anterior según lo aprendido en la iteración. |