Skip to content

Tema 10: Diseño y Herramientas UML (Actividad, Estados, Despliegue y Componentes)

Resumen Ejecutivo

Esta sesión finaliza la revisión de las herramientas UML necesarias para el diseño de software, enfocándose en modelar el comportamiento detallado y la arquitectura física del sistema. Se profundiza en cómo los Diagramas de Actividad y Máquinas de Estado permiten definir la lógica de negocio y los ciclos de vida de los objetos, respectivamente. Finalmente, se aborda la materialización de la solución mediante Diagramas de Despliegue y Componentes, conectando el diseño lógico con la implementación tecnológica.

Conceptos Clave

  • UML vs. Proceso Unificado: Diferencia entre el lenguaje de modelado (herramienta) y la metodología de desarrollo (proceso).
  • Diagrama de Actividad: Modelado de comportamiento centrado en el flujo de control y flujo de datos (similar a un diagrama de flujo vitaminado).
  • Diagrama de Máquina de Estados: Representación de los estados por los que pasa un sistema u objeto en respuesta a eventos externos o internos.
  • Swimlanes (Calles): Divisiones en un diagrama de actividad que asignan responsabilidades a roles específicos.
  • Diagrama de Despliegue: Muestra la arquitectura física (nodos) y cómo se distribuyen los artefactos de software en ella.
  • Componente: Unidad modular de despliegue y sustitución (ej. un archivo .jar) que encapsula un conjunto de clases e interfaces.

Desarrollo del Temario

1. Contextualización: UML y el Proceso de Ingeniería

El profesor comienza aclarando una distinción fundamental para el examen y la práctica profesional: UML no es lo mismo que el Proceso Unificado.

  • UML (Lenguaje Unificado de Modelado): Es un conjunto de herramientas gráficas. No te obliga a trabajar de una manera específica; es un lenguaje para expresarse.

  • Proceso Unificado: Es una metodología que dicta los pasos a seguir (Requisitos, Análisis, Diseño, Implementación).

  • Relación: Aunque nacieron juntos, puedes usar herramientas UML (como un diagrama de actividad) dentro de metodologías ágiles o cualquier otro proceso si necesitas definir funcionalidad a bajo nivel.

¡OJO AL DATO!: Es crucial entender en qué fase "encaja" teóricamente cada diagrama dentro del Proceso Unificado, aunque en la práctica sean flexibles:

  • Análisis: Casos de uso, Modelo de dominio (Clases conceptuales).

  • Diseño: Diagramas de secuencia (interacción), Máquinas de estado, Actividad, Componentes y Despliegue.


2. Diagramas de Actividad

Se utilizan para modelar el comportamiento de una funcionalidad, centrándose en el flujo de ejecución (orden de los pasos) y el flujo de datos (información que se pasa).

Analogía del Profesor: El profesor menciona que utiliza estos diagramas incluso fuera de la informática (ej. procesos de negocio o tareas cotidianas) debido a su claridad para representar pasos secuenciales y paralelos.

Elementos Principales:

  • Actividad y Acciones: La actividad es el proceso general (rectángulo grande) y las acciones son los pasos individuales (rectángulos redondeados pequeños).

  • Flujo de Control: Flechas que indican "qué va después de qué".

  • Nodo de Decisión (Rombo): Caminos alternativos (if/else). Solo se puede salir por uno de los caminos.

  • Nodo Merge (Rombo): Donde convergen varios caminos alternativos en uno solo.

  • Concurrencia (Paralelismo):

  • Fork (Barra negra de división): Un flujo se divide en varios que ocurren a la vez.

  • Join (Barra negra de unión): Espera a que terminen todos los flujos paralelos para continuar.

Características Avanzadas:

  1. Nodos Objeto (Pins): Representan datos. Si una acción genera una "Factura", se dibuja un rectángulo (objeto) saliendo de la acción. Esto explicita el flujo de datos.

  2. Swimlanes (Calles): Permiten indicar quién realiza la acción. Dividen el diagrama en columnas (ej. Cliente, Ventas, Almacén).

  3. Regiones Interrumpibles: Zonas del diagrama que pueden ser canceladas abruptamente si ocurre un evento (ej. señal de "Cancelar Pedido"). Se representa con un marco punteado y un rayo (señal).

  4. Excepciones: Se marcan con un triángulo en la línea de flujo, indicando que es un camino de error o no deseado (ej. "Bombón roto").


3. Diagramas de Máquinas de Estado

A diferencia del diagrama de actividad (que es un flujo paso a paso), la máquina de estados ve el sistema como un "todo" que cambia de estado según ocurran eventos.

Definición de Estado: Situación en la que se encuentra un objeto o sistema durante un tiempo, esperando un evento (ej. "Inactivo", "Calentando").

Componentes de la Transición:

Una transición se define generalmente como:

  • Evento: Lo que dispara el cambio (ej. demasiadoFrío).

  • Parámetros: El evento puede llevar datos (ej. tempDeseada).

  • Acción: Lo que se ejecuta al transicionar.

Tipos de Acciones en un Estado:

  • entry / acción: Se ejecuta inmediatamente al entrar al estado.
  • exit / acción: Se ejecuta justo antes de salir.
  • do / acción: Actividad continua que ocurre mientras se está en el estado (ej. play ringing tone mientras suena el teléfono).

Estados Compuestos (Superestados):

Un estado puede tener "sub-estados" dentro:

  1. Secuenciales: Dentro del estado general, hay un flujo lineal (uno detrás de otro).

  2. Ortogonales (Paralelos): El estado se divide en regiones separadas por líneas punteadas. El sistema está en varios sub-estados a la vez (ej. cursar una asignatura implica estar en "Laboratorio realizado" Y "Proyecto realizado" simultáneamente).

¡OJO AL DATO! - Historia (): Si sales de un estado compuesto y quieres volver exactamente al sub-estado donde te quedaste (no al principio), usas el indicador de historia:

  • H: Recuerda el nivel superior.
  • H*: Recuerda profundamente todos los sub-niveles anidados.

4. Diagramas de Implementación

Diagrama de Despliegue

Modela la arquitectura física ("el hierro" y la red).

  • Nodos: Recursos computacionales (Servidores, PCs). Se dibujan como cubos.

  • Artefactos: Lo que se instala en los nodos (archivos .jar, .exe, bases de datos). Se dibujan como rectángulos con la etiqueta <<artifact>>.

  • Caminos de comunicación: Líneas que unen nodos (ej. conexión HTTP, JDBC).

Diagrama de Componentes

Modela la organización del código en módulos lógicos. Es el puente entre el Diseño y la Implementación.

  • Componente: Encapsulación de varias clases. Es la unidad física de sustitución (ej. un fichero Prestatario.jar es un componente tecnológico formado por 17 clases).

  • Interfaz: Define cómo se comunican los componentes.

  • "Chupachups" (Bola): Interfaz proporcionada (lo que ofrezco).

  • "Copa" (Medio círculo): Interfaz requerida (lo que necesito para funcionar).


Preguntas de Autoevaluación

  1. ¿Cuál es la diferencia principal entre un Diagrama de Actividad y uno de Secuencia si ambos modelan comportamiento?
  2. Respuesta: El Diagrama de Secuencia se centra en el intercambio de mensajes entre objetos (quién habla con quién y en qué orden), mientras que el Diagrama de Actividad se centra en el flujo de operaciones y datos (qué tarea va después de cuál), permitiendo representar mejor la concurrencia y la lógica condicional compleja.

  3. En una máquina de estados, ¿qué diferencia existe entre una acción entry y una actividad do?

  4. Respuesta: La acción entry es puntual y atómica (se ejecuta una sola vez al entrar), mientras que la actividad do es continua y dura todo el tiempo que el sistema permanece en ese estado (o hasta que se complete).

  5. Explica qué sucede cuando un flujo llega a un "Nodo Fork" y luego a un "Nodo Join" en un diagrama de actividad.

  6. Respuesta: Al llegar al Fork, el flujo único se divide en múltiples hilos de ejecución paralela (concurrencia). Estos hilos se ejecutan independientemente hasta llegar al Join, donde el flujo se detiene y espera hasta que todos los hilos entrantes hayan terminado para continuar como un solo flujo.

  7. ¿Qué representa el símbolo en un estado compuesto?

  8. Respuesta: Representa la "Historia Profunda". Indica que si el sistema reingresa a ese estado compuesto, debe volver exactamente a la configuración de sub-estados (incluso los anidados) que tenía la última vez que salió, en lugar de reiniciar desde el estado inicial por defecto.

  9. Según la explicación del profesor, ¿cuál es la relación física entre un Componente y una Clase?

  10. Respuesta: Un componente es la materialización tangible (ej. un archivo .jar) que agrupa y encapsula un conjunto de clases (ej. 17 clases) que trabajan juntas para ofrecer una funcionalidad desplegable.