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
- Zoom in/out : navigation entre les niveaux
- Notation minimale : boîtes, flèches, libellés
- Priorité à la communication : compréhensible par tous
- Versionnable : texte (DSL ou Mermaid)
- É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ément | Description | Notation |
|---|---|---|
| Personne | Utilisateur humain | [Personne] |
| Software System | Système logiciel | [Software System] |
| External System | Système externe | [External System] |
| Relation | Interaction | flè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ément | Description | Notation |
|---|---|---|
| Application | Service applicatif | [Container : Technologie] |
| Database | Base de données | (Container : SGBD) |
| Message Queue | File de messages | [Container : Technologie] |
| External | Systè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ément | Description |
|---|---|
| Controller | Point d'entrée API |
| Service | Logique métier |
| Repository | Accès aux données |
| Component | Module interne |
| Interface | Contrat 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
- Commencez par le contexte : toujours niveau 1 d'abord
- Un niveau à la fois : ne mélangez pas les niveaux
- Libellés parlants :
[Container : Spring Boot]pas[App] - Relations explicites : toujours libeller les flèches
- Pas de flèches croisées : réorganisez pour la clarté
- Couleurs limitées : une couleur par type
- Versionnez : gardez les diagrammes dans Git
Outils
| Outil | Type | Prix | C4 Natif |
|---|---|---|---|
| Structurizr | DSL | Freemium | Oui |
| Mermaid | Code | Gratuit | Partiel |
| PlantUML C4 | Code | Gratuit | Oui |
| draw.io | Visuel | Gratuit | Non (template) |
| LucidChart | Visuel | Payant | Oui (template) |
Résumé
Diagramme en cours de génération...
Pour aller plus loin
- Site officiel : https://c4model.com
- "Software Architecture for Developers" - Simon Brown
- Structurizr : https://structurizr.com