Diagramas de Secuencia

Los diagramas de secuencia visualizan cómo interactúan los objetos a lo largo del tiempo. Muestran el orden de los mensajes intercambiados entre participantes para llevar a cabo una tarea o escenario específico.

Conceptos Fundamentales

Participantes

Los participantes representan los objetos o actores involucrados en la interacción. Cada participante tiene una línea de vida — una línea discontinua vertical que se extiende hacia abajo y representa el tiempo.

Mensajes

Los mensajes son las comunicaciones entre participantes, mostradas como flechas horizontales entre líneas de vida. El tiempo fluye de arriba hacia abajo.

Cajas de Activación

Las cajas de activación (también llamadas especificaciones de ejecución) son rectángulos delgados en una línea de vida que muestran cuándo un participante está procesando activamente.

Crear Participantes

Usando la Herramienta Participant

En una página UML Sequence Diagram, presiona P o elige Participant en el menú UML de la barra de herramientas, luego haz clic en el lienzo para colocar participantes. Los nuevos participantes se alinean con los existentes. Presiona Return con un participante seleccionado para renombrarlo.

Tipos de Participante

Los participantes pueden representar diferentes tipos de entidades:

  • Participant - Un objeto genérico o parte del sistema (rectángulo)
  • Actor - Un usuario o sistema externo (figura de palitos)
  • Boundary - Límite de UI o de sistema
  • Control - Lógica de proceso o controlador
  • Entity - Objeto de datos o de dominio
  • Database - Un almacén de datos

Establece el Role Type en la pestaña Arrange del Inspector → sección UML.

Crear Mensajes

Usando la Herramienta Message

Presiona M para activar la herramienta Message, luego:

  1. Haz clic en la línea de vida del participante de origen
  2. Arrastra hasta la línea de vida del participante de destino
  3. Suelta para crear el mensaje

Tipos de Mensaje

TipoEstilo de FlechaDescripción
SynchronousLínea sólida, flecha rellenaEl emisor espera la respuesta
AsynchronousLínea sólida, flecha abiertaEl emisor continúa sin esperar
ReturnLínea discontinua, flecha abiertaRespuesta a una llamada síncrona
CreateLínea discontinua, flecha abierta hacia una cajaCrea un nuevo participante
DestroyLínea terminada en XTermina un participante
Self CallFlecha que vuelve a la misma línea de vidaUn participante se llama a sí mismo

Establece el Message Type del mensaje seleccionado en la sección UML del Inspector.

Etiquetas de Mensaje

Selecciona un mensaje y edita su Label en la sección UML del Inspector. Formatos comunes:

  • methodName() - Llamada simple a un método
  • methodName(param1, param2) - Llamada con parámetros
  • result := methodName() - Llamada con asignación de retorno
  • [condition] methodName() - Mensaje condicional (guarda)

Cajas de Activación

Las cajas de activación muestran el período durante el cual un participante está ejecutando o esperando una respuesta.

Agregar Cajas de Activación

  1. Elige Activation en el menú UML de la barra de herramientas
  2. Arrastra a lo largo de la línea de vida de un participante sobre el tramo en el que está activo
  3. La caja de activación se coloca en esa línea de vida

Activaciones Anidadas

Cuando un participante se llama a sí mismo (llamada recursiva) o maneja varias llamadas anidadas, las cajas de activación se pueden apilar.

Fragmentos

Los fragmentos agrupan mensajes para mostrar lógica condicional, bucles, u otro flujo de control.

Tipos de Fragmento

TipoPalabra ClavePropósito
AlternativealtRamificación if-else
OptionoptEjecución opcional (if sin else)
LooploopEjecución repetida
BreakbreakSalida del bucle que lo contiene
ParallelparEjecución concurrente
CriticalcriticalSección atómica/crítica
NegativenegInteracción inválida
AssertionassertInteracción requerida
IgnoreignoreMensajes que se pueden ignorar
ConsiderconsiderMensajes que deben considerarse
ReferencerefReferencia a otra interacción

Crear Fragmentos

  1. Elige Fragment en el menú UML de la barra de herramientas
  2. Arrastra un rectángulo sobre los participantes y mensajes que quieras agrupar
  3. Selecciona el fragmento y establece su Fragment Type en la sección UML del Inspector
  4. Ingresa una Guard Condition según sea necesario

Guardas de Fragmento

Las guardas son condiciones mostradas entre corchetes:

  • [x > 0] - Condición numérica
  • [user.isAdmin] - Comprobación de propiedad
  • [else] - Rama predeterminada/else en fragmentos alt

Reordenar Elementos

Mover Participantes

Arrastra los participantes horizontalmente para reordenarlos. Los mensajes conectados los seguirán.

Mover Mensajes

Selecciona un mensaje y presiona Cmd+↑ o Cmd+↓ para moverlo antes o después en la secuencia.

Buenas Prácticas

  1. Empieza con el flujo principal - Modela primero el camino ideal, luego agrega alternativas
  2. Mantenlo legible - Limítate a 5-7 participantes por diagrama
  3. Usa nombres significativos - Etiqueta los mensajes con nombres de métodos reales o descripciones
  4. Muestra los mensajes de retorno - Especialmente para llamadas síncronas donde el valor de retorno importa
  5. Usa los fragmentos con moderación - Demasiados fragmentos anidados reducen la legibilidad
  6. Agrega notas - Usa notas adhesivas para explicar la lógica compleja

Ejemplo: Flujo de Inicio de Sesión de Usuario

Una secuencia de inicio de sesión típica podría incluir:

  1. El usuario ingresa sus credenciales
  2. El Client envía una solicitud de inicio de sesión al Server
  3. El Server valida con la Database
  4. La Database devuelve el registro del usuario
  5. El Server crea una sesión
  6. El Server devuelve éxito/fallo al Client
  7. El Client actualiza la UI

Este flujo demuestra llamadas síncronas, mensajes de retorno, y posibles fragmentos alt para los caminos de éxito/fallo.