Garder un modèle à jour
Les modèles ne pourrissent pas parce que les gens sont paresseux. Ils pourrissent parce que rien, dans le flux réel du travail, n'oblige quiconque à les ouvrir.
6 min de lectureModelling practice4 sur 4
La réponse courte
- Les modèles pourrissent parce que rien dans le processus de livraison n'oblige à les ouvrir. Le code a des tests et une relecture ; une page de wiki n'a ni l'un ni l'autre.
- Rattachez le modèle à une étape qui a déjà lieu : un diagramme dans le dépôt apparaît dans le diff d'une pull request.
- Tout ce qui repose sur une revue périodique que personne n'a planifiée ne survivra pas au premier trimestre chargé.
- Supprimez un diagramme périmé plutôt que de le laisser. Un diagramme manquant coûte dix minutes de questions ; un diagramme faux mais assuré coûte une journée et une mauvaise décision.
01Pourquoi les modèles pourrissent#
L'explication habituelle est la discipline, et elle est fausse. Les mêmes ingénieurs qui laissent un modèle dériver pendant deux ans gardent leur suite de tests au vert tous les jours, et la différence ne tient pas à leur degré d'attention - elle tient à ce qu'un test en échec arrête la chaîne et un diagramme faux n'arrête rien.
Le code est entouré d'une machinerie qui force l'attention sur lui au moment où il change : un compilateur, une exécution de tests, un relecteur qui doit approuver. Un modèle dans un wiki n'a rien de tout cela. Rien, sur le chemin du ticket à la production, n'oblige qui que ce soit à ouvrir la page, donc rien ne fait jamais remonter le désaccord. Le modèle ne se dégrade pas - le système bouge, et le modèle reste exactement où il était.
02Accrochez-le à quelque chose qui se produit déjà#
Tout dispositif qui fonctionne a la même forme : le modèle est placé là où une étape existante va le percuter.
Mettez la vue dans le dépôt. Un diagramme versionné en Mermaidà côté du code apparaît dans le diff dès que son fichier est touché, et il est lu par la personne qui relit la modification. C'est le seul mécanisme de cette liste dont le maintien ne coûte rien, parce que la relecture avait déjà lieu.
Référencez les vues depuis les décisions d'architecture.Un court enregistrement de décision qui pointe vers la vue montrant la structure qu'il a arrêtée fait que cette vue est ouverte chaque fois que quelqu'un demande pourquoi la structure est ainsi - c'est-à-dire précisément au moment où le fait qu'elle soit fausse compterait.
Faites du modèle la source de quelque chose dont on a besoin.Si la vue de déploiement engendre le diagramme du runbook, ou si le modèle de domaine engendre le glossaire dans lequel le support cherche, alors quelqu'un s'en aperçoit en quelques jours plutôt qu'en quelques trimestres.
À utiliser quand
- Une vue vit dans le dépôt et change dans la même pull request que le code
- Un enregistrement de décision pointe vers la vue qui montre ce qu'il a arrêté
- Le modèle engendre quelque chose sur quoi une équipe s'appuie déjà
- Chaque vue a un responsable nommé, et la liste des vues est assez courte pour qu'on puisse les nommer
Préférer autre chose quand
- Une revue trimestrielle que personne n'a planifiée
- Une page de wiki que seule la personne qui l'a écrite a jamais ouverte
- Un PNG exporté posé à côté de la source dont il est issu
- Tout dispositif qui exige que quelqu'un se souvienne
03Réduisez-le, et supprimez le reste#
L'autre moitié de la réponse, c'est que la plupart des modèles sont trop gros pour être tenus à jour, et aucun processus n'y remédie. Si maintenir le modèle prenait un jour par mois et que l'équipe dispose d'une heure, le modèle périmera quelle que soit l'organisation de la revue - le geste honnête est donc de le tailler à cette heure.
C'est le même test que pour le cadrage, appliqué plus tard : les vues incapables de nommer une décision sont celles qu'on abandonne, et les abandonner n'est pas une perte puisqu'elles n'étaient pas lues. Ce qui reste est assez petit pour qu'on remarque qu'il est faux.
Ensuite, supprimez vraiment le reste.C'est l'étape que les gens ne franchissent pas, et celle dont l'arithmétique est la plus claire. Un diagramme manquant coûte à un lecteur dix minutes de questions ; un diagramme faux avec aplomb lui coûte une journée et, s'il n'a pas de chance, une décision prise dessus. Une documentation que vous n'entretiendrez pas n'est pas neutre, c'est un piège au logo de votre équipe.
En une ligne chacun
- 01Les modèles pourrissent parce que rien dans le flux de livraison n'oblige quiconque à les ouvrir.
- 02Accrochez chaque vue à une étape qui a déjà lieu : un diff, un enregistrement de décision, un artefact engendré.
- 03Tout processus qui dépend de la mémoire de quelqu'un a déjà échoué.
- 04Taillez le modèle au budget d'entretien dont l'équipe dispose réellement, pas à celui qu'elle devrait avoir.
- 05Supprimez ce qui reste, et datez ce que vous gardez. Un diagramme faux coûte plus cher qu'un diagramme absent.
04Questions fréquentes#
Pourquoi la documentation d'architecture se périme-t-elle ?
Parce que rien dans le processus de livraison n'oblige à l'ouvrir. Le code a des tests et une relecture qui forcent l'attention quand il change ; un modèle dans un wiki n'a pas d'équivalent, il dérive donc en silence et personne ne s'en aperçoit avant de lui faire confiance et de se tromper.
Comment garder un modèle à jour ?
Rattachez-le à une étape qui a déjà lieu. Un diagramme dans le dépôt apparaît dans le diff d'une pull request ; une vue citée par une décision consignée s'ouvre quand la décision est réexaminée. Tout ce qui repose sur une revue périodique que personne n'a planifiée ne survivra pas au premier trimestre chargé.
Faut-il supprimer un diagramme périmé ou le laisser ?
Le supprimer. Un diagramme manquant coûte au lecteur dix minutes de questions ; un diagramme faux mais assuré lui coûte une journée et une mauvaise décision. Ce que vous n'entretiendrez pas est un passif et non un actif, et le retirer est l'amélioration la moins chère disponible.
Dans cette série
- 01Quel langage choisir
- 02Cadrer un modèle
- 03Conventions de nommage
- 04Garder un modèle à jour
À lire aussi
Pratique de la modélisation
Pratique de la modélisation
Pratique de la modélisation
Pratique de la modélisation
Pratique de la modélisation