Read in English · Leer en español · Auf Deutsch lesen
Section 4.7 sur 4.8 · Intermédiaire · 22 min de lecture
Diagrammes en tant que code et documentation à jour
Leçon vidéo
5 min · narré en anglais, avec sous-titresÉcouter seulement (audio)
Lire la transcription
La plupart des documentations d’architecture n’échouent pas parce qu’elles ont été mal écrites. Elles échouent parce qu’elles deviennent obsolètes. Dans cette leçon, vous allez voir comment l’écriture des diagrammes sous forme de texte, alliée à quelques habitudes simples, garde la documentation exacte pendant toute la vie d’un système.
Imaginez un livre de recettes de famille dans lequel chaque modification est notée au crayon par la personne qui cuisine, sans aucune trace de qui a changé quoi. Au bout de quelques années, plus personne ne s’y fie. Imaginez maintenant que les recettes sont dactylographiées, et que chaque modification est proposée, vérifiée par un second cuisinier, et datée. Et que le livre imprimé est réimprimé automatiquement après chaque modification approuvée. Les diagrammes en tant que code appliquent cette discipline aux diagrammes d’architecture.
Les diagrammes en tant que code, c’est écrire un diagramme sous forme d’un court fichier texte et laisser un outil le mettre en page et le dessiner. Au lieu de faire glisser des boîtes sur un canevas, vous écrivez quelque chose comme « ordering, flèche, base de données », et l’outil produit l’image. Pourquoi s’en donner la peine ? Un fichier texte a un historique : qui l’a modifié, quand et pourquoi. Et quand un développeur ajoute une nouvelle dépendance, la modification du diagramme apparaît dans la même pull request que le code, si bien que les relecteurs peuvent remettre en question la nouvelle flèche au moment où elle coûte le moins cher à changer.
Quatre langages dominent, et la section décrit la même plateforme de livraison de repas dans chacun d’eux. PlantUML, publié pour la première fois en 2009, couvre les diagrammes courants du langage de modélisation unifié, et ses diagrammes de séquence sont particulièrement réussis. Mermaid, apparu en 2014, s’affiche directement dans les fichiers Markdown sur GitHub et GitLab, si bien qu’un diagramme dans un fichier README ne demande aucune étape de build. Sa maîtrise de la mise en page des grands diagrammes est limitée. Le langage de Structurizr, créé par Simon Brown en parallèle de C4, est d’une autre nature. Il ne décrit pas un diagramme. Il décrit un modèle, puis en définit des vues. Et D2, publié en open source en 2022, vise un rendu net et moderne et une syntaxe lisible. Le compromis, avec tous ces langages : la mise en page automatique est pratique, mais parfois laide.
Voici pourquoi un modèle compte. À gauche, un seul fichier workspace. Chaque personne, chaque système et chaque conteneur y est défini une seule fois, avec son nom et sa technologie. À partir de ce modèle unique, l’outil génère les vues : contexte système, conteneurs, et déploiement pour chaque environnement. Chaque vue peut être exportée en images, en d’autres langages de diagrammes, ou en site de documentation avec les enregistrements de décision. Renommez donc le service Commandes une seule fois dans le modèle, et toutes les vues changent avec lui. Dans un outil de dessin, deux boîtes portant le même libellé n’ont aucun lien, et vous devez corriger chaque diagramme à la main.
Dès que la documentation est du texte dans le dépôt, elle peut suivre exactement le même flux de travail que le code. Vous la modifiez sur une branche, et elle est relue dans une pull request en même temps que la modification du code. Les vérifications d’intégration continue rendent alors chaque diagramme, et vérifient les liens. Un lien cassé, un diagramme invalide ou une date de revue dépassée fait échouer le build, et renvoie la modification au début. Une fois la fusion faite sur main, le site est reconstruit automatiquement. Personne n’a besoin de penser à exporter une image pour l’envoyer sur un wiki. Les lecteurs voient donc toujours la documentation qui correspond au code de main. Et quand ils ouvrent des tickets, ceux-ci lancent le changement suivant.
Ce ne sont pas les outils qui gardent la documentation exacte. Ce sont les habitudes. D’abord, chaque document a un responsable nommé, normalement l’équipe responsable du code. Les documents qui appartiennent à tout le monde ne sont maintenus par personne. Deuxièmement, relisez la documentation avec les modifications du code. Un modèle de pull request qui demande si une interface, une dépendance ou une décision a changé attrape la plupart des dérives au moment où elles se produisent. Troisièmement, donnez à chaque page une date de dernière revue. Une page qui indique « dernière revue : 2023 » est honnête. Une page qui décrit en silence le système de 2023 est un piège. Quatrièmement, créez des liens dans les deux sens : les pages pointent vers le code, et les commentaires du code pointent vers les enregistrements de décision. Et cinquièmement, supprimez ce qui est périmé, car une documentation fausse est pire que pas de documentation du tout. L’exception, ce sont les enregistrements de décision. Ils relèvent de l’histoire, ils sont donc remplacés, jamais supprimés.
Enfin, quelques erreurs courantes. Choisir un outil avant de décider quoi documenter : l’outil compte bien moins que la responsabilité et la relecture. Committer des images rendues sans leurs sources, si bien que les deux divergent. Et prendre les diagrammes en tant que code comme prétexte pour se passer de titres, de légendes et de libellés. Les règles de notation C4 s’appliquent toujours aux diagrammes générés.
La section complète montre la plateforme écrite dans les quatre langages, un exemple de pipeline et une liste de contrôle pour une documentation qui reste à jour. Ensuite, à la section quatre point huit, nous passons des documents aux personnes. À très vite.
Ce qu’il faut savoir
- Les diagrammes en tant que code consistent à écrire les diagrammes dans un langage textuel et à laisser un outil les dessiner, afin qu’ils puissent être versionnés, comparés (diff), relus dans des pull requests et rendus par le pipeline de build.
- PlantUML (2009) excelle en UML, en particulier pour les diagrammes de séquence ; Mermaid (2014) s’affiche directement dans le Markdown sur GitHub et GitLab ; D2 (2022) offre des mises en page soignées ; Structurizr DSL définit un seul modèle C4 à partir duquel de nombreuses vues sont générées.
- Les outils de dessin ne connaissent que des formes, si bien qu’un même élément peut diverger d’un diagramme à l’autre ; les outils de modélisation conservent les éléments et leurs relations dans un modèle, de sorte que toutes les vues restent cohérentes et que le modèle peut être interrogé et vérifié.
- Un pipeline de documentation en tant que code rend les diagrammes, vérifie les liens, construit le site de documentation à chaque pull request et publie depuis main, si bien que les lecteurs voient une documentation qui correspond au code.
- La documentation reste à jour grâce à des habitudes, pas à des outils : des responsables nommés, une relecture en même temps que les modifications du code, des dates de dernière revue, des liens entre la documentation, le code et les décisions, et la suppression des pages périmées (les ADR sont remplacés, pas supprimés).
Ce que signifient les diagrammes en tant que code
Les diagrammes en tant que code (diagrams as code) consistent à écrire un diagramme sous forme d’un court fichier texte, dans un petit langage, et à laisser un outil le mettre en page et le dessiner. Au lieu de faire glisser des boîtes sur un canevas, vous écrivez ordering -> db: SQL, et l’outil produit l’image. Le fichier texte vit dans le dépôt de code et il est traité comme du code : versionné, relu, vérifié par des builds automatisés et publié par le pipeline.
C’est une composante de la documentation en tant que code (docs as code), pratique défendue par la communauté Write the Docs, qui consiste à produire la documentation avec les mêmes outils et le même flux de travail que le logiciel : outils de suivi des tickets, gestion de versions (généralement Git), balisage en texte brut comme Markdown ou AsciiDoc, revue de code et tests automatisés. Les sections précédentes ont produit la matière : vues et diagrammes C4, UML là où la précision compte, ADR et structure arc42. Cette section porte sur la manière de garder cette matière exacte pendant toute la vie du système, et c’est là que la plupart des documentations d’architecture échouent. Les raisons de cet échec ont été exposées dans pourquoi documenter, et dans quelle mesure : des wikis périmés, de gros documents dont personne n’est responsable et des diagrammes qui ne correspondent plus au système.
Pourquoi mettre les diagrammes en texte
Gestion de versions. Un diagramme en texte a un historique. Vous pouvez voir qui l’a modifié, quand et pourquoi, et comparer deux versions quelconques ligne par ligne ; une image binaire ou un fichier au format d’un outil de dessin montre seulement que quelque chose a changé. Vous pouvez aussi créer une branche : le diagramme d’une modification proposée vit sur la même branche que le code qui la met en œuvre.
Relecture dans les pull requests. Quand un développeur ajoute une nouvelle dépendance entre des services, la modification du diagramme apparaît dans la même pull request que le code, sous forme de diff textuel lisible. Les relecteurs peuvent demander si la nouvelle flèche est voulue : c’est une revue d’architecture au moment où elle coûte le moins cher.
Cohérence. L’outil applique les mêmes formes, polices et règles de mise en page à chaque diagramme, si bien que des diagrammes dessinés par vingt personnes ressemblent toujours à un ensemble unique. Avec un langage de modélisation (voir plus bas), le même élément apparaît avec le même nom et la même description dans chaque vue.
Génération. Du texte peut être produit par des programmes. Les diagrammes peuvent être générés à partir du code lui-même (graphes de dépendances), de l’infrastructure en tant que code (diagrammes de déploiement), des spécifications d’API ou d’un modèle central, puis vérifiés automatiquement par rapport au système.
Les compromis sont réels. La mise en page automatique est pratique mais parfois laide, et lutter contre un moteur de mise en page pour placer une seule boîte peut prendre plus de temps que de la dessiner ; la plupart des outils proposent des indications, comme la direction ou le regroupement, pas des positions exactes. Les langages textuels demandent un apprentissage aux personnes qui ne codent pas, comme les product managers. Et un beau croquis au tableau blanc pendant une discussion de conception reste la manière la plus rapide de réfléchir ; les diagrammes en tant que code sont destinés aux diagrammes que vous comptez conserver.
Quatre langages, un exemple
Quatre langages dominent. Chaque exemple ci-dessous décrit une partie de la même plateforme de livraison de repas.
PlantUML, créé par Arnaud Roques et publié pour la première fois en 2009, est le plus ancien des quatre. Il couvre tous les diagrammes UML courants (séquence, composants, déploiement, états, activités, classes) et bien d’autres, et utilise Graphviz pour mettre en page la plupart des types de diagrammes. La bibliothèque C4-PlantUML ajoute les formes C4. Ses diagrammes de séquence sont particulièrement réussis, ce qui en fait un choix naturel pour les scénarios d’exécution de l’essentiel d’UML.
@startuml
title Place an order (happy path)
actor Customer
participant "Customer app" as App
participant "Ordering service" as Ord
participant "Payment provider" as Pay
queue "Order events topic" as MB
Customer -> App : Tap "Pay"
App -> Ord : POST /orders (HTTPS)
Ord -> Pay : Authorise payment
Pay --> Ord : Authorised
Ord ->> MB : OrderPlaced (async)
Ord --> App : 201 Created
@enduml->> dessine un message asynchrone et --> une réponseMermaid, créé par Knut Sveidqvist en 2014, est écrit en JavaScript et s’affiche dans le navigateur. Son principal atout est sa portée : GitHub affiche les blocs Mermaid dans les fichiers Markdown depuis février 2022, et GitLab ainsi que de nombreux wikis et outils de prise de notes font de même, si bien qu’un diagramme dans un README ne demande aucune étape de build. Il prend en charge, entre autres, les organigrammes et les diagrammes de séquence, de classes, d’états et entité-association, et propose une prise en charge expérimentale de C4. Sa maîtrise de la mise en page est limitée pour les grands diagrammes.
flowchart LR
app["Customer app<br/>Kotlin, Swift"]
gw["API gateway"]
ord["Ordering service<br/>Java"]
db[("Order database<br/>PostgreSQL")]
topic[["Order events<br/>Kafka topic"]]
disp["Dispatch service<br/>Go"]
notif["Notification service<br/>Node.js"]
app -->|HTTPS/JSON| gw
gw -->|HTTPS/JSON| ord
ord -->|SQL| db
ord -->|publishes OrderPlaced| topic
disp -->|consumes| topic
notif -->|consumes| topic[( )] dessine un cylindre de base de données et les libellés se placent sur les flèches ; le topic est dessiné comme un conteneur, comme le recommande la section 4.3Structurizr DSL, créé par Simon Brown en parallèle du modèle C4, est d’une autre nature. Il ne décrit pas un diagramme ; il décrit un modèle (personnes, systèmes logiciels, conteneurs, composants et relations entre eux), puis définit des vues de ce modèle. Chaque élément est défini une seule fois, avec son nom, sa description et sa technologie, et apparaît dans chaque vue qui l’inclut. Les relations entre conteneurs sont automatiquement déduites au niveau du système, si bien que la vue de contexte n’a pas besoin de flèches séparées. Le DSL peut aussi rattacher au workspace une documentation Markdown et un dossier d’ADR, et l’outillage peut exporter les vues vers PlantUML, Mermaid, D2 et d’autres formats.
workspace "Food delivery" {
model {
customer = person "Customer" "Orders food from local restaurants."
payments = softwareSystem "Payment provider" "Takes card payments." "External"
platform = softwareSystem "Food-delivery platform" {
app = container "Customer app" "Ordering and tracking." "Kotlin, Swift"
gateway = container "API gateway" "Authenticates and routes requests." "Managed API gateway"
ordering = container "Ordering service" "Accepts and tracks orders." "Java"
db = container "Order database" "Orders and their states." "PostgreSQL" "Database"
orderEvents = container "Order events" "Order lifecycle events." "Kafka topic" "Topic"
dispatch = container "Dispatch service" "Assigns couriers." "Go"
}
customer -> app "Places and tracks orders using"
app -> gateway "Makes API calls to" "JSON/HTTPS"
gateway -> ordering "Routes requests to" "JSON/HTTPS"
ordering -> db "Reads from and writes to" "SQL/TCP"
ordering -> payments "Takes card payments using" "JSON/HTTPS"
ordering -> orderEvents "Publishes order events to" "Kafka"
dispatch -> orderEvents "Consumes order events from" "Kafka"
}
views {
systemContext platform "Context" {
include *
autoLayout lr
}
container platform "Containers" {
include *
autoLayout lr
}
styles {
element "Database" {
shape cylinder
}
element "Topic" {
shape pipe
}
}
}
}D2 (Declarative Diagramming), publié en open source par Terrastruct en 2022, est le plus récent. Il vise un rendu net et moderne et une syntaxe lisible, prend en charge les conteneurs imbriqués (écrits avec des accolades et désignés par des noms à points), et offre le choix entre plusieurs moteurs de mise en page : dagre et ELK sont fournis et gratuits, et TALA, conçu pour les diagrammes d’architecture logicielle, est un moteur commercial distinct.
direction: right
customer: Customer {shape: person}
payments: Payment provider
platform: Food-delivery platform {
app: Customer app
ordering: Ordering service
db: Order database {shape: cylinder}
events: Order events topic {shape: queue}
dispatch: Dispatch service
app -> ordering: Places order (HTTPS)
ordering -> db: SQL
ordering -> events: Publishes OrderPlaced
dispatch -> events: Consumes OrderPlaced
}
customer -> platform.app: Places orders using
platform.ordering -> payments: Authorise (HTTPS)Comparaison des quatre
| PlantUML | Mermaid | Structurizr DSL | D2 | |
|---|---|---|---|---|
| Décrit | Un diagramme par fichier | Un diagramme par bloc | Un modèle et des vues de ce modèle | Un diagramme par fichier |
| Point fort | UML, en particulier les diagrammes de séquence | Diagrammes dans le Markdown, sans étape de build | Diagrammes C4 cohérents à plusieurs niveaux | Diagrammes d’architecture généraux et attrayants |
| Rendu | Outil ou serveur Java ; Graphviz pour la plupart des mises en page | Dans le navigateur ; natif sur GitHub et GitLab | Outils Structurizr ; exports vers d’autres formats | Outil en ligne de commande ; choix du moteur de mise en page |
| Points de vigilance | Aspect par défaut daté ; mise en page guidée seulement par des indications | Maîtrise limitée de la mise en page des grands diagrammes | Concepts C4 uniquement ; outillage spécifique nécessaire | Le meilleur moteur de mise en page est commercial |
Un modèle, de nombreuses vues
Outils de dessin et outils de modélisation
La différence entre Structurizr et les trois autres illustre la distinction entre outils de dessin et outils de modélisation présentée à la section 4.3. Un outil de dessin (diagrams.net, Excalidraw, Visio, un tableau blanc en ligne, mais aussi PlantUML, Mermaid et D2) connaît des formes, des lignes et du texte. Une boîte libellée Service Commandes
dans un diagramme n’a aucun lien avec la boîte portant le même libellé dans un autre. Renommez le service, et vous devez retrouver et corriger chaque diagramme à la main ; faites une seule faute de frappe, et vous avez, pour l’outil, deux services.
Un outil de modélisation (Structurizr, Archi pour les modèles ArchiMate, Sparx Enterprise Architect pour UML et SysML, Capella) conserve un modèle : un référentiel d’éléments et de relations dotés de propriétés. Les diagrammes sont des vues sur ce modèle. Renommez un élément, et toutes les vues changent. Le modèle peut être interrogé (quels conteneurs dépendent du broker ?
), vérifié (aucun composant de l’app client ne doit appeler la base de données
) et comparé au système en fonctionnement. Le prix à payer est davantage de structure en amont et, avec les outils commerciaux lourds, des licences, de la formation et une tendance à modéliser bien plus que ce que quiconque lit.
Une règle pratique : utilisez des outils de dessin, textuels ou graphiques, pour les croquis, les explications ponctuelles et les diagrammes autonomes, comme un diagramme de séquence isolé dans un ADR. Utilisez un modèle quand les mêmes éléments apparaissent dans de nombreux diagrammes, quand plusieurs équipes contribuent, ou quand vous voulez vérifier la documentation par rapport au code. Beaucoup d’équipes combinent les deux : un modèle Structurizr pour la structure C4, et PlantUML ou Mermaid pour quelques diagrammes de séquence et d’états.
Générer la documentation dans le pipeline
Dès que la documentation est du texte dans le dépôt, le pipeline d’intégration continue vu au chapitre 0 peut la construire et la vérifier comme du code. Un pipeline type rend chaque diagramme (en faisant échouer le build en cas d’erreur de syntaxe), vérifie les liens, construit un site de documentation statique avec un générateur comme MkDocs, Antora ou Docusaurus, et le publie quand les modifications arrivent sur la branche principale. Les lecteurs voient alors toujours la documentation qui correspond au code de main, et personne n’a besoin de penser à exporter une image pour l’envoyer sur un wiki.
D’autres vérifications peuvent s’ajouter à mesure que l’équipe gagne en maturité : un correcteur orthographique et un linter de rédaction (Vale est populaire), une vérification que chaque ADR a un statut valide, un avertissement quand la date de dernière revue
d’une page dépasse son intervalle de revue, et des vérifications d’architecture qui comparent les dépendances documentées avec les dépendances réelles du code, ce qui est une forme de fonction d’aptitude. Certaines équipes génèrent une partie de la documentation à partir du système lui-même : graphes de dépendances issus du build, référence d’API issue des spécifications OpenAPI, diagrammes de déploiement issus de l’infrastructure en tant que code.
name: architecture-docs
on:
pull_request:
paths: ["docs/**"]
push:
branches: [main]
jobs:
docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
# assumes plantuml, d2, lychee and mkdocs are available on the runner
- name: Render diagrams (fails on syntax errors)
run: |
plantuml -tsvg docs/diagrams/*.puml
for f in docs/diagrams/*.d2; do d2 "$f" "${f%.d2}.svg"; done
- name: Check links
run: lychee --offline docs/
- name: Build site (warnings such as broken links fail the build)
run: mkdocs build --strict
- name: Publish
if: github.ref == 'refs/heads/main'
run: ./scripts/publish-docs.shLe flux de travail de la documentation en tant que code
Garder la documentation à jour
Ce ne sont pas les outils qui gardent la documentation exacte, ce sont les habitudes. Cinq habitudes font la différence.
Responsabilité. Chaque document a un responsable nommé, normalement l’équipe responsable du code qu’il décrit. Dans GitHub et GitLab, un fichier CODEOWNERS peut faire de cette équipe un relecteur obligatoire pour les modifications de son dossier docs/. Les documents qui appartiennent à tout le monde
ne sont maintenus par personne.
Relecture avec les modifications du code. Un modèle de pull request qui demande Cette modification touche-t-elle une interface, une dépendance, un déploiement ou une décision ? Si oui, quel document ou quel ADR avez-vous mis à jour ?
attrape la plupart des dérives au moment où elles se produisent. Certaines équipes vont plus loin et bloquent la fusion des fonctionnalités dépourvues de documentation, une pratique que mentionne le guide de Write the Docs.
Dates de dernière revue. Un petit en-tête sur chaque page indique son responsable, la date de sa dernière vérification par rapport à la réalité et la fréquence à laquelle elle doit être revue. Les lecteurs peuvent juger dans quelle mesure s’y fier, et le pipeline peut signaler les pages en retard. Une page qui indique dernière revue : 2023
est honnête ; une page qui décrit en silence le système de 2023 est un piège.
Relier documentation et code. Les pages pointent vers le code qu’elles décrivent (chemins, modules), les commentaires du code pointent vers les ADR, et les messages de commit citent les enregistrements qu’ils mettent en œuvre. Des liens dans les deux sens rendent évident quels documents une modification peut affecter.
Supprimer ce qui est périmé. Une documentation fausse est pire que pas de documentation du tout, car les lecteurs agissent en fonction d’elle. Quand une page ne décrit plus le système et que personne ne la corrigera, supprimez-la ou déplacez-la dans une archive clairement signalée. Les ADR font exception : ce sont des traces de l’histoire, ils sont donc remplacés ou dépréciés, pas supprimés. C’est l’idée de documentation vivante que Cyrille Martraire a développée dans son livre de 2019 portant ce titre : une documentation qui évolue au même rythme que le système, idéalement parce qu’une grande partie en est dérivée du système lui-même.
---
title: "Ordering service: building block view (level 2)"
owner: "@ordering-team"
last_reviewed: 2026-09-14
review_every: 6 months
code: src/ordering/
decisions: [ADR-0007, ADR-0012]
---Liste de contrôle : une documentation qui reste à jour
Utilisez-la lors de la mise en place de la documentation d’architecture d’un dépôt, et revenez-y tous les quelques mois.
- La documentation vit dans le dépôt qu’elle décritPages Markdown ou AsciiDoc, sources des diagrammes et ADR dans
docs/, pas dans un wiki séparé que personne ne met à jour dans la même modification. - Les sources des diagrammes sont du texte et sont rendues par le pipelinePas d’images exportées à la main qui prennent discrètement du retard sur leurs sources ; le build échoue sur un diagramme invalide.
- Chaque élément est défini une seule fois là où les diagrammes se recoupentUtilisez un modèle (comme Structurizr DSL) quand les mêmes conteneurs apparaissent dans plusieurs diagrammes.
- Chaque page a un responsable et une date de dernière revueGaranti par
CODEOWNERSet par une vérification du pipeline qui avertit quand l’intervalle de revue est dépassé. - Les pull requests posent la question de la documentationLe modèle demande si une interface, une dépendance, un déploiement ou une décision a changé, et quel document a été mis à jour.
- Les liens sont vérifiés automatiquementLes liens internes cassés et les références à des fichiers supprimés font échouer le build.
- La documentation pointe vers le code et le code vers les décisionsDes chemins dans la documentation, des numéros d’ADR dans les commentaires du code et les messages de commit.
- Le site publié est reconstruit à partir de mainLes lecteurs voient toujours la version qui correspond au code déployé, sans étape de publication manuelle.
- Les pages périmées sont supprimées ou archivéesLes pages que personne ne corrigera sont retirées ; les ADR sont remplacés ou dépréciés, jamais supprimés.
- Au moins une vérification compare la documentation à la réalitéPar exemple, un test qui échoue si une dépendance apparaît dans le code sans que le diagramme de conteneurs la montre.
Vérifiez votre compréhension
Que peut voir un relecteur dans une pull request quand un diagramme est du code, et qu’il ne peut pas voir quand c’est une image exportée ?
Un diff lisible, ligne par ligne, de ce qui a changé, comme une nouvelle relation entre deux services, dans la même pull request que le code qui l’a introduite.
Pourquoi renommer un service demande-t-il plus de travail avec un outil de dessin qu’avec un outil de modélisation ?
Dans un outil de dessin, chaque diagramme contient sa propre copie du libellé, si bien qu’il faut retrouver et modifier chaque diagramme ; dans un outil de modélisation, l’élément est défini une seule fois et chaque vue reprend le nouveau nom.
Pourquoi faut-il supprimer la documentation périmée plutôt que la laisser en place, et quelle est l’exception ?
Les lecteurs agissent en fonction de ce qu’ils lisent, si bien qu’une documentation fausse entraîne de mauvaises décisions. Les ADR font exception : ils consignent l’histoire et sont plutôt marqués comme remplacés ou dépréciés.
Citez deux vérifications qu’un pipeline de documentation peut exécuter en plus du rendu des diagrammes.
La vérification des liens, le linting de la rédaction ou de l’orthographe, un build strict du site, un avertissement pour les dates de revue dépassées, et la comparaison des dépendances documentées avec celles du code.
Sources et lectures complémentaires
Une question sur cette section ? ArchitectBot, l’assistant d’étude IA du cours, répond d’abord à partir du cours.
Demander : « Nos diagrammes d’architecture sont dans un outil de dessin et ne sont jamais à jour. Comment passer aux diagrammes en tant que code sans empêcher les personnes qui ne sont pas développeurs de contribuer ? »