El diagrama de secuencia UML es una herramienta esencial para comprender el comportamiento dinámico de un sistema. Modela cómo los objetos interactúan entre sí y el orden en que ocurren estas interacciones, enfatizando elflujo ordenado por tiempo de los mensajes. Es fundamental para definir casos de uso, documentar llamadas a la API y rastrear flujos de transacciones complejos.
Esta guía te guiará a través de los elementos fundamentales y las técnicas de modelado del diagrama de secuencia.
Estructura y propósito fundamentales
Un diagrama de secuencia está organizado a lo largo de dos ejes:
- Eje horizontal: Muestra los participantesObjetos (o actores, clases y componentes).
- Eje vertical (eje del tiempo): Representa el flujo del tiempo, que avanza hacia abajo. Los mensajes enviados más abajo en el diagrama ocurren más tarde en la secuencia.

El propósito es responder a la pregunta:“En este escenario específico (caso de uso), ¿en qué orden intercambian información estos objetos para lograr el resultado deseado?”
Elementos fundamentales de un diagrama de secuencia
Para modelar una secuencia, necesitas tres elementos fundamentales: líneas de vida, mensajes y barras de activación.
A. Líneas de vida (participantes)
Una línea de vida representa a un participante único—un objeto, instancia o clase—en la interacción.
- Notación: Un cuadro rectangular en la parte superior del diagrama que contiene el nombre del objeto, con una línea punteada vertical que se extiende hacia abajo.
- Sintaxis:
NombreDelParticipante(si el objeto es una instancia, por ejemplo,usuario)NombreDeInstancia: NombreDeClase(por ejemplo,authService: AuthenticationService)
- Propósito: La línea punteada indica la existencia del participante a lo largo del tiempo dentro del ámbito de la secuencia.

B. Mensajes (Interacción)
Los mensajes son las flechas horizontales dibujadas entre las líneas de vida. Representan la comunicación entre objetos, como llamadas a métodos, señales o solicitudes de API.

Tipos de mensajes:
| Tipo de mensaje | Notación | Descripción |
|---|---|---|
| Llamada síncrona | Línea sólida con punta de flecha llena | El remitente espera una respuesta antes de continuar. Esto inicia una Barra de activación en la línea de vida del destinatario. |
| Respuesta/Retorno | Línea punteada con punta de flecha abierta | La respuesta a una llamada síncrona, que indica la devolución del control al remitente. Esto normalmente cierra la barra de activación. |
| Mensaje asíncrono | Línea sólida con punta de flecha abierta | El remitente no espera una respuesta y continúa su propia ejecución inmediatamente. Común en arquitecturas basadas en eventos. |
| Llamada propia | Flecha que vuelve sobre la misma línea de vida | Un objeto que llama a uno de sus propios métodos. |
| Mensaje encontrado | Flecha que comienza en un punto final y golpea una línea de vida | El remitente del mensaje es desconocido o se encuentra fuera del ámbito del diagrama (por ejemplo, un desencadenante externo). |
C. Barras de activación (Especificación de ejecución)
La barra de activación (también llamada foco de control) es un rectángulo vertical delgado dibujado encima de una línea de vida.
- Notación: Un rectángulo vertical sólido en una línea de vida.
- Propósito: Denota el período durante el cual un objeto está realizando activamente una operación (es decir, su método está en ejecución) o esperando una respuesta sincrónica. Comienza cuando se recibe un mensaje sincrónico y termina cuando se envía el mensaje de respuesta.
Modelado de lógica y flujo de control
Para modelar lógica de negocio compleja, se utilizan fragmentos (o cuadros) para rodear secciones del diagrama.
A. Fragmentos combinados
Los fragmentos combinados te permiten modelar lógica condicional, repetición y pasos opcionales. Los fragmentos más comunes incluyen:
- Alternativa (alt): Utilizado para si-entonces lógica. El fragmento se divide mediante una línea punteada, y cada sección incluye una condición (una “guardia”) entre corchetes. Solo se puede tomar un camino.
- Ejemplo:
[si las credenciales del usuario son válidas]y[de lo contrario / credenciales inválidas].
- Ejemplo:
- Opción (opt): Utilizado para una si declaración. La interacción dentro del fragmento es opcional y solo se ejecuta si la condición (guardia) es verdadera.
- Ejemplo:
[si el usuario tiene artículos en el carrito].
- Ejemplo:
- Bucle (loop): Utilizado para repetición. La guardia especifica la condición para la iteración (por ejemplo,
[para cada artículo]o[mientras (intentos < 3)]). - Referencia (ref): Utilizado para modularizar el diagrama al referenciar una secuencia de interacción definida en otro diagrama de secuencia separado. Esto evita que los diagramas se vuelvan demasiado complicados.
- Crítico (crit): Utilizado para indicar una sección que no debe interrumpirse, a menudo utilizado para modelar procesos concurrentes.
Ejemplo de modelado paso a paso
Vamos a modelar un proceso simplificadoProceso de finalización de compra del usuario utilizando los elementos principales:
| Paso | Acción | Tipo de mensaje |
|---|---|---|
| 1. | El usuario hace clic en «Finalizar compra». | Llamada sincrónica |
| 2. | El frontend valida el carrito. | Llamada automática (en el frontend) |
| 3. | El frontend solicita el procesamiento del pago. | Llamada sincrónica |
| 4. | La pasarela de pagos verifica los fondos. | Llamada sincrónica |
| 5. | La pasarela de pagos devuelve «Éxito». | Mensaje de retorno |
| 6. | El frontend envía un mensaje asíncrono al servicio de inventario para reducir el stock. | Mensaje asíncrono |
| 7. | El frontend envía un mensaje sincrónico al servicio de pedidos para finalizar el pedido. | Llamada sincrónica |
| 8. | El servicio de pedidos devuelve “ID del pedido”. | Mensaje de retorno |
| 9. | La interfaz frontend muestra una página de confirmación. | Mensaje de retorno (al usuario) |
Modelado de lógica (fragmento alternativo)
Para manejar el fallo, usamos unAlternativa fragmento:
- Coloque elVerificación de pasarela de pago (Paso 4 y 5) dentro de un
altfragmento. - La primera sección está protegida por
[Éxito]. Esta sección contiene los pasos 6, 7, 8 y 9. - La segunda sección, dividida por la línea punteada, está protegida por
[Fallo]. Esta sección contiene un nuevo mensaje sincrónico:paymentService -> frontend: devolver "Pago fallido"y la interfaz frontend muestra una página de error.
Resumen de las mejores prácticas para diagramas de secuencia
- Manténgalo enfocado: Un único diagrama de secuencia debería modelar típicamente un único caso de uso o una única operación atómica (por ejemplo, “Iniciar sesión”, “Agregar artículo al carrito”). UseFragmentos de referencia para subprocesos.
- Etiquete los mensajes claramente: Use frases verbales para los mensajes, reflejando nombres de métodos o puntos finales de API (por ejemplo,
processPayment(cantidad, token)). - Identifique correctamente a los participantes: Distinga entre el Actor (entidad externa) y el Objeto (componente o instancia del sistema interno).
- El tiempo fluye hacia abajo: Asegúrese de que los mensajes estén ordenados de forma consistente de arriba hacia abajo.
- Use fragmentos para el control: Evite dibujar nodos de decisión complejos o bucles dentro del flujo de mensajes en sí; use
alt,opt, yloopfragmentos.
Para obtener más detalles sobre UML y sus métodos de visualización impulsados por IA, visite nuestro centro de recursos de UML.












