SFEIR
Concept

Modèle C4

Approche hiérarchique de visualisation d'architecture logicielle en quatre niveaux (contexte, conteneurs, composants, code), créée par Simon Brown.

Quatre niveaux de zoom sur un même système

Le modèle C4 décrit une architecture logicielle comme une carte que l'on zoome, en quatre niveaux d'abstraction : le contexte (le système dans son écosystème, utilisateurs et systèmes tiers), les conteneurs (applications, services, entrepôts de données et leurs technologies), les composants (l'intérieur d'un conteneur) et le code (classes et fonctions, niveau optionnel que l'on génère depuis l'outillage plutôt que de le dessiner à la main).

Créé par Simon Brown entre 2006 et 2011 sur les bases de l'UML et du modèle « 4+1 » de Kruchten, le C4 impose des règles de présentation strictes (chaque élément porte nom, nature, technologie et responsabilité ; chaque diagramme porte titre et légende) qui rendent les diagrammes non ambigus, donc vérifiables.

L'architecture as-code, langage commun humain-machine

L'implémentation moderne du C4 est textuelle : le Structurizr DSL déclare un modèle unique (éléments et relations) dont l'outil dérive toutes les vues de façon cohérente. Un modèle C4 exprimé en texte est diffable dans Git, validable en CI, et lisible comme productible par un LLM, dans les deux sens : générer un modèle depuis un brief, ou le régénérer depuis une base de code existante (rétro-ingénierie).

Un instrument de contrôle du SDLC à l'ère de l'IA

Quand les agents écrivent le code plus vite que les humains ne le lisent, le C4 change de statut : de documentation, il devient instrument de gouvernance. La boucle de contrôle architectural consiste à contraindre l'agent avec la carte voulue, à faire rediagrammer le code produit par un second agent, puis à confier à l'humain le diff visuel entre les deux cartes, là où son œil est supérieur à la relecture ligne à ligne.

Questions fréquentes

Que signifient les quatre C du modèle C4 ?

Context, Containers, Components, Code : quatre niveaux de zoom du plus macroscopique (le système dans son écosystème) au plus fin (les classes et fonctions). Chaque niveau détaille un élément du niveau précédent et s'adresse à un public différent.

Un « conteneur » C4 est-il un conteneur Docker ?

Non. Dans le C4, un conteneur désigne toute frontière d'exécution autonome : application web, API, schéma de base de données. Simon Brown utilisait le terme deux à trois ans avant que Docker n'adopte le même mot.

Pourquoi le modèle C4 redevient-il central avec l'IA générative ?

Parce qu'il fournit une représentation vérifiable de l'architecture : on peut demander à un agent de rediagrammer le code qu'un autre agent a généré, puis comparer visuellement l'architecture voulue et l'architecture réelle : un contrôle qui passe à l'échelle, contrairement à la relecture ligne à ligne.

Articles liés