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.)