Exemples de diagrammes de séquence UML
Trois flux, chacun ayant besoin de ce que les autres n'utilisent pas : une connexion qui se branche, un paiement qui réessaie, et un événement auquel personne ne répond.
6 min de lectureUML 2.5.19 sur 35
La réponse courte
- La connexion est l'exemple classique parce qu'elle se branche - et le branchement est ce qu'un diagramme de séquence sait faire, pas une liste numérotée.
- Placez aussi la réponse en échec dans le fragment loop. Une boucle contenant seulement la requête cache la raison de la reprise.
- Un message asynchrone est un trait plein à pointe ouverte, sans réponse. La flèche de retour absente est une affirmation, pas un oubli.
- Trois formes couvrent presque tout flux réel : un branchement, une boucle de reprise, et un message auquel personne ne répond.
01Une connexion, où la branche est le propos#
Lisez le diagramme ci-dessus comme deux histoires partageant un début. Tout ce qui est au-dessus du cadre alt arrive dans les deux cas ; à l'intérieur, exactement un compartiment s'exécute, et les gardes entre crochets disent lequel. C'est ce qu'un diagramme de séquence fait et qu'une liste numérotée d'étapes ne peut pas faire, et c'est pourquoi ce flux est le premier exemple standard.
Le détail à copier est dans la branche d'échec. Elle ne se contente pas de renvoyer une erreur : elle envoie d'abord record(failure)au journal des tentatives, tracé avec une pointe ouverte parce que rien ne l'attend. Un diagramme dont le chemin d'échec est une seule flèche étiquetée "erreur" est un diagramme qui n'a pas réfléchi au chemin d'échec - et l'exigence de limitation que tout le monde découvre trois semaines plus tard vit exactement dans cette branche.
02Un paiement, où la boucle et l'auto-appel sont le propos#
Deux choses ici n'apparaissent pas sur un premier diagramme de séquence. La garde du fragment loop nomme à la fois une borne et une condition - [3 times, while transient] - parce qu'une boucle sans borne est un diagramme qui promet une panne, et qu'une boucle sans condition ne dit pas ce qui l'arrête plus tôt.
L'autre est backoff(), un message de Checkout vers lui-même, tracé comme une flèche qui quitte une ligne de vie et y revient. Les auto-appels valent d'être dessinés exactement quand le délai ou la décision fait partie de l'histoire - ici c'est toute la raison pour laquelle la seconde tentative réussit - et valent d'être omis quand il s'agit de travail interne ordinaire.
Notez aussi ce qui n'est pas là : aucune réponse en tirets après markPaid(orderId). Le magasin de commandes répond, bien sûr, mais la réponse ne porte rien sur quoi ce flux raisonne, et dessiner chaque réponse est la façon dont un diagramme de six messages intéressants en devient un de douze.
03Un événement, où rien n'est répondu#
C'est l'exemple que presque personne ne dessine, et celui qu'il vaut le plus la peine d'avoir. Chaque flèche est asynchrone - trait plein, pointe ouverte - et il n'y a pas un seul retour en tirets. Le service de commandes publie et passe à la suite ; l'entrepôt et le service d'e-mail reçoivent chacun l'événement, et rien sur ce diagramme ne dit lequel des deux termine en premier, parce que rien dans le système ne le dit non plus.
Dessiner ce flux avec des pointes pleines et des réponses serait un autre système : un où la publication bloque jusqu'à ce que les deux consommateurs aient tourné, ce qui est précisément la propriété qu'un courtier existe pour supprimer. La notation les distingue, et cette distinction vaut plus ici que partout ailleurs en UML.
En une ligne chacun
- 01Un fragment alt porte toutes les issues ; si une seule branche a une garde, vous vouliez un opt.
- 02Donnez à une boucle une borne et une condition, et gardez la réponse en échec à l'intérieur.
- 03Pointe ouverte et aucune réponse signifient asynchrone. Ne dessinez pas un retour qui n'a pas eu lieu.
- 04Dessinez un auto-appel quand le délai ou la décision fait partie de l'histoire, pas pour du travail interne ordinaire.
- 05Omettez les réponses qui ne portent rien sur quoi le flux raisonne.
Pour la méthode plutôt que les exemples, lisez comment dessiner un diagramme de séquence ; pour la notation complète, l'article sur le diagramme de séquence.
04Questions fréquentes#
Quel est un bon exemple de diagramme de séquence UML ?
La connexion est l'exemple classique parce qu'elle se branche, et le branchement est précisément ce qu'un diagramme de séquence sait faire et pas une liste numérotée. Ensuite, une boucle de reprise et une publication asynchrone valent le détour : ensemble, elles couvrent les trois formes dont presque tout flux réel est fait.
Comment montrer une reprise dans un diagramme de séquence ?
Par un fragment loop autour des messages répétés, avec une garde nommant le nombre et la condition, par exemple trois fois, tant que l'erreur est transitoire. Tracez aussi la réponse en échec dans la boucle : une boucle contenant seulement la requête cache la raison de la reprise.
Comment dessine-t-on un message asynchrone ?
Par un trait plein terminé par une pointe ouverte, et non par la pointe pleine d'un appel synchrone, et sans flèche de retour ensuite. L'absence de réponse est le propos : l'émetteur n'a pas attendu, et une flèche de retour en pointillés affirmerait le contraire.
Dans cette série
- 01Qu'est-ce que UML ?
- 02Symboles UML
- 03Choisir un diagramme
- 04Diagrammes de classes
- 05Exemples de diagrammes de classes
- 06Dessiner un diagramme de classes
- 07Symboles du diagramme de classes
- 08Diagrammes de séquence
- 09Exemples de diagrammes de séquence
- 10Dessiner un diagramme de séquence
- 11Diagrammes de cas d'utilisation
- 12Exemples de cas d'utilisation
- 13Diagrammes d'activité
- 14Exemples d'activité
- 15Diagrammes états-transitions
- 16Exemples d'états-transitions
- 17Diagrammes de composants
- 18Exemples de composants
- 19Dessiner un diagramme de composants
- 20Symboles de composants
- 21Diagrammes de déploiement
- 22Exemples de déploiement
- 23Diagrammes d'objets
- 24Diagrammes de paquetages
- 25Diagrammes de structure composite
- 26Diagrammes de communication
- 27Séquence vs communication
- 28Diagrammes de temps
- 29Diagrammes globaux d'interaction
- 30Diagrammes de profil
- 31UML avec l'IA
- 32Exemple e-commerce
- 33Exemple bancaire
- 34Exemple microservices
- 35Exemple AWS
À lire aussi
Diagrammes de comportement
Diagrammes de comportement
Diagrammes de comportement
Pratique de la modélisation
Diagrammes de comportement
Diagrammes de comportement