Diagrama de Secuencia UML

Acerca de los diagramas de secuencia

Un diagrama de secuencia muestra cómo los participantes intercambian mensajes a lo largo del tiempo: las líneas de vida van de arriba hacia abajo, los mensajes van de izquierda a derecha entre ellas, y el eje vertical es el orden. Definido por UML 2.5.1 §17 (Interacciones), es el diagrama al que recurren los ingenieros para precisar un flujo de llamadas API, un intercambio de autenticación o un protocolo distribuido — quién llama a quién, en qué orden y qué responde.

Schematex implementa la notación UML completa, y para la generación también acepta el dialecto Mermaid sequenceDiagram — pega Mermaid sin cambios y se renderiza. Bajo el encabezado sequenceDiagram las flechas toman el significado de Mermaid (->> llamada síncrona, -->> respuesta, -) async); bajo el encabezado nativo sequence "Title" se mantiene el significado histórico de Schematex (->> = async). Donde la mayoría de las herramientas se detienen en el subconjunto común (alt/opt/loop/par), Schematex lleva los doce operadores de fragmento combinado y marcos de uso de interacción ref, porque son las partes a las que recurren los profesionales cuando una interacción se vuelve real. Distinto de usecase (alcance del sistema, no orden de mensajes), state (modos de un objeto, no mensajes entre objetos) y bpmn (proceso organizacional, no una secuencia de llamadas).

sequence·§
↘ preview
100%
Sequence Diagram — Login flow 4 participants, 8 messages, 1 combined fragments. Login flow User Web App Auth DB alt [credentials valid] [invalid] submit(credentials) verify(credentials) SELECT user row token 200 OK 401 error session cookie set
UTF-8 · LF · 21 lines · 432 chars✓ parsed·1.7 ms·7.9 KB SVG

1. Tu primer diagrama

Cada documento comienza con la palabra clave sequence y un "título" opcional. Los participantes no necesitan ser declarados — la primera vez que se menciona uno en un mensaje, se convierte en una línea de vida:

sequence
  Alice -> Bob : Authentication Request
  Bob --> Alice : Authentication Response

Las líneas de vida aparecen de izquierda a derecha en orden de primer uso. -> es una llamada síncrona (línea sólida, punta de flecha rellena); --> es una respuesta (línea discontinua, punta de flecha abierta). El texto después de : es la etiqueta del mensaje.


2. Participantes

Declara un participante explícitamente para establecer su tipo, darle un alias o fijar su orden:

sequence
  actor User
  participant Web as "Web App"
  boundary LoginUI
  control Auth
  entity Account
  database DB
  collections Sessions
  queue Events
TipoRenderizado como
participant (predeterminado)caja clasificador redondeada
actorfigura de palo
boundary / control / entityiconos de robustez de Jacobson (⊢◯ / ◯ con flecha / ◯ con subrayado)
databasecilindro
collections / queuecaja con el tipo como «estereotipo»
  • as "Etiqueta" establece el nombre de visualización (comillas opcionales; se aceptan comillas CJK 「…」).
  • Un estereotipo personalizado va en comillas angulares o corchetes ASCII angulares después de la declaración — sobreescribe la etiqueta predeterminada: actor Printer «system», participant Bus as "Event Bus" <<service>>.

3. Mensajes

El token de flecha elige la semántica UML:

DSLSignificadoRenderizado
A -> Bllamada síncronalínea sólida, punta rellena
A ->> Bseñal asíncronalínea sólida, punta abierta
A --> Brespuesta / retornolínea discontinua, punta abierta
A -x Bmensaje perdidolínea que termina en un círculo relleno
o-> Bmensaje encontradolínea que comienza desde un círculo relleno
A -> Amensaje propiobucle doblado de vuelta a la misma línea de vida

Los espacios alrededor de las flechas son opcionales (A->B funciona), y las etiquetas son texto libre — incluyendo un valor de retorno, ej. aHotel -> aHotel : available(roomId, date): isRoom.


4. Activaciones (especificaciones de ejecución)

La barra delgada en una línea de vida muestra que está activa. Ábrela y ciérrala con instrucciones explícitas, o con sufijos + / - en los mensajes:

sequence
  participant Client
  participant Server
  Client ->+ Server : request()
  Server ->> Server : validate()
  Server -->- Client : response

+ después de la flecha activa al receptor al llegar; - desactiva al emisor después de enviar el mensaje. La forma explícita es activate X / deactivate X. Las barras superpuestas en una línea de vida se anidan con un desplazamiento horizontal.


5. Creación y destrucción de objetos

sequence
  participant Factory
  Factory -> *Worker : «create»
  Factory -> Worker : work()
  destroy Worker

Prefija el receptor con * para que el mensaje lo instancie — la cabeza de la nueva línea de vida se dibuja en la fila de llegada, no en la parte superior. destroy X termina una línea de vida con una ✕ y detiene su eje de tiempo.


6. Fragmentos combinados

Un fragmento combinado es un marco etiquetado alrededor de una región. Schematex implementa el conjunto completo InteractionOperatorKind de UML:

OperadorSignificadoOperandos
altalternativas (if/else-if/else)else, cada uno guardado
optse ejecuta solo si se cumple la guardauno, guardado
looprepeticiónuno; la guarda puede ser (min,max)
paroperandos concurrentesand
breaksalida excepcionaluno, guardado
criticalatómico / sin intercaladouno
seq / strictsecuenciación débil / estrictaand
negtrazas inválidas (renderizado con tinte)uno
ignore / considerfiltro de conjunto de mensajes {m1, m2}uno
assertla única continuación válidauno
sequence
  actor User
  participant API
  User -> API : GET /resource
  alt [authorized]
    API --> User : 200 + body
  else [forbidden]
    API --> User : 403
  end

Las guardas van en [corchetes] después del operador (y después de else). Los fragmentos se anidan, y los marcos internos se insertan automáticamente para que queden limpiamente dentro de su padre.


7. Uso de interacción (ref)

Hace referencia a otra interacción en lugar de incluirla en línea — la forma en que UML mantiene los diagramas grandes como componibles:

sequence
  participant A
  participant B
  ref over A, B : Establish session
  A -> B : poll()

ref over <líneas-de-vida> : Nombre dibuja una caja enmarcada a través de las líneas de vida nombradas. La mayoría de las herramientas omiten esto; es como los sistemas reales descomponen flujos largos.


8. Notas, divisores, invariantes, numeración

sequence
  autonumber 1 1
  actor Shopper
  participant Cart
  == Phase 1: review ==
  Shopper -> Cart : view items
  note over Cart : cart persisted in Redis
  state Cart : ready
  • note over A / note over A, B / note left of A / note right of A — anotaciones con esquina doblada.
  • == texto == — divisor de sección de ancho completo.
  • state X : texto — cápsula de invariante de estado en una línea de vida.
  • autonumber [inicio] [paso] — prefija cada mensaje con un número incremental.

9. Gramática (EBNF)

diagram      = "sequence" [ string ] NEWLINE statement*
statement    = participant | message | activation | note
             | fragment | ref | divider | invariant | destroy | autonumber

participant  = kind IDENT ("as" label)? stereotype?
kind         = "participant" | "actor" | "boundary" | "control"
             | "entity" | "database" | "collections" | "queue"
stereotype   = "«" TEXT "»" | "<<" TEXT ">>"

message      = IDENT? act? arrow act? ("*")? IDENT? (":" TEXT)?
arrow        = "->" | "->>" | "-->" | "-x" | "o->"
act          = "+" | "-"
activation   = ("activate" | "deactivate") IDENT

fragment     = ("alt"|"opt"|"loop"|"par"|"break"|"critical"|"seq"
               |"strict"|"neg"|"ignore"|"consider"|"assert") guard? NEWLINE
                 statement* (("else"|"and") guard? NEWLINE statement*)* "end"
guard        = "[" TEXT "]" | "(" NUMBER ("," NUMBER)? ")"
ref          = "ref" "over" IDENT ("," IDENT)* ":" TEXT
note         = "note" ("over"|"left of"|"right of") IDENT ("," IDENT)? ":" TEXT
divider      = "==" TEXT "=="
invariant    = "state" IDENT ":" TEXT
destroy      = "destroy" IDENT
autonumber   = "autonumber" NUMBER? NUMBER?

10. Cumplimiento del estándar

Schematex sigue la notación UML 2.5.1 §17 (Interacciones) del OMG: puntas de flecha síncronas (rellenas) vs. asíncronas (abiertas) vs. de respuesta (discontinuas), endpoints de mensajes encontrados/perdidos, barras de especificación de ejecución, los doce operadores de fragmento combinado con operandos guardados, marcos de uso de interacción ref y los iconos de clase de análisis de Jacobson para boundary/control/entity. Las compuertas, corregión y restricciones de tiempo/duración están fuera de alcance para v0.1 (necesitan nuevas primitivas de diseño) y están registradas para una versión posterior. Consulta docs/reference/33-SEQUENCE-STANDARD.md para la especificación completa.


Ejemplos relacionados

Escenarios listos para usar de la galería de ejemplos:

sequence·§ OMG UML 2.5.1 §17 (Interactions)
Sequence Diagram — Login flow 4 participants, 8 messages, 1 combined fragments. Login flow User Web App Auth DB alt [credentials valid] [invalid] submit(credentials) verify(credentials) SELECT user row token 200 OK 401 error session cookie set
Login flow with an alt fragment
An authentication handshake across an actor, a Jacobson control object, and a database lifeline — synchronous calls open activation bars, a dashed reply returns the row, and an alt combined fragment splits the valid/invalid branches. A note records the session-cookie side effect.
business & operations
sequence·§ OMG UML 2.5.1 §17 (Interactions)
Sequence Diagram — OAuth 2.0 Authorization Code 5 participants, 16 messages, 1 combined fragments. OAuth 2.0 Authorization Code User Browser Web App Auth Server User Store alt [token exchange ok] [exchange failed] click "Sign in" GET /login 302 → Auth Server GET /authorize consent screen approve 302 + auth code GET /callback?code POST /token (code) load user profile access + refresh token Set-Cookie: session signed in 401 Unauthorized retry
OAuth 2.0 authorization-code login
The canonical browser-based sign-in handshake as a UML sequence diagram — redirect to the auth server, user consent, code-for-token exchange, and an alt fragment for the success vs. failure branch, with activation bars tracking who is busy at each step.
software & it
sequence·§ OMG UML 2.5.1 §17 (Interactions)
Sequence Diagram 2 participants, 3 messages, 0 combined fragments. Factory Worker «create» external trigger fire-and-forget
Object lifecycle — create, found, lost, destroy
The four UML interaction lifecycle markers in one short diagram — a create message draws its arrow to the new participant's box, a found message starts from a filled circle, a lost message ends at one, and destroy terminates a lifeline with an ✕.
education
sequence·§ OMG UML 2.5.1 §17 (Interactions)
Sequence Diagram — Order processing (saga) 6 participants, 13 messages, 2 combined fragments. Order processing (saga) Customer API Gateway Order Service Payment Service Inventory Service «queue» Event Bus par alt [payment captured && stock reserved] [payment failed] ref Validate cart & price POST /orders createOrder() charge(card) reserve(items) paid reserved OrderConfirmed 201 Created confirmation release(items) OrderCancelled 402 Payment Required declined
Microservices order saga
A distributed order-processing saga showing the parts of UML sequence notation that generic tools omit — a ref interaction-use frame, a par fragment for concurrent service calls, asynchronous event-bus messages, and an alt fragment with a compensating rollback on payment failure.
software & it

Found this useful?

Schematex is free, fully open source, and zero-dependency. A star helps other developers discover it.