Diagramme de séquence UML

À propos des diagrammes de séquence

Un diagramme de séquence montre comment les participants échangent des messages dans le temps : les lignes de vie s'étendent de haut en bas, les messages vont de gauche à droite entre elles, et l'axe vertical représente l'ordre. Défini par UML 2.5.1 §17 (Interactions), c'est le diagramme que les ingénieurs utilisent pour préciser un flux d'appels API, une poignée de main d'authentification ou un protocole distribué — qui appelle qui, dans quel ordre, et ce qui revient.

Schematex implémente la notation UML complète, et pour la génération il accepte également le dialecte Mermaid sequenceDiagram — coller du Mermaid sans modification et il se rend. Sous l'en-tête sequenceDiagram, les flèches ont la signification Mermaid (->> appel synchrone, -->> réponse, -) asynchrone) ; sous l'en-tête natif sequence "Title", la signification historique de Schematex est conservée (->> = asynchrone). Là où la plupart des outils s'arrêtent au sous-ensemble courant (alt/opt/loop/par), Schematex gère les douze opérateurs de fragments combinés et les cadres ref d'utilisation d'interaction, car ce sont les éléments que les professionnels utilisent lorsqu'une interaction devient réelle. Distinct de usecase (périmètre du système, pas l'ordre des messages), state (modes d'un objet, pas les messages inter-objets), et bpmn (processus organisationnel, pas une séquence d'appels).

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·5.4 ms·7.9 KB SVG

1. Votre premier diagramme

Chaque document commence par le mot-clé sequence et un "titre" optionnel. Les participants n'ont pas besoin d'être déclarés — la première fois que vous en mentionnez un dans un message, il devient une ligne de vie :

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

Les lignes de vie apparaissent de gauche à droite dans l'ordre de première utilisation. -> est un appel synchrone (ligne pleine, tête de flèche pleine) ; --> est une réponse (ligne en pointillés, tête de flèche ouverte). Le texte après : est le label du message.


2. Participants

Déclarer un participant explicitement pour définir son type, lui donner un alias ou fixer son ordre :

sequence
  actor User
  participant Web as "Web App"
  boundary LoginUI
  control Auth
  entity Account
  database DB
  collections Sessions
  queue Events
TypeRendu
participant (par défaut)Boîte de classificateur arrondie
actorPersonnage en bâton
boundary / control / entityIcônes de robustesse Jacobson (⊢◯ / ◯ avec flèche / ◯ avec soulignement)
databaseCylindre
collections / queueBoîte avec le type comme «stéréotype»
  • as "Label" définit le nom d'affichage (guillemets optionnels ; guillemets CJK 「…」 acceptés).
  • Un stéréotype personnalisé va entre guillemets chevrons ou crochets ASCII après la déclaration — il remplace le label par défaut : actor Printer «system», participant Bus as "Event Bus" <<service>>.

3. Messages

Le jeton de flèche détermine la sémantique UML :

DSLSignificationRendu
A -> BAppel synchroneLigne pleine, tête de flèche pleine
A ->> BSignal asynchroneLigne pleine, tête de flèche ouverte
A --> BRéponse / retourLigne en pointillés, tête ouverte
A -x BMessage perduLigne se terminant par un cercle plein
o-> BMessage trouvéLigne partant d'un cercle plein
A -> AMessage autoBoucle recourbée vers la même ligne de vie

Les espaces autour des flèches sont optionnels (A->B fonctionne), et les labels sont du texte libre — incluant une valeur de retour, ex. aHotel -> aHotel : available(roomId, date): isRoom.


4. Activations (spécifications d'exécution)

La barre fine sur une ligne de vie indique qu'elle est active. L'ouvrir et la fermer avec des instructions explicites, ou avec les suffixes + / - sur les messages eux-mêmes :

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

+ après la flèche active le destinataire à l'arrivée ; - désactive l'émetteur après l'envoi du message. La forme explicite est activate X / deactivate X. Les barres qui se chevauchent sur une même ligne de vie s'imbriquent avec un décalage horizontal.


5. Création et destruction d'objets

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

Préfixer le destinataire avec * pour que le message l'instancie — la tête de la nouvelle ligne de vie est dessinée à la rangée d'arrivée, pas en haut. destroy X termine une ligne de vie par un ✕ et arrête son axe temporel.


6. Fragments combinés

Un fragment combiné est un cadre étiqueté autour d'une région. Schematex implémente l'ensemble complet InteractionOperatorKind d'UML :

OpérateurSignificationOpérandes
altalternatives (if/else-if/else)else, chacun gardé
opts'exécute si la condition est vraieun, gardé
looprépétitionun ; la condition peut être (min,max)
paropérandes concurrentsand
breaksortie exceptionnelleun, gardé
criticalatomique / sans entrelacementun
seq / strictséquencement faible / strictand
negtraces invalides (rendu teinté)un
ignore / considerfiltre d'ensemble de messages {m1, m2}un
assertla seule continuation valideun
sequence
  actor User
  participant API
  User -> API : GET /resource
  alt [authorized]
    API --> User : 200 + body
  else [forbidden]
    API --> User : 403
  end

Les conditions vont entre [crochets] après l'opérateur (et après else). Les fragments s'imbriquent, et les cadres intérieurs s'incrustent automatiquement pour tenir proprement dans leur parent.


7. Utilisation d'interaction (ref)

Référencer une autre interaction au lieu de l'insérer en ligne — la façon dont UML garde les grands diagrammes composables :

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

ref over <lifelines> : Name dessine une boîte encadrée à travers les lignes de vie nommées. La plupart des outils omettent ceci ; c'est ainsi que les systèmes réels décomposent les longs flux.


8. Notes, diviseurs, invariants, numérotation

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 — annotations à coin replié.
  • == text == — diviseur de section pleine largeur.
  • state X : text — capsule d'invariant d'état sur une ligne de vie.
  • autonumber [start] [step] — préfixer chaque message d'un numéro croissant.

9. Grammaire (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. Conformité aux standards

Schematex suit la notation UML 2.5.1 §17 (Interactions) de l'OMG : têtes de flèche synchrones (pleines) vs asynchrones (ouvertes) vs réponses (pointillés), points d'extrémité de messages perdus/trouvés, barres de spécification d'exécution, les douze opérateurs de fragments combinés avec opérandes gardés, cadres ref d'utilisation d'interaction, et les icônes de classes d'analyse Jacobson pour boundary/control/entity. Les portes (gates), la corégion, et les contraintes de temps/durée sont hors périmètre pour v0.1 (ils nécessitent de nouvelles primitives de mise en page) et sont suivis pour une version ultérieure. Voir docs/reference/33-SEQUENCE-STANDARD.md pour la spécification complète.


Exemples associés

Scénarios prêts à l'emploi issus de la galerie d'exemples :

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.