Tema 1.3. Modelos de Proceso

¿Qué son los modelos de proceso software?


📖
Definiciones de alto nivel (abstractas) de las fases por las que transcurren los proyectos de desarrollo software.
  • Muestran las dependencias existentes entre las fases.
  • Pueden ser vistos como paradigmas.

Ciclo de Vida VS Modelo de Proceso


ℹ️
Los modelos de proceso software son conocidos como modelos de ciclo de vida.

Ciclo de Vida

🧬
Vida de un producto software: desde el comienzo de una idea, pasando por su desarrollo e implantación hasta que es retirado.

Modelo de Proceso Software

🚀
Intenta organizar el ciclo de vida del software:
  • Define actividades relacionadas con la producción de software.
  • Establece un orden entre las actividades.
  • Define relaciones entre las actividades.
Pueden ser extendidos o adaptados para especificar procesos más detallados.

Objetivo de un modelo de proceso software


🔓
Un modelo de proceso software tiene como objetivo:
  • Determinar el orden de las fases involucradas.
  • Establecer criterios para avanzar de fase.
  • Establecer criterios de finalización de la fase.
Responde a preguntas sobre el desarrollo como:
  • ¿Qué es lo siguiente que deberíamos hacer?
  • ¿Hasta cuándo debemos extender el desarrollo?

Extensión de actividades principales


🎯
Actividades
  • Especificacíon de requisitos → Definición de funcionalidades y restricciones
  • Diseño e implementación → Codificación de las funcionalidades y restricciones identificadas en el paso anterior
  • Validación del software → Comprobar con el cliente que las funcionalidades y las restricciones implementadas son las correctas
  • Integración e implantación del software
  • Mantenimiento del software
  • Evolución del software → Implementar las nuevas necesidades del cliente

Clasificación de los modelos


🌊
Modelo en Cascada
ℹ️
En este modelo, la especificación y el desarrollo están separados en fases distintas

Cascada

  • Cada fase comienza cuando acaba la anterior
  • No se puede volver a una fase anterior
notion image

Cascada con Retroalimentación

  • Se puede volver a cualquier fase desde la fase final
notion image

Cascada con Prototipado

  • En las primeras fases podemos usar un prototipo para ir validando con el cliente
  • El prototipado se puede utilizar como técnica en otros modelos de proceso
notion image

Fases del sistema de prototipos

notion image
🔖
Un prototipo es un modelo ejecutable de un sistema futuro que permite a los clientes, usuarios y desarrolladores adquirir experiencia con la arquitectura y la funcionalidad
 
Podemos distingir entre dos tipos:
  • Deshechables
  • Evolutivos
Prototipo Desechable
Prototipo Evolutivo
¿Qué desarrollar?
Las parte problemáticas
La base sólida, bien entendida y consensuada
Objetivo
Minimizar el tiempo de consenso con el cliente
Facil extensibilidad y modificación en consenso con el cliente
Propósito final
Desecharlo
Incluirlo en el producto final
📈
Desarrollo incremental o Evolutivo
ℹ️
En este modelo, la especificación y desarrollo están intercalados en el tiempo

Modelo Evolutivo

Este modelo está enfocado en los cambios constantes a sistemas nuevos o existentes
notion image

Modelo Incremental

Este modelo se basa en varias versiones del producto donde en cada un se añaden nuvas funciones que en la anterior. Lo que se busca es que cuando acaba una fase, esta empieza de nuevo para la versión siguiente. En este modelo sucede que en cada momento todos los equipos de trabajo están trabajando en una versión diferente
notion image
🏎️
Metodologías ágiles
Las metodologías ágiles pretenden dar una respuesta rápida a los cambios propuestos en los procesos de desarrollo del software. Esto surgen para paliar las debilidades de las metodologías pesadas
 
Estas metodologías se basan en la idea de que es muy difícil predecir cuales serán las necesidades de los clientes con mucha antelación, por lo que no tiene sentido planificar a largo plazo ya que los requisitos van a cambiar seguro
 
Estas metodologías se caracterizan por
  • El software se diseña y construye simultaneamente
  • El proceso es adaptativo e incremental
  • El feedback es continuo con el cliente
  • La comunicación con el cliente es constante
 
📕
El Manifiesto por el desarrollo ágil del software (2001, Kent Beck)
Valores fundamentales expuestos en el manifiesto
  • Los individuos y sus interacciones están sobre los procesos y las herramientas
  • El software funcional debe estar por encima de una simple documentación exhaustiva
  • La colaboración con el cliente es mejor que lo que ponga en el contrato
  • La respuesta ante los cambios es mejor que el seguir un plan preestablecido
Principios fundamentales de las metodologías ágiles
  1. La prioridad principal es satisfacer al cliente con entregas tempranas y continuas de software utilizable
  1. Dar la bienvenida a los cambios.
  1. Entregar el software desarrollado frecuentemente con el menor intervalo de tiempo entre entregas posible
  1. La gente de negocios y los desarrolladores trabajan juntos a través del proyecto
  1. Dar el entorno que necesitan a las personas y confiar en ellos
  1. El diálogo cara a cara es el método más eficiente para comunicar información dentro de un equipo (hoy en día este principio está un poco obsoleto)
  1. Desarrollar software es la primera medida de progreso
  1. Todos los involucrados en el proceso deben ser capaces de mantener una paz constante
  1. La atención continua a la calidad técnica y al buen diseño mejora la agilidad
  1. La simplicidad es esencial
  1. Las mejores arquitecturas, requisitos y diseños surgen de la propia organización del equipo (existen tanto modelos como equipos de trabajo)
  1. El equipo debe reflexionar constantemente en como ser más efectivo
 
Los principales procesos que siguen el modelo ágil
  • Scrum
  • Kanban
  • Lean development
  • eXtreme Programming (XP)
  • Adaptative Software Development
  • DSDM (Dynamic Systems Development Method)
  • Crystal Methods (Cockburn’s Crystal Family methodologies)

Modelo en Espiral

Este método usa lo que se conoce como un metodología ágil dado que el desarrollo es cíclico y es incremental.
  • Es un modelo evolutivo que reúne la naturaleza iterativa del prototipado con los aspectos controlados y sistemáticos del modelo en cascada
  • La espiral tiene 4 fases
  • Cada 4 fases es una vuelta a la espiral
notion image
🟢 Ventajas
  • El sistema se desarrolla de forma progresiva con la colaboración de todos
  • Los riesgos se van detectando a medida que se va evolucionando y no al final
  • La aceptación del software es progresiva
🔴 Desventajas
Como el número de vueltas no está definido podría ocurrir que el desarrollo se alargara más de lo necesario

RUP

notion image
notion image
👔
Desarrollo de Sistemas Formales
ℹ️
En este modelo, se utiliza un sistema matemático que se transforma formalmente en implementación

Modelo General

notion image

Model Driven Development (MDD)

notion image
notion image
♻️
Desarrollo Basado en Reutilización
ℹ️
En este modelo, el sistema se ensambla con componentes que existían previamente

Modelo General

Existen variantes dependiendo de la unidad de reutilización
  • Funciones o servicios
  • Componentes
    • Paquetes o liberías
    • COTS (Commercial Off-The-Self) → Software completo, sin cambios, directamente instalado tal y como se adquiere
  • Familias de aplicaciones
    • Plataforma → Varias versiones de un software desarrollado para diferentes plataformas
    • Configuración → Varias versiones para manejar diferentes periféricos
    • Funcionalidad → Varias versiones para distintos clientes con distintos requisitos
notion image

Modelo Basado en Componentes

🔖
Un componente es una pieza de código, un paquete de software que encapsula un conjunto de funciones o datos relacionados
 
Los componentes han de ser independientes del entorno
  • El objetivo de estos modelos es la reutilización del software
  • Los componentes facilitan las pruebas y el mantenimiento al ser independientes del software en el que se utilizan

Líneas de Producto Software (SPL)

Está inspirado en las líneas de producción industriales. Estos se basan en el desarrollo independiente de los diferentes aspectos del software, permitiendo así implementar en diferentes productos los mismos aspectos comunes del software
notion image
🛠️
Desarrollo Orientado a la Implementación
ℹ️
Estos modelos se centran en el proceso de entrega e implantación del producto

Entrega Incremental

notion image

Despliegue Operacional

notion image