C4 contre UML
La comparaison est posée comme un ou-bien et n'en est pas un : C4 dit quels diagrammes tracer, UML dit comment, et la réponse utile est le plus souvent les deux.
6 min de lectureC4 model3 sur 3
La réponse courte
- C4 est une convention sur ce qu'il faut dessiner à quatre niveaux de zoom. UML est une notation à la sémantique définie. Ils répondent à des questions différentes.
- Un diagramme de conteneurs C4 dessiné en notation de composants UML est à la fois un diagramme C4 correct et un diagramme UML légal.
- Choisissez UML quand le diagramme doit être précis ou échangé entre outils ; choisissez de simples boîtes C4 quand le public compte des gens qui ne lisent pas de notation.
- Le véritable échec n'est ni l'un ni l'autre : c'est un diagramme dont les boîtes signifient des choses différentes parce que personne n'a dit de quel niveau ni de quelle notation il s'agissait.
01Ce ne sont pas des choses de même nature#
La comparaison est généralement posée comme un choix, ce qui explique qu'elle produise rarement une réponse utile. L'un des deux est une convention sur les diagrammes qu'un système devrait avoir ; l'autre est un langage doté d'une sémantique définie pour les éléments et les relations. Les comparer ressemble davantage à comparer une table des matières avec une police de caractères qu'à comparer deux notations.
| Élément | Notation | Ce que cela signifie |
|---|---|---|
| C4 | Quatre niveaux, aucune forme prescrite | Dit quoi dessiner à chaque niveau de zoom et à qui cela s'adresse. Ne définit aucune sémantique d'élément, il n'y a donc rien à rater formellement. |
| UML 2.5.1 | Quatorze types de diagrammes, formes définies | Dit comment dessiner une structure ou un comportement, avec un métamodèle qui rend certains diagrammes légaux et d'autres invalides. Ne dit rien des diagrammes dont votre système a besoin. |
Cette différence est aussi la raison pour laquelle les deux se composent au lieu de se concurrencer. C4 laisse la notation ouverte ; UML est une notation. Combler l'un avec l'autre est l'usage prévu des deux.
02Dessiner un niveau C4 en UML#
La correspondance est assez directe pour que la plupart des équipes la fassent sans y penser. Un diagramme de contexte, ce sont des acteurs et des systèmes externes autour d'une frontière de sujet, c'est-à-dire exactement le cadre d'un diagramme de cas d'utilisation. Un diagramme de conteneurs, ce sont des composants UML avec des interfaces entre eux. Un diagramme de composants est la même notation un niveau plus bas.
Le bénéfice d'une vraie notation n'est pas esthétique. Un modèle UML s'exporte en XMI et peut être contrôlé quant à sa légalité ; un ensemble de rectangles ne peut ni l'un ni l'autre. Si le diagramme doit passer à une autre équipe, à un autre outil ou à un auditeur, cela compte. S'il finit sur une page de wiki pour des gens qui n'ouvriront jamais d'outil de modélisation, non.
03Ce que chacun laisse de côté#
C4 ne parle que de structure statique. Il n'existe pas de diagramme C4 pour une séquence de messages, une machine à états ou un processus métier : un système documenté uniquement en C4 a donc quatre images de ce qui existe et aucune de ce qui se passe. C'est la lacune que comblent les diagrammes de comportement d'UML, et elle est réelle : la plupart des incidents portent sur le comportement.
La lacune d'UML est l'inverse. Il vous donne quatorze types de diagrammes et aucune indication sur ceux dont votre système a besoin, d'où des équipes qui finissent avec un diagramme de classes de tout et aucune image du système dans son ensemble. Choisir un diagramme est une vraie compétence précisément parce que la spécification n'y aide pas. Les quatre niveaux de C4 sont une réponse toute faite pour la moitié structurelle.
En une ligne chacun
- 01C4 décide quels diagrammes existent ; UML décide ce que signifient les formes dessus.
- 02Un diagramme de conteneurs en notation de composants UML est correct dans les deux à la fois.
- 03Prenez UML là où la précision ou l'échange entre outils compte, de simples boîtes là où le public ne lit pas de notation.
- 04C4 n'a pas de diagrammes de comportement et UML pas d'avis sur la portée, et c'est pourquoi la plupart des équipes finissent par utiliser les deux.
04Questions fréquentes#
C4 est-il meilleur qu'UML ?
La question ne se tranche pas, parce que ce ne sont pas des choses de même nature. C4 prescrit quatre diagrammes et ce qui appartient à chacun ; UML prescrit des formes et leur signification. On peut suivre C4 et le dessiner en UML, suivre C4 avec de simples boîtes, ou utiliser UML sans aucune structure C4.
Peut-on dessiner un diagramme C4 en UML ?
Oui, et c'est souvent le meilleur choix. Un diagramme de conteneurs se projette proprement sur des composants UML avec interfaces, un diagramme de contexte sur des acteurs et une frontière de sujet. Le résultat est à la fois de l'UML légal et du C4 correct - et il s'exporte en XMI, ce que de simples boîtes ne feront jamais.
C4 remplace-t-il les types de diagrammes UML ?
Non. C4 couvre la structure statique à quatre niveaux de zoom et ne dit rien du comportement. Les diagrammes de séquence, d'états et d'activité n'ont pas d'équivalent C4 : un système documenté uniquement en C4 n'a aucune description de ce qui se passe réellement dans le temps.
Par quoi une nouvelle équipe doit-elle commencer ?
Par les niveaux 1 et 2 de C4, tracés dans ce que l'équipe sait déjà lire. La valeur du premier mois tient à l'accord sur ce dont le système est composé, et une querelle de notation à ce stade coûte plus qu'elle ne rapporte. La précision d'UML s'ajoute là où un diagramme se révèle en avoir besoin.
Dans cette série
- 01Qu'est-ce que C4 ?
- 02Diagramme de conteneurs
- 03C4 vs UML
À lire aussi
Fondamentaux
Diagrammes de structure
Fondamentaux
Fondamentaux
Pratique de la modélisation