# Modélisation C4

La modélisation C4 (de l'anglais « C4 model ») est une technique de notation graphique allégée pour la modélisation d'architectures logicielles$^,$. Elle est basée sur la décomposition structurelle d'un système en conteneurs et composants. La décomposition plus détaillée de ces éléments architecturaux peut alors s'appuyer sur des techniques de modélisation existantes telles que le langage de modélisation unifié (UML) ou les diagrammes entité-associations.

## Historique

La modélisation C4 a été créée par l'architecte logiciel Simon Brown entre 2006 et 2011 sur la base du langage de modélisation unifié (UML) et de l'approche de visualisation architecturale 4+1 du Kruchten. Le lancement d'un site officiel sous licence créative commune et un article publié en 2018 ont popularisé la technique émergente.

## Principes

La modélisation C4 documente l'architecture d'un système logiciel en utilisant l'approche des points de vue multiples. Ces points de vue permettent d'expliquer la décomposition d'un système en conteneurs puis en composants, les relations entre ces éléments, et, le cas échéant, les relations avec des éléments avec les utilisateurs.
Les points de vue sont groupés selon leur niveau hiérarchique$^,$:
* Diagrammes de contexte (niveau 1): ils montrent le système dont l'architecture est considérée dans son environnement, et présentent ses relations avec les utilisateurs et d'autres systèmes;
* Diagrammes de conteneurs (niveau 2): ils montrent la décomposition d'un système en conteneurs interdépendants. Un conteneur est à comprendre comme un sous-système exécutable qui peut être déployé de façon indépendante;
* Diagrammes de composants (niveau 3): ils montrent la décomposition des conteneurs en composants interdépendants et relient au besoin des composants à d'autres conteneurs ou à d'autres systèmes;
* Diagrammes de code (niveau 4): ils fournissent des détails supplémentaires sur la conception des éléments architecturaux qui peuvent être reliés aux codes source du logiciel. La modélisation C4 s'appuie à ce niveau de détail sur des notations existantes bien établies telles que UML (Unified Modeling Language), les modèles entité-association ou encore des diagrammes générés par environnements de développement intégrés (IDE).
Pour les niveaux 1 à 3, la modélisation C4 fait appel à 5 éléments de base dans les schémas: les personnes, les systèmes logiciels, les conteneurs, les composants et les relations.
La technique de modélisation n'est pas normative ni contraignante en ce qui concerne la représentation graphique, que ce soit pour la forme, la couleur ou le style des éléments. La modélisation C4 recommande d'utiliser des diagrammes simples basés sur des boîtes imbriquées, faciles à comprendre et permettant l'élaboration collaborative et interactive des modèles. La technique encourage également de bonnes pratiques de modélisation, comme par exemple l'indication d'un titre et d'une légende sur chaque diagramme, et le choix d'un vocabulaire clair et sans ambiguïté dans les étiquettes et annotations, afin de faciliter la compréhension par le public visé par chaque diagramme.
La modélisation C4 a été conçue pour permettre non seulement de simplifier la documentation de l'architecture, mais aussi de concevoir et visualiser de façon collaborative une architecture évolutive dans le contexte de projets agiles où des méthodes de documentation plus formelles et une conception architecturale en amont ne sont pas souhaitées.