Archyno
UMLRéférence de notation

Symboles du diagramme de composants

Toutes les marques qu'un diagramme de composants UML peut porter, et ce à quoi chacune vous engage : l'icône de prise, la sucette et la cavité, les connecteurs d'assemblage et de délégation, les ports et les quatre stéréotypes qui valent la peine.

7 min de lectureUML 2.5.120 sur 35

La réponse courte

  • Une sucette est une interface fournie, et une flèche de réalisation vers une boîte d'interface dit la même chose. Une forme par diagramme, jamais les deux.
  • La réalisation va de l'implémentation vers le contrat ; une dépendance à tête ouverte va dans l'autre sens. Même trait pointillé, affirmation inverse.
  • UML 1 remplaçait la boîte par un rectangle à deux languettes. UML 2 garde la boîte de classificateur et réduit cette icône dans le coin supérieur droit.
  • La cavité est l'autre moitié de la rotule : une interface requise. Un composant qui n'a que des sucettes n'a déclaré aucune dépendance.
Un seul composant UML nommé Pricing engine. À sa gauche, une flèche de réalisation pointe vers une interface IPricing qu'il fournit. À sa droite, une flèche de dépendance pointe vers une interface ITax qu'il requiert.
Toute la grammaire en une figure : un composant, à gauche le contrat qu'il fournit, à droite celui qu'il requiert. Tous les autres symboles de cette page sont des raccourcis pour une partie de cela.

01Le composant lui-même#

Deux formes circulent et toutes deux sont correctes, ce qui explique qu'un même système dessiné dans deux outils puisse ressembler à deux notations.

ÉlémentNotationCe que cela signifie
Composant (UML 2)boîte, petite icône de prise en haut à droiteUne boîte de classificateur ordinaire avec l'icône réduite dans le coin. Elle porte souvent le mot-clé «component» au-dessus du nom. C'est ce que dessinent par défaut les outils actuels.
Composant (UML 1)boîte avec deux languettes sur son bord gaucheLa forme plus ancienne, où l'icône est la forme. Encore fréquente dans les manuels et dans les diagrammes hérités des années 2000 ; sachez la reconnaître, ne la dessinez pas dans du travail neuf.
Sous-système«subsystem» sur un composantUn composant assez gros pour avoir ses propres parties. Cela ne vaut la peine de l'écrire que si le diagramme montre ce qu'il contient.
Artefact«artifact», page à coin pliéLe fichier physique sous lequel un composant est livré : un jar, une image, un bundle. Il relève d'un diagramme de déploiement, pas d'ici, sauf si le propos porte justement sur l'empaquetage.

02Interfaces fournies et requises#

Chaque composant a deux listes - ce qu'il fournit et ce qu'il requiert - et toute la notation consiste en façons d'écrire ces deux listes. Il y en a deux, et elles sont interchangeables.

ÉlémentNotationCe que cela signifie
Fournie (explicite)Trait pointillé, triangle creux, pointant vers l'interface. Le composant implémente ce contrat.
Fournie (sucette)un cercle au bout d'une courte tigeLa même affirmation, dessinée sur le bord du composant avec le nom de l'interface à côté du cercle. Compact, et c'est pourquoi la plupart des outils s'y tiennent par défaut.
Requise (explicite)Trait pointillé, pointe ouverte, dirigé vers l'interface. Étiqueté d'ordinaire «use». Le composant a besoin que quelqu'un satisfasse cela.
Requise (cupule)une demi-coupe au bout d'une courte tigeLa même affirmation sous forme compacte. Une cupule vide est une dépendance non satisfaite, et c'est une chose utile qu'un diagramme sache montrer.

Explicite ou abrégé, jamais les deux sur un même diagramme : un lecteur ne devrait pas avoir à vérifier si deux notations sur la même image veulent dire deux choses différentes.

03Connecteurs, ports et délégation#

Une frontière de sous-système Reporting contenant deux composants. Le composant Report API à l'intérieur réalise l'interface IReports publiée hors de la frontière et dépend d'une interface IQuery réalisée par le composant Query engine placé à côté.
Délégation par imbrication : le sous-système publie IReports, et c'est le Report API qui s'y trouve qui réalise réellement le contrat. IQuery est interne : un lecteur hors de la frontière n'a jamais besoin de savoir qu'il existe.

Dès que des composants en contiennent d'autres, deux marques de plus apparaissent. Un connecteur d'assemblage branche l'interface fournie d'un composant directement dans l'interface requise d'un autre - une boule posée dans une cupule, qui est le raccourci des deux flèches de la figure en tête d'article. Un connecteur de délégation va d'un port de la frontière externe à la partie interne qui l'honore.

ÉlémentNotationCe que cela signifie
Connecteur d'assemblageune boule reposant dans une cupuleUn composant satisfait le besoin d'un autre. La même affirmation qu'une réalisation plus une dépendance via une interface partagée, dans un tiers de la place.
Portpetit carré sur la frontièreUn point d'interaction distinct. À dessiner quand un composant a vraiment des surfaces séparées - une API publique et une API d'administration - et du bruit sinon.
Connecteur de délégationD'un port vers une partie interne : ce contrat externe est assuré par ce morceau-là. C'est ce qui rend l'intérieur d'un sous-système vérifiable par rapport à son extérieur.
Dépendance entre composantsLicite, et presque toujours un défaut : elle dit « dépend d'une certaine manière », ce flou même que le diagramme existe pour supprimer. Nommez plutôt l'interface.

L'imbrication est la troisième façon de dire « dedans », et celle que dessine cette série : les parties placées dans la frontière de leur propriétaire, comme ci-dessus. Elle ne demande aucun symbole supplémentaire et survit à un lecteur qui n'a jamais vu de connecteur de délégation, c'est-à-dire la plupart des lecteurs.

04Les stéréotypes qui valent la peine#

Un stéréotype entre guillemets étend le sens d'une boîte, et la tentation est d'inventer tout un vocabulaire. Quatre méritent leur place, parce que chacun change ce que le lecteur doit faire de la boîte :

  • «subsystem» - ceci a ses propres parties, et elles sont peut-être sur un autre diagramme.
  • «service» - ceci est déployé et joint par le réseau, donc son interface est un contrat sur le fil et son versionnement est le travail de quelqu'un.
  • «library» - ceci est lié à la compilation, pas appelé au travers d'une frontière : le modifier est une reconstruction, pas un déploiement.
  • «external» - ceci appartient à quelqu'un d'autre, donc son interface est une contrainte et non une décision.

Tout ce qui dépasse ces quatre-là est en général un profil déguisé. Si une équipe a réellement besoin d'un vocabulaire formel à elle - éléments marqués, éléments contraints, règles imposées par l'outil - c'est à cela que sert un profil UML, et l'écrire correctement coûte moins cher qu'une convention que la moitié de l'équipe suit.

05Là où les outils divergent#

Trois différences expliquent l'essentiel de la confusion quand un diagramme change d'outil, et aucune ne change le sens :

  1. Icône ou mot-clé. Certains outils dessinent l'icône de prise, d'autres écrivent «component», d'autres font les deux. Les trois sont le même composant UML 2.
  2. Des sucettes par défaut. La plupart des outils de dessin accrochent la boule et la cupule au bord du composant ; les outils de modélisation qui tiennent un référentiel tendent à dessiner l'interface comme un élément à part entière, parce qu'elle en est un.
  3. Des ports là où il n'y en a pas. Certains outils placent un petit carré à chaque point d'attache d'interface. Si le diagramme ne distingue jamais deux surfaces sur un composant, ces carrés ne portent aucune information.

En une ligne chacun

  1. 01Boîte avec une icône de prise dans le coin : le composant UML 2. Deux languettes sur le bord gauche : la forme UML 1.
  2. 02La réalisation - pointillée, triangle creux - va de l'implémenteur vers le contrat.
  3. 03La dépendance - pointillée, pointe ouverte - va du demandeur vers le contrat.
  4. 04La sucette est le fourni, la cupule le requis, la boule dans la cupule l'assemblage des deux.
  5. 05Un port est un point d'interaction distinct ; un connecteur de délégation le route vers une partie interne.
  6. 06Une flèche entre deux composants sans interface ne nomme rien : c'est le défaut à chercher.

Les symboles à l'œuvre sur de vrais systèmes sont dans les cinq exemples détaillés, et l'ordre dans lequel les poser est dans dessiner un diagramme de composants.

06Questions fréquentes#

Que signifie le symbole sucette en UML ?

Une sucette - un petit cercle au bout d'une tige - est une interface fournie : le composant auquel elle est accrochée implémente ce contrat. C'est la forme compacte d'une flèche de réalisation vers une boîte d'interface ; les deux disent la même chose, donc un diagramme choisit l'une ou l'autre.

Peut-on mêler sucettes et boîtes d'interface sur un diagramme ?

On peut, et cela coûte au lecteur sans rien apporter. Les deux formes disent exactement la même chose : deux notations sur une même image obligent à vérifier si l'écart signifie quelque chose. Prenez la forme compacte rotule et cavité quand la place manque, et des boîtes explicites quand ce sont les flèches que l'on discute.

Que signifie une flèche pointillée à triangle creux ?

C'est une réalisation, et sur un diagramme de composants elle va toujours de l'implémentation vers le contrat. Le composant à la base promet de satisfaire l'interface à la pointe. Une flèche pointillée à tête ouverte est l'autre versant de la même relation : une dépendance, le composant a besoin de ce contrat.

Le symbole du composant diffère-t-il entre UML 1 et UML 2 ?

Oui, et les deux se rencontrent encore. UML 1 remplaçait la boîte par un rectangle portant deux rectangles plus petits sur son bord gauche. UML 2 utilise une boîte de classificateur ordinaire avec cette icône réduite dans le coin supérieur droit, éventuellement avec le mot-clé «component» au-dessus du nom.

Dans cette série

À lire aussi

Tous les articles