El Proceso del Software

Modelos de proceso: Incremental vs. Espiral

En esta sesión exploraremos juntos dos modelos de desarrollo evolutivos clave en la Ingeniería del Software.

Comenzar Análisis

Antes de comenzar: Modelo en Cascada

Antes de ver los modelos evolutivos, recordemos el paradigma más antiguo: el "ciclo de vida clásico". Un modelo lineal donde cada fase debe completarse antes de pasar a la siguiente.

Comunicación

Planificación

Modelado

Construcción

Despliegue

¿Por qué evolucionamos? Sus Inconvenientes

  • Los proyectos reales rara vez siguen un flujo tan secuencial.
  • Es difícil para el cliente definir "todos" los requisitos al principio.
  • El cliente espera mucho tiempo sin ver un producto funcional.

Modelo Incremental

"Entrega Progresiva de Valor"

Una de las respuestas al modelo en cascada. Aplica "divide y vencerás" a la funcionalidad, entregando el sistema en partes funcionales llamadas incrementos.

Incremento "n"

Comunicación

Planeación

Modelado

Construcción

Despliegue

Modelo en Espiral

"La Gestión de Riesgos como Eje Central"

Otro enfoque evolutivo clave. Combina la iteración con el control, pero su característica distintiva es el **análisis explícito de riesgos** en cada ciclo.

Desplacémonos juntos para ver cómo progresa un ciclo.

1. Planificación

Recogida inicial de requisitos y planificación del proyecto.

2. Análisis de Riesgos

Análisis de riesgos basado en requisitos y reacción del usuario. Se decide si avanzar.

3. Desarrollo (Ingeniería)

Se desarrolla el siguiente incremento o prototipo del software.

4. Evaluación del Usuario

El cliente evalúa los incrementos desarrollados, y sus comentarios inician el siguiente ciclo.

Comparativa Interactiva

Seleccionemos un modelo para analizar sus ventajas e inconvenientes clave.

Eje: Funcionalidad

  • Ventaja: El cliente recibe funcionalidad primordial en etapas tempranas.
  • Ventaja: Los primeros incrementos sirven como prototipos para obtener retroalimentación.
  • Ventaja: Se reduce el riesgo de fallo total del proyecto.
  • Ventaja: Los incrementos prioritarios son los más probados.

Desafíos

  • Inconveniente: Dificultad para acomodar ciertos requisitos en un incremento específico.
  • Inconveniente: Dificultad para determinar la parte común de la arquitectura para todos los incrementos.

Eje: Riesgo

  • Ventaja: Ayuda a identificar malentendidos entre diseñador y cliente.
  • Ventaja: Identifica requisitos pasados por alto y dificultades de interfaz.
  • Ventaja: Comprueba la viabilidad y utilidad del sistema.
  • Característica: Gestión explícita del riesgo en cada ciclo.

Desafíos

  • Inconveniente: El cliente puede percibir el prototipo como el sistema final.
  • Inconveniente: Puede desviar la atención de la funcionalidad hacia la interfaz.
  • Inconveniente: Requiere una implicación importante y continua del usuario.

Recomendador Interactivo

Respondamos juntos a estas preguntas para ver qué modelo se ajustaría mejor a un hipotético proyecto.

¿Nuestro proyecto es para un cliente real o es más bien de exploración/investigación?

¿Los requisitos del cliente son claros y están bien definidos desde el principio?

¿Es un proyecto grande, de alto riesgo (técnico o financiero) o usa tecnología no probada?

Recomendación: Modelo Incremental

Nuestro proyecto se centraría en la funcionalidad. Con requisitos claros, podemos dividirlos en incrementos y entregar valor funcional rápidamente.

Caso de Uso Práctico:

Un Procesador de Texto.
Incremento 1: Crear, guardar y escribir texto plano.
Incremento 2: Añadir formato.
Incremento 3: Añadir corrector ortográfico.

Recomendación: Modelo en Espiral

Nuestro proyecto se centraría en la incertidumbre. Con requisitos poco claros y alto riesgo, necesitaríamos un modelo que analice y mitigue estos riesgos en cada ciclo.

Caso de Uso Práctico:

Un Sistema de Control de Tráfico Aéreo.
Riesgo: ¡Vidas humanas! Los fallos no son aceptables.
Ciclo 1: Prototipo de simulación para analizar riesgos de colisión.
Ciclo 2: Desarrollo del módulo de radar.

Recomendación: Prototipado

Nuestro objetivo principal sería **explorar**. No construiríamos un producto final de inmediato, sino que validaríamos una idea o interfaz antes de elegir un modelo más completo.

Caso de Uso Práctico:

El diseño de una nueva App Móvil.
Creamos un prototipo interactivo, recogemos feedback, lo mejoramos y repetimos el ciclo hasta validar el concepto.

Conclusión: ¿Qué método es el más adecuado?

Como hemos visto, la elección final no es trivial. Ningún método funciona universalmente. La decisión depende fundamentalmente de estos tres factores clave:

El tipo de proyecto

¿Es un sistema crítico con requisitos estables o una aplicación web donde los cambios son constantes?

La cultura de la empresa

¿La organización y el cliente prefieren un plan cerrado o una colaboración continua (ágil)?

El conocimiento del equipo

¿El equipo tiene experiencia y conocimiento de las herramientas asociadas a la metodología elegida?

Un Ecosistema de Modelos

Los modelos Incremental y Espiral son cruciales, pero forman parte de un panorama más amplio que hemos explorado en Fundamentos de Ingeniería del Software, incluyendo:

  • Prototipado
  • Desarrollo Rápido de Aplicaciones (DRA)
  • Desarrollo Basado en Componentes
  • El Proceso Unificado (UP)
  • Estrategias Ágiles (Scrum, XP, etc.)