Be Software Architecture Wise
Be Wise Apps

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

Section 4.1 sur 4.8 · Intermédiaire · 18 min de lecture

Pourquoi documenter, et dans quelle mesure

Leçon vidéo

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

Tout système a une architecture, que quelqu’un la mette par écrit ou non. Dans cette leçon, vous verrez qui lit la documentation d’architecture, et comment décider de ce qui vaut la peine d’être écrit.

Pensez aux documents d’une maison. Un acheteur veut un plan des pièces, un électricien veut le schéma de câblage, et un assureur veut le rapport d’expertise. Personne ne veut la liste de chaque brique. Et un plan qui montre un mur abattu depuis longtemps est pire que pas de plan du tout. La personne qui la rénovera dans vingt ans veut savoir pourquoi ce mur n’a jamais été déplacé. La documentation d’architecture, c’est pareil : quelques documents exacts, qui expliquent ce que le code ne peut pas montrer.

La description d’architecture est l’ensemble des documents, diagrammes et enregistrements par lesquels les gens partagent une architecture. Dans une équipe de trois personnes qui travaillent côte à côte, une grande partie peut rester dans leur tête. Quand l’équipe grandit et que des personnes partent, cela devient un risque. Le livre Views and Beyond cite trois usages. La documentation forme les nouveaux venus, elle porte la communication entre parties prenantes, et elle sert de base à l’analyse. Un document qui ne sert aucun de ces usages est du gaspillage.

C’est le lecteur qui juge si la documentation a fonctionné, et des lecteurs différents arrivent avec des questions différentes. Un nouveau venu se demande ce que fait le système, et par où commencer. Une vue d’ensemble d’une page et un diagramme de contexte le servent le mieux. Les équipes d’exploitation se demandent où il tourne, de quoi il dépend, comment il tombe en panne et comment rétablir le service. Il leur faut une vue de déploiement et des runbooks. Les auditeurs veulent voir que les décisions ont été prises délibérément et que les changements sont traçables : des enregistrements de décision avec dates et responsables. Et les futurs mainteneurs se demandent pourquoi diable on a fait cela. Il leur faut avant tout la justification.

Le Manifeste agile de 2001 privilégie les logiciels opérationnels plutôt qu’une documentation exhaustive. On le cite souvent comme une permission de ne rien documenter du tout. Mais ses auteurs disent que la documentation garde de la valeur. C’est une priorité pour les cas où les deux entrent en concurrence. Ce qu’il rejette, c’est la documentation pour elle-même : des centaines de pages validées avant toute ligne de code, puis abandonnées. Visez donc juste assez. Un prototype à deux personnes a besoin d’un fichier README et peut-être d’un diagramme. Une plateforme de paiement réglementée, exploitée par huit équipes, a besoin de bien davantage. Et si les nouveaux venus posent sans cesse la même question, écrivez la réponse.

Cette grille 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 se trouve 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 se trouve ce qui change plus souvent, comme les vues de conteneurs et de déploiement et les principaux scénarios d’exécution. Gardez-les à côté du code, et revoyez-les à chaque changement. En bas à droite se trouve ce que le code indique déjà et qui change souvent, comme les diagrammes de classes et les références d’interfaces. Générez-les dans le pipeline, pour qu’ils ne puissent pas dériver. En bas à gauche se trouve ce qu’on peut lire dans le code et qui change rarement, comme la pile technologique ou les commandes de build. Un bref renvoi suffit.

Appliquons cela à une plateforme de livraison de repas qui compte trente ingénieurs répartis en cinq équipes, avec un audit en vue. L’architecte propose une courte vue d’ensemble : la finalité, les utilisateurs, les objectifs de qualité par ordre de priorité, et un ordre de lecture pour les nouveaux venus. Elle a un responsable identifié et une revue trimestrielle. Il y a deux diagrammes C4, pour le contexte système et les conteneurs, générés à partir d’un modèle conservé dans le dépôt. Il y a un journal des décisions d’une quarantaine d’enregistrements courts. Quand une décision change, un nouvel enregistrement remplace l’ancien. Il y a une vue de déploiement pour chaque environnement, des diagrammes de séquence pour les quatre flux les plus importants, et un runbook pour chaque alerte. Et les diagrammes de classes, les listes d’endpoints et les schémas sont générés, pas écrits à la main. Chaque élément a un lecteur, un responsable et un déclencheur de mise à jour.

Views and Beyond énonce sept règles pour une bonne documentation, et presque chaque échec en enfreint une. Le plus courant est le wiki périmé : des centaines de pages, en partie vraies, sans qu’on puisse dire quelle partie. Le document monolithique est une spécification de cent vingt pages, approuvée une fois et jamais relue. Les diagrammes sans légende laissent chaque lecteur inventer une signification. Et un diagramme qui mélange une app mobile, une classe isolée et un processus métier, ce sont plusieurs vues entassées ensemble. Enfin, le quoi sans le pourquoi : une description complète de la structure, sans aucune justification. Les équipes futures ne peuvent pas distinguer les contraintes essentielles de celles qui sont accidentelles.

La section complète présente les sept règles, la documentation en tant que code, et un guide de ce qu’il faut écrire. Ensuite, dans la section quatre point deux, nous verrons pourquoi un seul diagramme ne suffit jamais. À très vite.

Ce qu’il faut savoir

Pourquoi une architecture doit être mise par écrit

Tout système a une architecture, que quelqu’un la décrive ou non (voir la section 1.1). La description d’architecture est autre chose : les documents, diagrammes, modèles et enregistrements de décision par lesquels les gens partagent une compréhension de cette architecture. Dans une équipe de trois personnes qui travaillent côte à côte et ont écrit chaque ligne, une grande partie de la description peut rester dans leur tête. Dès que l’équipe grandit, que des personnes partent, qu’une deuxième équipe arrive, qu’un auditeur se présente ou que le système survit à ses auteurs, un savoir qui n’existe que dans les têtes devient un risque. La définition de l’architecture donnée par Ralph Johnson, la compréhension partagée des développeurs experts, contient un avertissement : une compréhension qui n’est pas écrite ne peut se partager qu’en parlant, et la parole ne passe pas à l’échelle.

Documenting Software Architectures: Views and Beyond (Paul Clements et ses collègues du Software Engineering Institute, 2e édition, 2010) cite trois usages de la documentation d’architecture, et ils restent la façon la plus claire de comprendre pourquoi elle vaut l’effort. Elle forme : elle fait découvrir le système aux nouveaux membres de l’équipe, aux relecteurs externes et aux nouveaux architectes. Elle est le principal vecteur de communication entre parties prenantes : développeurs, exploitants, équipes de sécurité et managers débattent du système à travers elle, et les décisions prises dans une réunion parviennent à ceux qui n’y étaient pas. Enfin, elle est la base de l’analyse et de la construction : elle indique à ceux qui implémentent ce qu’ils peuvent faire et ne pas faire, et c’est ce qu’examine un évaluateur qui se demande si le système atteindra ses objectifs de qualité (les méthodes d’évaluation du chapitre 11 ont besoin d’une description pour travailler).

Deux conséquences en découlent. D’abord, la documentation est un moyen, pas une fin : un document qui ne sert aucun de ces usages est du gaspillage, aussi bien mis en forme soit-il. Ensuite, c’est le lecteur qui juge si elle a fonctionné. Une description que son auteur trouve complète mais dont un nouveau venu ne peut rien faire a échoué sur le plan de la formation, et un diagramme que l’équipe d’exploitation ne peut pas faire correspondre à de vrais serveurs a échoué sur le plan de l’analyse.

Qui lit la documentation d’architecture, et ce dont chacun a besoin

LecteurSes questionsCe qui le sert le mieux
Nouveaux venus (nouveaux développeurs, prestataires, nouvel architecte)Que fait ce système, pour qui, et par où commencer ? Quelles sont les principales parties et les mots qu’on emploie ?Une vue d’ensemble d’une page, un diagramme de contexte système, un diagramme de conteneurs, un glossaire et un court ordre de lecture
Développeurs actuelsOù placer cette nouvelle fonctionnalité ? De quoi puis-je dépendre ? Pourquoi est-ce construit ainsi, et puis-je le changer ?Structure des modules ou des composants, conventions, concepts transversaux (gestion des erreurs, sécurité, journalisation) et enregistrements de décision
Équipes d’exploitation et SREOù cela tourne-t-il, de quoi cela dépend-il, comment cela tombe-t-il en panne et comment rétablir le service ?Vue de déploiement par environnement, dépendances externes, runbooks (procédures d’exploitation), supervision et objectifs de reprise
Équipes de sécurité et de protection des donnéesOù sont les frontières de confiance ? Où les données à caractère personnel circulent-elles et où sont-elles stockées ? Qui peut appeler quoi ?Vues de contexte et de flux de données, concept d’identité et d’accès, liste des services tiers
Auditeurs et régulateursPouvez-vous montrer que les contrôles existent, que les décisions ont été prises délibérément et que les changements sont traçables ?Enregistrements de décision avec dates et responsables, traçabilité des exigences vers la conception et les tests, historique des versions
Futurs mainteneursMais pourquoi diable a-t-on fait cela ? Quelles contraintes s’appliquent encore ? Que peut-on supprimer sans risque ?La justification avant tout : les décisions avec leur contexte, les options rejetées et les hypothèses retenues
Décideurs (sponsors, responsables produit et responsables de l’ingénierie)Quels sont les risques, les coûts et les options ? Que dois-je décider, et pour quand ?Une synthèse d’une page, les objectifs de qualité, les principaux risques et la dette technique, les décisions en attente d’un responsable

Des logiciels opérationnels plus qu’une documentation exhaustive

Le Manifeste agile (2001) énonce quatre paires de valeurs, dont l’une est Des logiciels opérationnels plus qu’une documentation exhaustive. On le cite souvent comme une permission de ne rien documenter du tout. Lu en entier, le manifeste dit quelque chose de plus restreint. Ses auteurs précisent que, si les éléments de droite ont de la valeur, ils valorisent davantage ceux de gauche. Cette valeur fixe une priorité pour les cas où les deux entrent en concurrence ; elle ne rejette pas la documentation.

Ce que cette valeur rejette, c’est le projet piloté par la documentation des années 1990 : des centaines de pages de spécifications validées avant qu’une ligne de code soit écrite, considérées comme un progrès en soi, puis abandonnées dès que le code s’en écarte. Le mot qui compte est exhaustive : une documentation qui cherche à tout décrire, pour elle-même, et à laquelle on accorde plus de valeur qu’au système en fonctionnement. Rien dans le manifeste ne s’oppose à un diagramme de contexte, à un court enregistrement expliquant pourquoi l’équipe a choisi la messagerie asynchrone, ou à un runbook qui permet à l’ingénieur d’astreinte de rétablir le service à trois heures du matin.

Les praticiens ne s’accordent pas sur jusqu’où aller. Certains coachs agiles soutiennent que la conversation et les tests suffisent presque toujours, et que la documentation d’architecture écrite devient obsolète plus vite qu’elle ne rapporte. D’autres, en particulier ceux qui maintiennent des systèmes à longue durée de vie ou travaillent dans des secteurs réglementés, soulignent que les personnes qui ont le plus besoin de la documentation (les successeurs, les auditeurs, l’équipe d’exploitation) sont justement celles qui sont absentes des conversations. Les deux positions s’accordent sur l’économie sous-jacente : la documentation a un coût d’écriture, un coût de mise à jour et un coût de lecture, et elle ne vaut la peine d’être produite que là où sa valeur pour les lecteurs dépasse ces coûts.

Juste assez de documentation

L’expression de Scott Ambler « just barely good enough » (tout juste suffisant) décrit la cible : un modèle ou un document est suffisant lorsqu’il remplit son objectif pour son public, et tout effort au-delà coûte plus qu’il ne rapporte. Son idée que c’est le public, et non l’auteur, qui décide si un artefact est suffisant est le même principe que celui d’écrire pour le lecteur. George Fairbanks défend la même idée pour le travail d’architecture dans son ensemble dans Just Enough Software Architecture (2010) : en faire autant que les risques le justifient (voir la section 1.8).

La documentation juste suffisante n’est donc pas une quantité fixe. Elle croît avec la taille et la durée de vie du système, le nombre d’équipes, la rotation du personnel, le coût d’une défaillance et les exigences des régulateurs. Un prototype à deux personnes a besoin d’un README et peut-être d’un diagramme. Une plateforme de paiement exploitée par huit équipes sous réglementation financière a besoin de vues de contexte, de conteneurs et de déploiement, d’un journal des décisions remontant sur des années, de concepts de sécurité documentés et de preuves que les documents sont revus.

Un signal pratique est la question qui revient. Si les nouveaux venus posent la même question dès leur première semaine, ou si le même débat de conception ressurgit tous les quelques mois, la réponse doit être écrite. Un autre est l’erreur coûteuse : si une équipe a enfreint une règle non écrite (« ne jamais appeler le prestataire de paiement depuis l’app restaurant ») parce que personne ne la lui avait dite, cette règle relevait de l’architecture et aurait dû être écrite.

Ce qui vaut la peine d’être documenté, et ce qui ne le vaut pas

Les informations diffèrent de deux façons qui déterminent comment les documenter. La première est de savoir si elles peuvent être retrouvées à partir du code. Les noms de classes, les signatures de méthodes et les tables de base de données se lisent dans le code source à tout moment ; les raisons d’une décision, les objectifs de qualité que sert le système et les options rejetées ne le peuvent pas, car elles n’ont jamais été dans le code. La seconde est leur fréquence de changement. La finalité du système et ses principaux partenaires externes changent rarement ; la liste des classes d’un module change chaque semaine.

La documentation d’architecture écrite à la main doit se concentrer sur ce qui est à la fois important et impossible à retrouver dans le code : le contexte et la portée du système (qui l’utilise et de quels autres systèmes il dépend), ses objectifs de qualité et ses contraintes, les décisions clés et leurs raisons, la structure à gros grain (les principales parties déployables et leurs responsabilités), le déploiement sur l’infrastructure, les scénarios d’exécution importants, et les concepts transversaux que chaque partie doit suivre, comme la façon de gérer les erreurs, d’authentifier les utilisateurs et de protéger les données à caractère personnel. Cette liste est proche de la structure du modèle arc42, traité à la section 4.6.

Ce qui ne vaut pas la peine d’être écrit à la main, c’est tout ce que le code ou les outils indiquent déjà précisément et qui change souvent : les diagrammes de classes d’une base de code entière, les listes d’endpoints que contient déjà un fichier OpenAPI, ou les descriptions de chaque fonction. Lorsque de telles vues sont utiles, générez-les à partir du code source dans le pipeline de build pour qu’elles ne puissent pas dériver. Omettez aussi le contenu aspirationnel (des diagrammes de ce à quoi le système devrait ressembler, présentés comme s’il y ressemblait déjà), les comptes rendus de réunions dont le résultat est consigné ailleurs, et le texte dupliqué, qui finira par contredire sa copie.

Décider comment documenter une information

Grille deux sur deux : comment documenter une information selon sa fréquence de changement et selon qu’elle se déduit ou non du codeNondéductibledu codeDéductibledu codeChange rarementChange souventFréquence de changementÀ la main, à garderContexte et portéeQualités viséesDécisions et leurs raisonsPrincipes et contraintesGlossaireÀ garder près du codeConteneurs et déploiement(vues)Scénarios d’exéc. clésConcepts transversauxrevue à chaque changementY renvoyer en brefPile technologiqueStructure du dépôtCommandes build/lancementun README suffitGénérer, ne jamais rédigerDiagr. de classes et dedépendanceRéférence d’API (OpenAPI)Schémas de base de donnéesproduits dans le pipeline
Écrivez à la main ce que le code ne peut pas vous dire ; générez ce que le code dit déjà et qui change souvent.

Sept règles pour une bonne documentation

Views and Beyond énonce sept règles pour une bonne documentation. Elles valent la peine d’être connues par cœur, car presque tous les échecs de documentation enfreignent l’une d’elles.

  1. 1. Écrire pour le lecteurUne documentation s’écrit une fois et se lit de nombreuses fois ; optimisez-la donc pour le lecteur. Décidez qui sont les lecteurs et ce qu’ils chercheront à faire avec le document, organisez-le pour la consultation plutôt que pour une lecture linéaire, et évitez le jargon interne. Signe que cette règle est enfreinte : le document est organisé dans l’ordre où l’auteur a pensé aux choses.
  2. 2. Éviter les répétitions inutilesChaque information doit avoir un seul emplacement, avec des liens depuis ailleurs. La répétition allonge les documents et, pire, laisse les copies diverger jusqu’à ce que les lecteurs ne sachent plus laquelle est vraie. Une répétition délibérée pour le confort du lecteur, comme une synthèse, est acceptable si elle est clairement signalée.
  3. 3. Éviter l’ambiguïtéUn diagramme de boîtes et de traits sans légende peut se lire de plusieurs façons : un trait est-il un appel, un flux de données ou une dépendance de déploiement ? Définissez la notation dans une légende, utilisez un seul nom pour une seule chose, et précisez ce que signifie chaque élément et chaque relation.
  4. 4. Utiliser une organisation standardUne structure connue (un modèle comme arc42 ou le modèle de Views and Beyond) indique aux lecteurs où chercher et montre aux auteurs ce qui manque. Une section vide marquée « sans objet, parce que… » est plus informative qu’un silence.
  5. 5. Consigner la justificationÉcrivez le pourquoi, y compris les options rejetées. Les futurs mainteneurs peuvent généralement comprendre ce qui a été construit ; ils ne peuvent pas comprendre pourquoi, et sans le pourquoi, soit ils craignent de changer quoi que ce soit, soit ils défont une décision dont les raisons tiennent toujours. Les enregistrements de décision existent pour cela.
  6. 6. La tenir à jour, mais pas tropUne documentation périmée induit en erreur. Mais mettre à jour chaque document pour chaque idée à moitié formée crée de l’agitation inutile ; consignez les décisions une fois qu’elles sont prises et mettez à jour la description à un rythme prévisible, par exemple à chaque version ou à chaque changement important.
  7. 7. La revoir pour vérifier qu’elle remplit son objectifSeuls les lecteurs visés peuvent dire si un document fonctionne. Demandez à un nouveau venu d’installer et d’expliquer le système à partir des documents, ou à un ingénieur d’astreinte d’utiliser la vue de déploiement lors d’un exercice, et corrigez ce sur quoi ils butent.

Documentation vivante et documentation en tant que code

L’échec traditionnel de la documentation d’architecture est l’obsolescence : la description est écrite au début, le système change, et personne ne met à jour le document parce qu’il vit à l’écart du travail. Deux idées liées s’attaquent à ce problème à la racine.

La documentation en tant que code (docs as code), une pratique promue par la communauté Write the Docs, consiste à traiter la documentation comme du code source : écrite dans des formats texte comme Markdown ou AsciiDoc, conservée en gestion de versions (généralement dans le même dépôt que le code qu’elle décrit), modifiée par les mêmes pull requests, revue par les mêmes personnes, et construite et publiée par le même pipeline. On peut alors exiger qu’une pull request qui modifie la façon dont les commandes sont affectées aux livreurs mette à jour la vue d’exécution dans le même commit, et le relecteur voit les deux.

La documentation vivante, terme popularisé par le livre de Cyrille Martraire qui porte ce nom (2019), va plus loin : chaque fois que c’est possible, la documentation doit être tirée du système lui-même pour ne pas pouvoir dériver. Des diagrammes de dépendances générés à partir du code, des références d’API générées à partir de fichiers OpenAPI, des règles d’architecture vérifiées par des tests automatisés et des diagrammes générés à partir d’un modèle conservé à côté du code en sont des exemples. Le texte écrit à la main est réservé à ce qui ne peut pas être dérivé, principalement l’intention et la justification.

Aucune de ces idées ne dispense de juger de ce qu’il faut écrire. La section 4.7, Diagrammes en tant que code, présente en détail les outils et les habitudes.

Guide de décision

Guide de décision : faut-il écrire ceci ?

Posez ces questions dans l’ordre à propos d’un élément de connaissance architecturale.

  1. Quelqu’un commettrait-il une erreur coûteuse, ou poserait-il sans cesse la même question, si ceci n’était pas écrit ?
    OuiContinuez : c’est un candidat à la documentation.
    NonLaissez-le à la conversation et au code pour l’instant ; revenez-y si la question commence à revenir.
  2. Peut-on le lire de façon fiable dans le code, la configuration ou un outil ?
    OuiGénérez-le, ou renvoyez à l’endroit où il se trouve ; ne le recopiez pas à la main.
    NonContinuez : il doit être écrit par une personne.
  3. S’agit-il d’une décision avec des raisons et des options rejetées ?
    OuiRédigez un enregistrement de décision (voir la section 4.5).
    NonContinuez.
  4. Changera-t-il avec la plupart des versions ?
    OuiConservez-le dans le dépôt à côté du code qu’il décrit et faites de sa mise à jour une partie de la pull request.
    NonPlacez-le dans la vue d’ensemble de l’architecture ou dans la section de modèle appropriée, et revoyez-le à un rythme fixe.

Exemple commenté

Exemple commenté : une documentation juste suffisante pour la plateforme de livraison de repas

Une entreprise de livraison de repas exploite une plateforme comprenant une app client, une app restaurant, une app livreur, des services de commandes, d’affectation des livreurs et de notifications, et un prestataire de paiement externe. Elle compte 30 ingénieurs répartis en cinq équipes et se prépare à un audit par un évaluateur de la sécurité des paiements par carte. L’architecte propose l’ensemble documentaire suivant, entièrement conservé dans un dépôt de documentation unique ou à côté du code, et dont aucun élément n’est plus long que nécessaire.

Vue d’ensemble de l’architecture (2 à 3 pages)Finalité, principaux utilisateurs, objectifs de qualité par ordre de priorité (par exemple : ne jamais perdre ni facturer deux fois une commande ; confirmation de commande en moins de 1,5 seconde au p99 en période de pointe ; app restaurant utilisable avec une mauvaise connexion), contraintes clés, et un ordre de lecture pour les nouveaux venus. Responsable : l’architecte. Revue chaque trimestre.
Diagrammes de contexte système et de conteneursDeux diagrammes C4 (section 4.3) avec légende, générés à partir d’un modèle du dépôt. Mis à jour dans la pull request qui ajoute ou supprime un conteneur ou une dépendance externe.
Journal des décisions (decision log)Environ 40 enregistrements de décision courts, numérotés, dans le dépôt : événements de commande asynchrones, choix du prestataire de paiement, une base de données par service, etc. Jamais réécrits ; remplacés lorsqu’une décision change.
Vue de déploiementUn diagramme et un tableau par environnement : régions, clusters, bases de données managées, courtier de messages (message broker) et frontière réseau autour des données de carte. Sous la responsabilité de l’équipe plateforme.
Scénarios d’exécutionDes diagrammes de séquence pour les quatre flux les plus importants : passer commande, refus par le restaurant, affectation d’un livreur, remboursement. Chacun tient sur un écran.
Concepts transversauxUne page pour chacun : authentification, idempotence et nouvelles tentatives, journalisation et données à caractère personnel. Ce sont les règles que chaque équipe doit suivre.
RunbooksUn par alerte susceptible de réveiller quelqu’un, avec un lien depuis l’alerte elle-même.
Non écrit à la mainDiagrammes de classes, listes d’endpoints et schémas de base de données (générés dans le pipeline) ; comptes rendus de réunion ; l’histoire de la croissance du système (le journal des décisions et l’historique des versions la racontent déjà).

Chaque élément a un lecteur identifié, un responsable et un déclencheur de mise à jour. La documentation sans responsable est la première à se dégrader.

L’audit s’appuie sur le journal des décisions, la vue de déploiement et l’historique des versions, et non sur un document d’audit séparé qu’il faudrait maintenir cohérent avec eux.

L’ensemble se lit en deux heures environ, ce qui rend plausible que les nouveaux venus le lisent vraiment.

Questions fréquentes

Notre code est propre et bien testé. N’est-ce pas une documentation suffisante ?

Un code propre et des tests sont une excellente documentation de ce que fait le système à un niveau fin. Ils ne montrent pas la vue d’ensemble à travers les services et les dépôts, les objectifs de qualité, les contraintes extérieures au code, ni pourquoi la structure est ce qu’elle est. C’est exactement à cela que sert la documentation d’architecture.

Qui doit rédiger la documentation d’architecture ?

Les personnes qui prennent les décisions et vivent avec, ce qui, dans la plupart des équipes modernes, signifie les ingénieurs autant que les architectes. L’architecte est généralement responsable de la structure d’ensemble et de la cohérence, et les équipes sont responsables des parties qui décrivent leurs services. L’essentiel est que chaque document ait un responsable identifié.

Comment empêcher la documentation de devenir obsolète ?

Gardez-la réduite, gardez-la à côté du code, faites de sa mise à jour une partie de la définition de « terminé » pour les changements qui la concernent, générez ce qui peut l’être, et revoyez-la à un rythme fixe. La section 4.7 présente ces habitudes en détail.

Vérifiez votre compréhension

Citez les trois usages de la documentation d’architecture identifiés dans Views and Beyond.

La formation (faire découvrir le système), la communication entre parties prenantes, et le rôle de base pour l’analyse et la construction.

« Des logiciels opérationnels plus qu’une documentation exhaustive » signifie-t-il que les équipes agiles ne doivent pas documenter leur architecture ?

Non. Le manifeste précise que les éléments de droite gardent de la valeur ; il fixe une priorité lorsque les deux entrent en concurrence et rejette la documentation produite pour elle-même, pas la documentation utile.

Pourquoi la justification doit-elle être documentée à la main, alors que les diagrammes de classes ne devraient généralement pas l’être ?

La justification ne peut pas être retrouvée à partir du code et change rarement ; elle doit donc être écrite par une personne. La structure des classes peut être lue ou générée à partir du code et change souvent ; une copie dessinée à la main dérive donc vite.

Contre quoi met en garde la règle « tenir la documentation à jour, mais pas trop » ?

À la fois contre une documentation périmée qui induit les lecteurs en erreur et contre l’agitation permanente due à la mise à jour des documents pour chaque idée non arrêtée ; mettez à jour à un rythme prévisible une fois les décisions prises.

Suivant · 4.2Vues 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.Continuer →

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 : « Nous avons un espace Confluence de 300 pages auquel personne ne se fie. Comment décider de ce qu’il faut garder, supprimer et réécrire ? »