MFormations
Modern Information Systems Engineering

Chapitre 6

06-C4 Model

06-C4 Model

Cours 06 : C4 Model

1. Introduction au C4 Model

Origine

Le C4 Model a été créé par Simon Brown (2011) pour répondre à un problème récurrent : comment communiquer l'architecture logicielle de manière simple et progressive ?

Diagramme en cours de génération...

Le problème

Les diagrammes d'architecture traditionnels sont souvent :

  • Trop détaillés pour les parties prenantes métier
  • Pas assez détaillés pour les développeurs
  • Mélangent différents niveaux d'abstraction
  • Deviennent rapidement obsolètes

La solution C4

Le C4 Model propose 4 niveaux d'abstraction progressifs, du global au détail :

Diagramme en cours de génération...

Principes clés

  1. Zoom in/out : navigation entre les niveaux
  2. Notation minimale : boîtes, flèches, libellés
  3. Priorité à la communication : compréhensible par tous
  4. Versionnable : texte (DSL ou Mermaid)
  5. Évolutif : facile à mettre à jour

2. Niveau 1 : System Context

Définition

Le diagramme de Contexte montre le système logiciel dans son environnement, avec les utilisateurs et les systèmes externes.

Diagramme en cours de génération...

Éléments

ÉlémentDescriptionNotation
PersonneUtilisateur humain[Personne]
Software SystemSystème logiciel[Software System]
External SystemSystème externe[External System]
RelationInteractionflèche avec libellé

Règles

  • Une seule boîte pour le système logiciel (boîte noire)
  • Les acteurs et systèmes externes autour
  • Relations libellées avec le flux d'information
  • Pas de technologie, pas de détail technique

Exemple : Banque en ligne

Diagramme en cours de génération...

3. Niveau 2 : Container

Définition

Le diagramme de Conteneurs montre les applications, services, bases de données et files de messages qui composent le système.

Diagramme en cours de génération...

Éléments

ÉlémentDescriptionNotation
ApplicationService applicatif[Container : Technologie]
DatabaseBase de données(Container : SGBD)
Message QueueFile de messages[Container : Technologie]
ExternalSystème externe[Container : External]

Technologies courantes

  • Applications : Spring Boot, Node.js, Go, Python, .NET
  • Frontend : React, Angular, Vue.js
  • Bases : PostgreSQL, MySQL, MongoDB, Redis
  • Queue : Kafka, RabbitMQ, SQS
  • Cache : Redis, Memcached

Exemple : Microservices

Diagramme en cours de génération...

4. Niveau 3 : Component

Définition

Le diagramme de Composants montre les composants internes d'un conteneur et leurs relations.

Diagramme en cours de génération...

Éléments

ÉlémentDescription
ControllerPoint d'entrée API
ServiceLogique métier
RepositoryAccès aux données
ComponentModule interne
InterfaceContrat entre composants

Règles

  • Un diagramme par conteneur (ou par domaine)
  • Compos = classes significatives (pas toutes)
  • Relations = appels de méthodes, événements
  • Technologies optionnelles

5. Niveau 4 : Code

Définition

Le diagramme de Code (optionnel) montre le détail d'un composant spécifique via un diagramme de Classes UML.

Diagramme en cours de génération...

Quand l'utiliser ?

  • Composants critiques (paiement, sécurité)
  • Composants complexes (algorithmes)
  • Documentation de bibliothèque/framework
  • Génération de code automatique

6. Bonnes pratiques et conventions

Convention de nommage

Diagramme en cours de génération...

Conseils

  1. Commencez par le contexte : toujours niveau 1 d'abord
  2. Un niveau à la fois : ne mélangez pas les niveaux
  3. Libellés parlants : [Container : Spring Boot] pas [App]
  4. Relations explicites : toujours libeller les flèches
  5. Pas de flèches croisées : réorganisez pour la clarté
  6. Couleurs limitées : une couleur par type
  7. Versionnez : gardez les diagrammes dans Git

Outils

OutilTypePrixC4 Natif
StructurizrDSLFreemiumOui
MermaidCodeGratuitPartiel
PlantUML C4CodeGratuitOui
draw.ioVisuelGratuitNon (template)
LucidChartVisuelPayantOui (template)

Résumé

Diagramme en cours de génération...

Pour aller plus loin