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:
- Haz clic en la línea de vida del participante de origen
- Arrastra hasta la línea de vida del participante de destino
- Suelta para crear el mensaje
Tipos de Mensaje
| Tipo | Estilo de Flecha | Descripción |
|---|---|---|
| Synchronous | Línea sólida, flecha rellena | El emisor espera la respuesta |
| Asynchronous | Línea sólida, flecha abierta | El emisor continúa sin esperar |
| Return | Línea discontinua, flecha abierta | Respuesta a una llamada síncrona |
| Create | Línea discontinua, flecha abierta hacia una caja | Crea un nuevo participante |
| Destroy | Línea terminada en X | Termina un participante |
| Self Call | Flecha que vuelve a la misma línea de vida | Un 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étodomethodName(param1, param2)- Llamada con parámetrosresult := 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
- Elige Activation en el menú UML de la barra de herramientas
- Arrastra a lo largo de la línea de vida de un participante sobre el tramo en el que está activo
- 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
| Tipo | Palabra Clave | Propósito |
|---|---|---|
| Alternative | alt | Ramificación if-else |
| Option | opt | Ejecución opcional (if sin else) |
| Loop | loop | Ejecución repetida |
| Break | break | Salida del bucle que lo contiene |
| Parallel | par | Ejecución concurrente |
| Critical | critical | Sección atómica/crítica |
| Negative | neg | Interacción inválida |
| Assertion | assert | Interacción requerida |
| Ignore | ignore | Mensajes que se pueden ignorar |
| Consider | consider | Mensajes que deben considerarse |
| Reference | ref | Referencia a otra interacción |
Crear Fragmentos
- Elige Fragment en el menú UML de la barra de herramientas
- Arrastra un rectángulo sobre los participantes y mensajes que quieras agrupar
- Selecciona el fragmento y establece su Fragment Type en la sección UML del Inspector
- 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
- Empieza con el flujo principal - Modela primero el camino ideal, luego agrega alternativas
- Mantenlo legible - Limítate a 5-7 participantes por diagrama
- Usa nombres significativos - Etiqueta los mensajes con nombres de métodos reales o descripciones
- Muestra los mensajes de retorno - Especialmente para llamadas síncronas donde el valor de retorno importa
- Usa los fragmentos con moderación - Demasiados fragmentos anidados reducen la legibilidad
- 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:
- El usuario ingresa sus credenciales
- El Client envía una solicitud de inicio de sesión al Server
- El Server valida con la Database
- La Database devuelve el registro del usuario
- El Server crea una sesión
- El Server devuelve éxito/fallo al Client
- El Client actualiza la UI
Este flujo demuestra llamadas síncronas, mensajes de retorno, y posibles fragmentos alt para los caminos de éxito/fallo.