Be Software Architecture Wise
Be Wise Apps

Read in English · Leer en español · Auf Deutsch lesen

Chapitre 4 sur 12 · Intermédiaire

Documenter et communiquer l’architecture

Ce chapitre montre comment décrire et communiquer une architecture logicielle pour que les bonnes personnes la comprennent et que la description reste fidèle. Il traite des destinataires de la documentation et de la quantité à écrire, des vues et des points de vue de l’ISO/IEC/IEEE 42010, du modèle 4+1 et de Rozanski et Woods, du modèle C4, des diagrammes UML que les architectes utilisent encore, des enregistrements de décision d’architecture (ADR), d’arc42, des diagrammes en tant que code et de la présentation de l’architecture à différents publics. Il est pratique de bout en bout, s’appuie sur une même plateforme de livraison de repas comme exemple fil rouge, et s’adresse aux développeurs, aux architectes et aux responsables techniques.

Introduction vidéo au chapitre 4

6 min · narré en anglais, avec sous-titres
Écouter seulement (audio)
Lire la transcription

Bienvenue dans le chapitre 4 : Documenter et communiquer l’architecture. Ce chapitre montre comment décrire une architecture logicielle pour que les bonnes personnes la comprennent, et pour que la description reste fidèle. Il est pratique de bout en bout, et il s’appuie sur une même plateforme de livraison de repas comme exemple fil rouge, pour que vous puissiez comparer chaque technique sur le même système.

Une architecture qui n’existe que dans la tête de quelques personnes est fragile. Personne en dehors de la salle ne peut la revoir, le prochain ingénieur qui arrive ne peut pas l’apprendre, un auditeur ne peut pas la vérifier, et elle part avec les personnes qui la détiennent. Il est facile de se tromper dans les deux sens avec la documentation. Les équipes qui écrivent trop peu perdent les raisons de leur structure, et refont sans cesse les mêmes débats. Les équipes qui écrivent trop produisent des wikis auxquels personne ne se fie. Le principe directeur du chapitre est donc simple : écrire pour le lecteur. Décidez qui utilisera chaque élément de documentation et ce dont il a besoin, écrivez cela de façon brève et exacte, et n’écrivez rien d’autre.

Le chapitre s’adresse aux développeurs, aux architectes et aux responsables techniques. Il s’appuie sur les chapitres 1 à 3 : les décisions et les structures qu’il faut maintenant décrire. Les sections un point cinq, sur les parties prenantes et les préoccupations, et un point six, sur les décisions et les compromis, sont des bases particulièrement utiles. Et il prépare le chapitre 5, qui ouvre le catalogue des styles architecturaux, décrits avec les outils que vous apprenez ici.

Le chapitre compte huit sections. La section quatre point un se demande à qui s’adresse la documentation, et comment décider de ce qui mérite d’être écrit. La réponse courte : écrivez à la main ce que le code ne peut pas vous dire, et générez ce que le code indique déjà. La section quatre point deux présente l’idée centrale selon laquelle un seul diagramme ne suffit jamais. Une architecture se décrit au moyen de plusieurs vues, chacune répondant aux préoccupations de parties prenantes précises. La section quatre point trois transforme cela en l’approche pratique la plus utilisée, le modèle C4 de Simon Brown, avec quatre niveaux de zoom et un petit ensemble de règles de notation qui rendent les diagrammes compréhensibles par eux-mêmes. La section quatre point quatre couvre les parties du langage de modélisation unifié, ou UML, que les architectes utilisent encore, comme les diagrammes de séquence et d’états-transitions, et explique quand leur précision vaut l’effort.

Ce diagramme de la section quatre point un vous aide à décider comment documenter n’importe quelle information. L’axe vertical demande si elle peut être retrouvée à partir du code. L’axe du bas demande à quelle fréquence elle change. En haut à gauche : ce que le code ne peut pas vous dire, et qui change rarement. Le contexte et la portée, les objectifs de qualité, et les décisions avec leurs raisons. Écrivez-les à la main, et conservez-les. En haut à droite : ce qui change plus souvent, comme les vues de conteneurs et de déploiement. Gardez-les à côté du code, et revoyez-les à chaque changement. En bas à droite : ce que le code indique déjà, et qui change souvent, comme les diagrammes de classes et les références d’API. Générez-les dans le pipeline. Ne les écrivez jamais à la main. Et en bas à gauche : ce qu’on peut lire dans le code et qui change rarement, comme la pile technologique ou les commandes de build. Un bref renvoi dans un fichier README suffit.

Voici le premier niveau du modèle C4, tiré de la section quatre point trois : un diagramme de contexte système pour la plateforme de livraison de repas. En haut figurent les trois types de personnes qui l’utilisent : les clients, le personnel des restaurants et les livreurs. Chaque flèche porte une étiquette qui dit ce qu’ils font. Au milieu se trouve la plateforme elle-même, représentée par une seule boîte. Elle prend les commandes, encaisse les paiements, affecte les livreurs et tient tout le monde informé. En dessous figurent les systèmes externes dont elle dépend : un prestataire de paiement, un service de cartographie et des services de notifications push. À ce niveau, il n’y a ni technologies ni protocoles. Ils arrivent au niveau de zoom suivant, celui des conteneurs. Et remarquez la légende. Chaque diagramme C4 a un titre et une légende, pour être compréhensible par lui-même.

Les diagrammes montrent la structure, mais ils montrent rarement le pourquoi. La section quatre point cinq traite des enregistrements de décision d’architecture, ou ADR : des enregistrements courts et datés, d’une décision chacun, avec un enregistrement complet commenté pour la plateforme de livraison. La section quatre point six montre comment un modèle de documentation comme arc42 donne à l’ensemble de la description une organisation standard, pour que les auteurs sachent quoi couvrir et les lecteurs où chercher. La section quatre point sept s’attaque au problème qui met en échec la plupart des documentations : leur obsolescence. Elle couvre l’écriture de diagrammes sous forme de texte, la publication de la documentation depuis le pipeline de build, et les habitudes de responsabilité qui la maintiennent fidèle. La section quatre point huit passe des documents aux personnes : adapter le message aux dirigeants, aux développeurs, à l’exploitation, aux équipes de sécurité et aux auditeurs, expliquer les compromis, et construire un consensus quand les avis divergent.

Chaque technique de ce chapitre sert un seul objectif : une compréhension partagée et exacte du système entre les personnes qui le construisent, l’exploitent, le financent et en dépendent. Une documentation réduite, à jour, dotée d’un responsable et placée à côté du code vaut mieux qu’un document exhaustif auquel personne ne se fie. Si vous ne retenez qu’une question de ce chapitre, que ce soit celle-ci : qui va lire ceci, et qu’en fera-t-il ?

Vous pouvez lire les sections dans l’ordre, ou aller directement à la technique dont vous avez besoin aujourd’hui. La lecture du chapitre entier prend environ trois heures. Au fil de votre lecture, comparez la façon dont chaque technique décrit la même plateforme de livraison de repas : sous forme de diagramme de contexte, de diagramme de conteneurs, de diagrammes de séquence et d’états, d’enregistrement de décision et de synthèse d’une page. Chaque section se termine par quelques questions d’autoévaluation. Répondez-y de tête avant de regarder. Quand vous serez prêt, passez le test du chapitre, facultatif : vingt questions à choix multiples et deux réponses rédigées, en quarante-cinq minutes environ. La note de réussite est de quatre-vingts pour cent.

Voilà la carte du chapitre 4. Commencez par la section quatre point un, où nous examinons à qui s’adresse la documentation, et quelle quantité vaut la peine d’être écrite. À très vite.

Télécharger le chapitre (PDF)Lire dans l’application

En un coup d’œil

Vous apprendrez à

  • Expliquer qui lit la documentation d’architecture, ce dont chaque lecteur a besoin et comment décider de ce qui mérite d’être consigné par écrit.
  • Distinguer les parties prenantes, les préoccupations, les points de vue, les vues et les types de modèles tels que les définit l’ISO/IEC/IEEE 42010:2022.
  • Comparer le modèle de vues 4+1, les points de vue et perspectives de Rozanski et Woods, et les trois catégories de vues du SEI.
  • Dessiner des diagrammes de contexte système, de conteneurs et de composants qui respectent les règles de notation du C4.
  • Lire et dessiner les diagrammes UML de séquence, d’états-transitions, de composants, de déploiement, d’activité et de classes qu’utilisent les architectes.
  • Rédiger des enregistrements de décision d’architecture et gérer leur cycle de vie dans un journal des décisions.
  • Appliquer arc42 et les pratiques de diagrammes en tant que code pour que la documentation reste utile et à jour.
  • Adapter une explication de l’architecture aux dirigeants, aux développeurs, aux équipes d’exploitation, aux équipes de sécurité et aux auditeurs.

Avant de commencer

Les chapitres 1 à 3, en particulier les parties prenantes et les préoccupations (section 1.5) et les décisions et compromis (section 1.6).

Durée

Environ 3 heures de lecture ; 45 minutes pour le test.

Termes clés

Description d’architecture · Vue · Point de vue · Préoccupation · Modèle de vues 4+1 · Modèle C4 · Conteneur (C4) · UML · Diagramme de séquence · Diagramme d’états-transitions · Enregistrement de décision d’architecture · arc42 · Diagrammes en tant que code · Documentation en tant que code (docs as code)

Pourquoi documenter l’architecture fait partie du métier

Une architecture qui n’existe que dans la tête de quelques personnes est fragile. Personne en dehors de la salle ne peut la revoir, le prochain ingénieur qui arrive ne peut pas l’apprendre, un auditeur ne peut pas la vérifier, et elle part avec les personnes qui la détiennent. Le chapitre 1 a distingué une architecture (ce qu’est réellement le système) d’une description d’architecture (les documents, diagrammes et enregistrements par lesquels les gens la partagent). Ce chapitre porte sur la seconde : comment produire des descriptions que les gens lisent vraiment, qui restent fidèles à mesure que le système évolue, et qui aident à prendre des décisions.

C’est une compétence pratique plus que théorique, et il est facile de se tromper dans les deux sens. Les équipes qui écrivent trop peu perdent les raisons de leur structure et refont sans cesse les mêmes débats. Les équipes qui écrivent trop produisent des wikis auxquels personne ne se fie. Le principe directeur du chapitre vient de l’ouvrage du SEI Documenting Software Architectures: Views and Beyond : écrire pour le lecteur. Décidez qui utilisera chaque élément de documentation et ce dont il a besoin, écrivez cela de façon brève et exacte, et n’écrivez rien d’autre.

Un même exemple fil rouge revient tout au long du chapitre : une plateforme de livraison de repas avec une app client, une app restaurant et une app livreur, des services de commandes, d’affectation des livreurs et de notifications, et des paiements par carte via un prestataire externe. Vous la verrez sous forme de diagramme de contexte, de diagramme de conteneurs, de diagramme de composants, de diagrammes UML de séquence et d’états, d’enregistrement de décision et de synthèse arc42 d’une page, afin de comparer chaque technique sur le même système.

Décrire et dessiner : sections 4.1 à 4.4

Les quatre premières sections traitent de ce qu’il faut décrire et de la façon de le dessiner. La section 4.1 se demande à qui s’adresse la documentation, ce que le Manifeste agile dit et ne dit pas à son sujet, comment décider de ce qui mérite d’être écrit et quels anti-patrons éviter. La réponse courte : écrire à la main ce que le code ne peut pas vous dire (le contexte, les objectifs de qualité, les décisions et leurs raisons) et générer ce que le code indique déjà.

La section 4.2 présente l’idée centrale selon laquelle un seul diagramme ne suffit jamais. Une architecture se décrit au moyen de plusieurs vues, chacune répondant aux préoccupations de parties prenantes précises et chacune construite selon un point de vue. La section couvre le modèle conceptuel de l’ISO/IEC/IEEE 42010:2022, le modèle de vues 4+1 de Kruchten, les points de vue et perspectives de Rozanski et Woods, et les catégories module, composants et connecteurs et allocation du SEI, et montre comment choisir l’ensemble minimal de vues dont un système a besoin.

La section 4.3 transforme cette théorie en l’approche pratique la plus utilisée, le modèle C4 de Simon Brown : quatre niveaux de zoom (contexte système, conteneur, composant, code), quelques diagrammes complémentaires et un petit ensemble de règles de notation qui rendent les diagrammes compréhensibles par eux-mêmes. La section 4.4 couvre les parties d’UML que les architectes utilisent encore, principalement les diagrammes de séquence, d’états-transitions, de composants, de déploiement, d’activité et de petits diagrammes de classes, et explique quand la précision d’UML vaut l’effort.

Décisions, modèles, outils et personnes : sections 4.5 à 4.8

Les diagrammes montrent la structure ; ils montrent rarement le pourquoi. La section 4.5 traite des enregistrements de décision d’architecture : le format de Michael Nygard de 2011, des alternatives comme MADR et les Y-statements, le cycle de vie d’un enregistrement, de proposé à remplacé, et un enregistrement complet commenté pour la plateforme de livraison. La section 4.6 montre comment un modèle de documentation comme arc42 donne à l’ensemble de la description une organisation standard, pour que les auteurs sachent quoi couvrir et les lecteurs où chercher, et comment l’utiliser de façon légère pour un petit système.

La section 4.7 s’attaque au problème qui met en échec la plupart des documentations : l’obsolescence. Elle couvre l’écriture de diagrammes sous forme de texte avec PlantUML, Mermaid, Structurizr DSL et D2, la différence entre outils de dessin et outils de modélisation, la publication de la documentation depuis le pipeline de build, ainsi que les habitudes de responsabilité et de revue qui maintiennent la documentation fidèle. La section 4.8 élargit le regard des documents aux personnes : adapter le message aux dirigeants, aux développeurs, aux équipes d’exploitation, aux équipes de sécurité et aux auditeurs, expliquer les compromis, suivre une requête à travers un système, rédiger des documents de conception et mener des processus de RFC, présenter lors d’une revue et construire un consensus quand les avis divergent.

L’idée à retenir

Chaque technique de ce chapitre sert un seul objectif : une compréhension partagée et exacte du système entre les personnes qui le construisent, l’exploitent, le financent et en dépendent. Un diagramme, un enregistrement de décision ou un modèle de documentation ne vaut la peine d’être produit que si un vrai lecteur en a besoin, et seulement tant que quelqu’un le maintient fidèle. Une documentation réduite, à jour, dotée d’un responsable et placée à côté du code vaut mieux qu’un document exhaustif auquel personne ne se fie. Si vous ne retenez qu’une question de ce chapitre, que ce soit celle-ci : qui va lire ceci, et qu’en fera-t-il ?

Les 8 sections

4.1 · Intermédiaire · 18 minPourquoi documenterQui lit la documentation d’architecture et ce dont chaque lecteur a besoin, ce que dit réellement le Manifeste agile sur les documents, comment décider de ce qui mérite d’être écrit, et les règles qui gardent la documentation utile.Lire →4.2 · Intermédiaire · 20 minVues et points de vuePourquoi un seul diagramme ne suffit jamais : le modèle de l’ISO/IEC/IEEE 42010 (parties prenantes, préoccupations, points de vue et vues), le modèle 4+1 de Kruchten, les points de vue et les perspectives de Rozanski et Woods, et comment choisir les vues dont un système a besoin.Lire →4.3 · Intermédiaire · 20 minLe modèle C4Le modèle C4 de Simon Brown en pratique : les quatre niveaux de zoom, ce qu’est vraiment un conteneur, les règles de notation qui rendent les diagrammes explicites, et une plateforme de livraison de repas représentée aux niveaux contexte, conteneurs et composants.Lire →4.4 · Intermédiaire · 22 minL’essentiel d’UMLLa place d’UML aujourd’hui, les modes croquis, plan détaillé et langage de programmation décrits par Fowler, et l’essentiel de la notation des six diagrammes que les architectes utilisent encore, chacun dessiné pour la plateforme de livraison de repas.Lire →4.5 · Intermédiaire · 22 minEnregistrements de décisionComment consigner les décisions significatives pour que leurs raisons perdurent : le format de Nygard, MADR et les Y-statements, les statuts et le remplacement, où conserver les enregistrements, ce qui en mérite un, la revue et les anti-patrons.Lire →4.6 · Intermédiaire · 20 minarc42 et modèlesLes douze sections d’arc42, ce que contient chacune et combien écrire pour les petits et les grands systèmes, un exemple d’arc42 allégé tenant sur une page, les modèles du SEI et de l’IEEE 1016, et la conformité à l’ISO/IEC/IEEE 42010.Lire →4.7 · Intermédiaire · 22 minDiagrammes en tant que codeÉcrire des diagrammes sous forme de texte avec PlantUML, Mermaid, Structurizr DSL et D2, outils de dessin ou outils de modélisation, construire la documentation dans le pipeline, et les habitudes qui la gardent fidèle à la réalité.Lire →4.8 · Intermédiaire · 22 minCommuniquerAdapter l’architecture aux dirigeants, aux chefs de produit, aux développeurs, à l’exploitation, à la sécurité et aux auditeurs : expliquer les compromis, les résumés d’une page, suivre une requête, les documents de conception et les RFC, les revues, la conception des diagrammes et la recherche du consensus.Lire →

Test du chapitre

Vérifiez votre compréhension du chapitre 4

Facultatif : 20 questions à choix multiples et 2 courtes réponses rédigées, tirées à chaque fois d’une banque de 72 questions. Note de réussite : 80 %. Réussir tous les tests de chapitre, puis l’évaluation finale, donne droit au Certificat de fin de formation Be Wise.

Passer le test du chapitre 4 dans l’app

Lectures complémentaires