Archyno
UMLDiagrammes de comportement

Diagramme de séquence vs de communication

Le même achat dessiné des deux façons, pour que le compromis se voie au lieu de se raconter : l'un met le temps sur l'axe vertical, l'autre met la structure sur la page et numérote les messages.

7 min de lectureUML 2.5.127 sur 35

La réponse courte

  • Aucun ne vaut mieux. Le diagramme de séquence rend l'ordre évident et la structure difficile à voir ; le diagramme de communication fait l'inverse.
  • Sémantiquement, c'est la même interaction sur le même modèle UML : un outil peut générer l'un à partir de l'autre, mécaniquement.
  • Les numéros de messages existent parce qu'il n'y a pas d'axe temporel. Sans eux, le diagramme ne dit plus ce qui se passe quand.
  • L'ordre est ce que la plupart des gens cherchent à communiquer, et c'est pourquoi le diagramme de séquence l'emporte presque toujours.
Un diagramme de communication UML du même passage en caisse. Un acteur Customer est relié à un objet OrderController par le message un, passer commande. Le contrôleur est relié à un objet Inventory par le message deux, reserve ; à un objet PaymentGateway par le message trois, charge ; et à un objet OrderRepo par le message quatre, save. Les quatre liens rayonnent depuis le contrôleur.
Le passage en caisse en diagramme de communication : la structure est immédiate, l'ordre vit dans les numéros.

01Une interaction, deux dessins#

Les deux diagrammes ci-dessous décrivent le même passage en caisse : un client passe commande, le contrôleur réserve du stock, débite une carte, enregistre la commande et répond. Rien du système ne diffère entre eux. Seul diffère l'axe sur lequel la notation dépense sa place.

Un diagramme de séquence UML d'un passage en caisse. Un acteur Customer appelle placeOrder sur l'OrderController. Le contrôleur appelle reserve sur Inventory et reçoit reserved, puis appelle charge sur le PaymentGateway et reçoit authorised, puis appelle save sur l'OrderRepo, et répond enfin une confirmation au client.
Le même passage en caisse en diagramme de séquence : l'ordre est l'axe vertical, et l'imbrication des appels se voit dans les barres d'activation.

Relisez la figure d'ouverture après celle-ci. Le diagramme de communication rend évident ce que le diagramme de séquence enfouit : chaque message passe par OrderController. Quatre liens rayonnent d'un seul noeud et aucun ne relie les autres entre eux, ce qui est la forme de la conception et non celle de l'exécution. Sur le diagramme de séquence, ce fait est étalé sur sept lignes et il faut le chercher.

Et l'inverse est tout aussi vrai. Sur le diagramme de séquence, vous voyez d'un coup d'oeil que la carte est débitée après la réservation du stock, et que la réponse de réservation revient avant que le débit ne parte. Sur le diagramme de communication, cet ordre est la différence entre les chiffres 2 et 3.

02Ce à quoi chacun consacre sa place#

Les deux notations sont définies en UML sur la même interaction sous-jacente : c'est donc un choix de présentation et non de modélisation. Ce qui découle de ce choix est assez constant pour être mis en tableau.

ÉlémentNotationCe que cela signifie
OrdreSéquenceOn lit vers le bas de la page, sans compter. Sur un diagramme de communication, on suit les numéros, ce qui est plus lent au-delà de six messages environ.
StructureCommunicationLes liens sont la mise en page, donc concentrateurs, chaînes et participants isolés se voient immédiatement. Un diagramme de séquence n'a pas de mise en page à lire.
ImbricationSéquenceLes barres d'activation montrent quel appel est encore sur la pile. Les diagrammes de communication l'expriment par une numérotation décimale - 2.1 dans 2 - plus difficile à parcourir.
Conditions et bouclesSéquenceLes fragments combinés (alt, opt, loop) encadrent une région du diagramme. Les diagrammes de communication n'ont que des gardes sur les étiquettes de message.
Nombre de participantsCommunicationUn diagramme de séquence manque de place horizontale au-delà de six ou sept lignes de vie. Un diagramme de communication les dispose en deux dimensions.
Être comprisSéquenceBien plus de gens savent en lire un sans qu'on le leur apprenne. Ce n'est pas une propriété de la notation, mais cela tranche la plupart des choix réels.

La même information, deux expériences de lecture très différentes.

03Choisir entre les deux#

La décision est plus simple si vous écrivez la phrase que le diagramme doit faire dire à quelqu'un. Si la phrase contient un ordre, vous voulez des lignes de vie. Si elle contient une forme, vous voulez des liens.

À utiliser quand

  • La séquence, quand l'enjeu est ce qui se passe avant quoi : protocoles, poignées de main, situations de concurrence.
  • La séquence, quand conditions et boucles font partie de l'histoire et qu'il vous faut des cadres alt ou loop.
  • La communication, quand l'enjeu est qui parle à qui : couplage, concentrateur, violation de couches.
  • La communication, quand il y a plus de participants qu'il n'en tient en lignes de vie sur une page.

Préférer autre chose quand

  • La communication, quand il faut d'abord enseigner la numérotation au public pour qu'il puisse lire.
  • La séquence, quand vous décrivez en fait une structure : c'est un diagramme de classes ou de composants.
  • Les deux, quand ni l'ordre ni la collaboration ne sont en question. La prose est plus courte.
  • Dessiner deux fois la même interaction en documentation. Gardez-en une ; un outil régénère l'autre.

En pratique, la plupart des équipes dessinent des diagrammes de séquence et lisent de temps en temps un diagramme de communication, ce qui est un équilibre raisonnable : l'ordre est en général ce que les gens cherchent à expliquer. Le seul endroit où le diagramme de communication paie franchement est une revue de conception sur le couplage, où quatre liens convergeant vers un noeud font l'argument plus vite que n'importe quelle liste de sites d'appel.

04Ce qu'il faut retenir#

En une ligne chacun

  1. 01Les deux notations décrivent la même interaction. Le choix porte sur ce qu'un lecteur remarque en premier.
  2. 02La séquence met l'ordre sur l'axe vertical ; la communication met la structure sur la page et numérote les messages.
  3. 03L'imbrication est une barre d'activation sur l'un et un nombre décimal sur l'autre.
  4. 04Seuls les diagrammes de séquence ont des cadres alt, opt et loop : les conditions sont la raison pour laquelle la plupart des équipes y restent.
  5. 05Diagramme de communication et diagramme de collaboration sont la même image sous les noms UML 2 et UML 1.

05Questions fréquentes#

Lequel vaut mieux, un diagramme de séquence ou de communication ?

Aucun ne vaut mieux : ils insistent sur des axes différents. Le diagramme de séquence rend l'ordre évident et la structure difficile à voir. Le diagramme de communication rend la forme de la collaboration évidente et l'ordre pénible à suivre. Choisissez la force qui répond à votre question.

Les diagrammes de séquence et de communication portent-ils la même information ?

Sémantiquement oui : tous deux décrivent une interaction, et UML les définit sur le même modèle, si bien qu'un outil peut générer l'un à partir de l'autre. Ce qui diffère, c'est ce qu'un humain remarque en premier, et c'est la seule raison d'avoir deux notations.

Pourquoi les diagrammes de communication numérotent-ils leurs messages ?

Parce qu'il n'y a pas d'axe temporel où lire l'ordre. C'est la numérotation qui le porte, et les numéros imbriqués comme 2.1 et 2.2 montrent quels appels ont lieu à l'intérieur de quels autres. Sans les numéros, le diagramme ne dit plus ce qui se passe quand.

Peut-on convertir un diagramme de séquence en diagramme de communication ?

Oui, et mécaniquement. Chaque ligne de vie devient un nœud, chaque message une étiquette numérotée sur le lien entre deux nœuds, et l'ordre de haut en bas devient la numérotation. Beaucoup d'outils convertissent dans les deux sens depuis une seule interaction stockée.

Pourquoi les diagrammes de communication sont-ils si peu utilisés ?

La plupart des gens cherchent justement à communiquer l'ordre, et le lire dans une suite de numéros est plus lent que de le lire de haut en bas. Le diagramme de communication l'emporte quand l'enjeu est qui parle à qui, pas dans quel ordre - une part plus petite des conversations réelles.

Dans cette série

À lire aussi

Tous les articles