Diagramme de contexte C4 : votre système et son environnement
Construisez le diagramme de contexte C4, niveau 1 : votre système au centre, ses utilisateurs, ses systèmes externes et des relations avec verbe et protocole.
L’issue s’ouvre déjà remplie avec le titre et l’adresse de cette page.
Le diagramme de contexte C4 montre votre système comme une seule boîte, au
milieu des personnes qui l'utilisent et des systèmes extérieurs avec lesquels
il échange. C'est le niveau 1 du modèle C4, celui que lisent aussi les
personnes non techniques : chef de projet, client, nouvel arrivant. Cette
leçon s'adresse à toute personne qui doit expliquer un système sans en
détailler l'intérieur. Vous apprendrez à trier ce qui y figure, à écrire des
relations lisibles, puis à construire votre propre contexte en cinq étapes.
Le diagramme de contexte répond à une seule question : qui utilise mon
système, et avec quels autres systèmes échange-t-il ? Selon c4model.com, son
périmètre (le scope, ce que le diagramme dessine) est un seul système
logiciel. Autour de lui, les éléments de support sont les personnes et
les systèmes externes directement liés à lui.
Son public est « tout le monde », technique ou non, et c4model.com le
recommande à toutes les équipes. D'où sa sobriété : le site résume
l'esprit du niveau par « Detail isn't important here » et précise que « The
focus should be on people (actors, roles, personas, etc) and software systems rather than
technologies, protocols and other low-level details ».
C'est aussi le diagramme qui vieillit le plus lentement. La FAQ de
c4model.com indique qu'il change très lentement, là où les conteneurs changent
lentement, les composants souvent et le code très vite. Il reste juste tant que
vous n'ajoutez pas un partenaire ou un nouveau type d'utilisateur : peu
d'effort d'écriture, longue durée de vie.
Le contexte de la boutique en ligne, le fil rouge (l'exemple unique
repris à chaque niveau) du module, tient en cinq boîtes : deux personnes, le
système modélisé et deux systèmes externes, c'est-à-dire des systèmes que
d'autres équipes développent et dont vous dépendez. Les conteneurs de la
boutique sont ouverts dans la leçon Diagramme de conteneurs
C4.
Regardez d'abord la boîte mise en avant au centre, puis les deux boîtes
atténuées : vous les connaissez par leur rôle, pas par leur contenu. Lisez
ensuite chaque flèche : elle porte un verbe et, entre parenthèses, le
protocole, la convention de communication entre les deux parties.
Niveau 1 de la boutique en ligne : une seule boîte pour le système, aucune technologie interne.Source · SVG
Le Client et le Gestionnaire de boutique sont les deux personnes. Le
Client « Consulte le catalogue et commande » et le Gestionnaire « Gère le
catalogue et les stocks », tous deux en HTTPS (le protocole du web
chiffré). La boutique « Débite la carte » auprès du Service de paiement en
JSON/HTTPS (des messages au format JSON portés par HTTPS) et « Envoie les
e-mails de commande » au Service de mail en SMTP, le protocole d'envoi
de courrier électronique.
Remarquez ce qui n'y est pas : ni la base de données, ni Node.js,
ni les serveurs. Ce sont des choix internes à la boutique. Les montrer
obligerait le chef de projet à lire des détails qui ne l'aident pas, et ferait
changer le diagramme à chaque migration technique. La base et Node.js
apparaissent au niveau conteneurs, les serveurs au diagramme de déploiement.
Un élément entre au contexte s'il s'agit d'une personne qui utilise le
système ou d'un système externe que vous ne développez pas et qui échange
avec lui. Tout le reste en sort : ce qui appartient à votre système se montre
au niveau conteneurs, et les détails techniques au niveau conteneurs ou au
déploiement.
L'arbre ci-dessous se lit de haut en bas : posez la question du haut à
chaque élément candidat et suivez la branche qui correspond. Les
feuilles disent où l'élément doit finir, y compris « hors du diagramme »
lorsqu'il n'a sa place nulle part.
Arbre de décision pour le contexte : une personne qui utilise le système entre au contexte ; un système que vous ne développez pas et qui échange avec le vôtre entre comme système externe ; une base de données, une application ou un service qui fait partie de votre système va au niveau conteneurs ; un serveur, une technologie ou un protocole va aux conteneurs ou au déploiement ; le reste reste hors du diagramme.Une personne qui utilisele système ?Oui, au contexte :une personneouiUn système que vous ne développezpas et qui échange avec le vôtre ?nonOui, au contexte :un système externeouiUne base, une application ouun service DE votre système ?nonNon : c'est un conteneur,il attend le niveau suivantouiUn serveur, une technologie,un protocole ?nonNon : niveau conteneursou déploiementouiNon : il n'a rien à fairesur ce diagrammenon
Où placer un élément candidat : contexte, conteneurs, déploiement ou nulle part.Source · SVG
Trois repères évitent la plupart des hésitations :
La base de données de la maison est un conteneur, pas un système
externe : si votre équipe la développe, l'exploite ou la déploie avec la
boutique, elle fait partie du système.
Un système externe est un système que vous ne développez pas : un
service de paiement, un annuaire d'entreprise, un fournisseur de courrier.
Même s'il appartient à votre entreprise, vous n'en maîtrisez pas l'intérieur.
Préférez un rôle à un prénom. « Client » ou « Gestionnaire de boutique »
plutôt que « Camille » : un rôle survit aux départs et aux embauches.
Le contexte est aussi l'endroit naturel pour repérer une frontière de
confiance, la limite entre ce que vous contrôlez et ce que vous ne
contrôlez pas. Le guide de modélisation des menacesThreat modeling avec
STRIDE montre comment
l'exploiter.
Une bonne relation tient en une flèche, un sens et un verbe. Selon
c4model.com, chaque ligne est unidirectionnelle et étiquetée, et
l'étiquette « Uses » seule est à éviter, comme le rappelle la leçon Modèle
C4. Au contexte, le protocole est un
conseil de cette leçon, pas une règle du modèle : gardez-le discret, et
omettez-le s'il est inconnu.
Le verbe doit décrire l'intention. La FAQ de c4model.com précise qu'une
ligne peut représenter une dépendance ou un flux de données, au choix,
à condition que la description corresponde au sens de la flèche. Gardez le
même choix dans tout le diagramme, c'est le conseil de cette leçon.
Prenons le trait entre la boutique et le service de paiement. En
dépendance, la flèche part de la boutique et dit « Débite la carte » : la
boutique dépend du service. En flux de données, elle dit « Envoie les
paiements à » : la donnée circule dans le même sens. À éviter dans les deux
cas : « Paiements » sans verbe, ou « Reçoit » sur une flèche qui pointe
vers le service.
Pour deux échanges en sens inverse, tracez deux flèches, chacune avec son
verbe, plutôt qu'une flèche à deux pointes dont le sens reste ambigu.
Comment construire votre diagramme de contexte en cinq étapes ?
On construit un contexte en cinq étapes, dans cet ordre : nommer le
système, lister les rôles, lister les systèmes externes, écrire les
relations, puis titrer et relire. Chaque étape produit une liste courte.
Nommez le système et sa responsabilité. Une phrase : « Boutique en
ligne : vend le catalogue et encaisse les commandes ». Si vous n'arrivez
pas à la formuler, le périmètre est flou.
Listez les rôles. Qui utilise ce système : clients, gestionnaires,
administrateurs ? Un rôle par type d'usage.
Listez les systèmes externes. De quels systèmes que vous ne
développez pas dépend le vôtre, ou lesquels dépendent de lui ?
Écrivez les relations. Une flèche par échange, avec un verbe et, s'il
est connu, le protocole. Vérifiez que le sens de la flèche colle au verbe.
Ajoutez un titre et une légende, puis relisez. Le titre dit le type et
le périmètre : « Diagramme de contexte du système Boutique en ligne ». La
légende explique les formes et les couleurs.
La relecture s'appuie sur la checklist de c4model.com. Quatre de ses
questions suffisent à ce niveau : « Does the diagram have a title? »,
« Do you understand what the diagram scope is? », « Does every element have a
name? » et « Does every arrow have a label describing the intent of that
relationship? ». Faites-les passer à une personne qui ne connaît pas le
système : si elle hésite, c'est le diagramme qu'il faut corriger, pas son
lecteur.
Pour dessiner la liste ou l'écrire en texte et la versionner, la leçon
Diagrammes as code le fait en
Mermaid et en D2. Ajoutez un texte alternatif qui décrit le
diagramme en phrases, comme l'explique la leçon Montrer : captures et texte
alternatif.
Exercice guidé : le contexte d'un outil de réservation de salles
Cet exercice vous fait appliquer les cinq étapes à un cas neuf, que la
leçon Diagramme de conteneurs C4
ouvre ensuite. Lisez la consigne, construisez votre propre liste, puis
comparez avec le corrigé.
Consigne. Une entreprise développe un outil de réservation de salles.
Un salarié y réserve une salle. Un gestionnaire des locaux crée et gère les
salles. L'outil lit l'annuaire d'entreprise, un système existant qui
contient les comptes, pour authentifier les salariés. Il envoie les invitations
et les rappels au service de calendrier de l'entreprise, un autre système
existant.
Le corrigé compte cinq éléments : deux personnes, le système et deux systèmes
externes.
Élément
Type
Description
Salarié
personne
Cherche une salle libre et la réserve
Gestionnaire des locaux
personne
Crée les salles et gère leur disponibilité
Outil de réservation de salles
système logiciel
Propose les salles libres et enregistre les réservations
Annuaire d'entreprise
système externe
Garde les comptes des salariés
Service de calendrier
système externe
Gère les agendas et envoie les invitations
Glissez pour voir
Il compte quatre relations, chacune avec son sens :
Salarié vers l'outil : « Réserve une salle » (HTTPS).
Gestionnaire des locaux vers l'outil : « Gère les salles » (HTTPS).
Outil vers l'annuaire : « Lit les comptes » (LDAP).
Outil vers le service de calendrier : « Envoie les invitations et les
rappels » (JSON/HTTPS).
Le schéma ci-dessous dessine ce corrigé. Comparez-le à votre liste : l'outil
est la seule boîte mise en avant, les deux systèmes de l'entreprise sont
atténués comme n'importe quel externe, et chaque flèche porte son verbe
et son protocole dans un seul sens.
Contexte de l'outil de réservation de salles : le Salarié réserve une salle et le Gestionnaire des locaux gère les salles, tous deux en HTTPS, vers l'outil au centre, qui lit les comptes dans l'Annuaire d'entreprise en LDAP et envoie les invitations et les rappels au Service de calendrier en JSON/HTTPS.Salarié[Personne]Réserve une salle pourune réunionGestionnaire des locaux[Personne]Crée et modifie les sallesOutil de réservation de salles[Système logiciel]Permet de réserver une salleet d'inviter les participantsAnnuaire d'entreprise[Système externe]Garde les comptes des salariésService de calendrier[Système externe]Tient les agendas des salariésRéserve une salle(HTTPS)Gère les salles(HTTPS)Lit les comptes (LDAP)Envoie les invitations et les rappels (JSON/HTTPS)
Corrigé de l'exercice : cinq boîtes, quatre relations, aucune technologie interne.Source · SVG
Ces protocoles sont des choix d'exemple, repris tels quels au niveau
conteneurs. LDAP (Lightweight Directory Access Protocol) est le
protocole d'accès aux annuaires. Si vous ignorez celui de votre annuaire,
laissez-le de côté : le contexte n'en a pas besoin.
Trois points de vérification avant de passer au niveau conteneurs :
L'outil est une seule boîte : aucune base de données ni application
web n'apparaît.
L'annuaire et le calendrier sont des systèmes externes, bien qu'ils
appartiennent à la même entreprise.
Chaque flèche porte un verbe et un seul sens ; aucune ne se contente
de « Utilise ».
Les erreurs de contexte viennent presque toujours d'un excès de détail
ou d'un manque de précision sur les flèches. Le tableau relie chaque erreur
à sa raison et à sa correction.
Erreur
Pourquoi c'est un problème
Correction
La base de données au contexte
Elle appartient au système : c'est un conteneur
La retirer du contexte, la montrer au niveau conteneurs
Des technologies dans les boîtes (Node.js, PostgreSQL)
Le lecteur non technique décroche, le diagramme change à chaque migration
Garder le rôle, reporter la technologie au niveau suivant
Des flèches sans verbe
Le lecteur doit deviner ce qui circule
Écrire un verbe qui dit l'intention
Deux sens sur une flèche
Impossible de savoir qui appelle qui
Deux flèches, chacune avec son verbe
Pas de titre ni de légende
On ne sait ni le type de diagramme ni son périmètre
Titrer « Diagramme de contexte de … » et ajouter une légende
Trop de systèmes externes
Le système principal disparaît dans le décor
Ne garder que les systèmes directement liés ; le reste va dans une vue paysage
Le diagramme de contexte est le niveau 1 du modèle C4 : un système,
vu de l'extérieur, lisible par tous.
Il montre le système au centre, les personnes qui l'utilisent et
les systèmes externes directement liés.
Selon c4model.com, « Detail isn't important here » : les technologies et
les protocoles internes attendent le niveau conteneurs.
Une personne est un rôle ; un système externe est un système que
vous ne développez pas ; la base de données de la maison est un conteneur.
Une relation a un sens, un verbe précis et, si utile, un protocole entre
parenthèses ; on évite « Uses ».
Les cinq étapes : nommer le système, lister les rôles, lister les externes,
écrire les relations, titrer et relire avec la checklist.
Selon la FAQ de c4model.com, le contexte change très lentement : c'est
le diagramme le moins coûteux à garder à jour.
Contrôle de connaissances
Validez vos connaissances avec ce quiz interactif
6 questions
6 min.
70% requis
Informations
Le chronomètre démarre au clic sur Démarrer
Questions à choix multiples, vrai/faux et réponses courtes
Vous pouvez naviguer entre les questions
Les résultats détaillés sont affichés à la fin
Lance le quiz et démarre le chronomètre
⏱️--:--
0 / 6
Vérification
(0/0)
--:--
0%
0Correctes
0À revoir
0:00Temps
-Niveau
Score par domaine
Un domaine regroupe plusieurs guides et reçoit plusieurs questions : son score est plus fiable qu'un score par thème, qui porte souvent sur une seule question.
Bilan
Points forts
Aucun sujet réussi à 80 % sur au moins deux questions pour l’instant.