Read in English · Leer en español · Auf Deutsch lesen
Section 1.6 sur 1.8 · Intermédiaire · 20 min de lecture
Décisions architecturales et compromis : réversibilité et moment opportun
Leçon vidéo
5 min · narré en anglais, avec sous-titresÉcouter seulement (audio)
Lire la transcription
Les architectes prennent des décisions en permanence, et aucune n’est gratuite. Cette leçon explique comment peser les compromis, quelles décisions méritent de l’attention, quand décider, et comment montrer votre raisonnement.
Choisir une voiture est un compromis. Un moteur plus gros consomme plus de carburant ; une voiture plus petite se gare plus facilement mais transporte moins. Personne n’obtient tout. Certains choix sont faciles à défaire, comme une couleur de peinture que vous pourrez changer plus tard. D’autres, comme acheter la maison qui donne sur une autoroute, sont très difficiles à défaire. Les bons architectes font vite les choix faciles, prennent soin des choix difficiles, décident au bon moment et notent pourquoi.
Première loi de Mark Richards et Neal Ford : tout, en architecture logicielle, est un compromis. Le cache achète de la vitesse et se paie en données périmées. Si vous pensez avoir trouvé quelque chose qui n’est pas un compromis, c’est probablement que vous ne l’avez pas encore repéré. Leur deuxième loi : le pourquoi est plus important que le comment. N’importe qui peut voir comment un système est construit. Ce que le code ne peut pas vous dire, c’est le pourquoi : quelles alternatives ont été envisagées, et quels risques ont été acceptés. Et une troisième : la plupart des décisions ne sont pas binaires. Vous choisissez rarement entre un monolithe et des microservices ; vous choisissez combien d’unités déployables, découpées selon quelles lignes.
Une décision bien formée comporte six parties. À gauche, trois entrées : le contexte, c’est-à-dire les forces et les contraintes ; au moins deux options réelles ; et les critères, tirés des préoccupations des parties prenantes. Elles alimentent la décision elle-même, et sa justification : pourquoi l’option retenue l’a emporté sur les autres. Puis les conséquences, c’est-à-dire les gains, les coûts, les risques et les options désormais fermées, et le statut, par exemple proposée, acceptée ou remplacée. Remarquez la flèche en pointillés. Les conséquences deviennent le contexte des décisions suivantes. Choisissez la messagerie asynchrone, et vous devrez ensuite décider comment traiter les messages en double.
La propriété la plus utile d’une décision, c’est le faible coût avec lequel on peut la défaire. Jeff Bezos appelait les décisions réversibles des portes à double sens. Prenez-les vite, en petits groupes, car vous pouvez repasser la porte dans l’autre sens. Une bibliothèque de journalisation placée derrière votre propre interface en est une. Les portes à sens unique sont presque irréversibles, comme le modèle de données d’un système de référence, ou une API publique qu’utilisent des centaines de partenaires. Elles méritent une délibération lente et soigneuse avec les personnes qui en subiront les conséquences. Et la réversibilité évolue avec le temps. Plus il y a de code, de données et de personnes qui dépendent d’un choix, plus il devient difficile à défaire.
Alors, quand faut-il décider ? À mesure qu’un projet avance, ce que vous savez augmente, tandis que les options encore ouvertes diminuent. Décidez trop tôt, et vous devinez. Figer la base de données la première semaine, avant de comprendre la forme des données, c’est deviner. Le dernier moment responsable est le point où ne pas décider supprimerait une option importante. Décider à ce moment-là permet de disposer du maximum de connaissances, sans laisser la décision se prendre à votre place. Attendez trop, et la décision est prise par défaut, par exemple quand du code a déjà été écrit autour d’une hypothèse jamais formulée. Ce n’est pas un prétexte à la procrastination. Sachez quelles décisions sont en attente, quand chacune doit être prise, et utilisez le temps qui reste pour apprendre.
Passons à un exemple commenté. Une entreprise de livraison de repas a besoin d’une base de données pour un nouveau service des commandes. Les paiements ne doivent jamais être perdus ni débités deux fois. L’équipe de six personnes connaît bien PostgreSQL, mais n’a pas d’administrateur de bases de données. Il y a trois options : un service PostgreSQL managé, la base de données orientée documents du fournisseur cloud lui-même, ou un PostgreSQL que l’équipe exploite elle-même. Ils conviennent d’abord de six critères et de leurs pondérations, comme l’intégrité transactionnelle et l’effort opérationnel, puis notent chaque option. PostgreSQL managé obtient soixante-dix-neuf sur quatre-vingt-quinze, devant soixante-treize et soixante-sept. Puis vient un test de sensibilité : et si la croissance était bien plus forte, ou si quelqu’un d’autre gérait les bases de données ? L’option A reste première ou ex aequo. Le résultat tient surtout au manque de capacité de l’équipe à exploiter des bases de données. Ils choisissent donc PostgreSQL managé et consignent honnêtement les inconvénients : une facture mensuelle plus élevée, et des fenêtres de maintenance fixées par le fournisseur. Les chiffres ne prennent pas la décision ; ils rendent le raisonnement visible.
Comme c’est le pourquoi qui compte le plus, il faut le mettre par écrit. Le format habituel est l’enregistrement de décision d’architecture, ou ADR : un court fichier texte avec un titre, un statut, un contexte, une décision et des conséquences. Il est conservé avec le code, et n’est jamais modifié pour réécrire l’histoire. Une décision ultérieure le remplace et renvoie vers lui, de sorte que le journal raconte l’histoire. Et évitez les erreurs courantes : n’envisager qu’une seule option, cacher les inconvénients, et ne jamais réexaminer une décision quand ses hypothèses changent.
Voilà pour les décisions et les compromis. La section complète contient un guide pour décider maintenant ou plus tard, les pièges cognitifs à surveiller et un exemple d’ADR. Ensuite, dans la section un point sept, nous verrons la dette technique. À très vite.
Ce qu’il faut savoir
- Tout choix architectural important est un compromis : il améliore certaines qualités au détriment d’autres, et ses inconvénients doivent être identifiés et énoncés.
- Une décision bien formée consigne son contexte, les options envisagées, les critères, la décision avec sa justification, les conséquences et son statut.
- La réversibilité est la propriété clé d’une décision : les portes à double sens doivent être tranchées vite et localement, les portes à sens unique de façon réfléchie et avec les personnes qui en subiront les conséquences.
- Le dernier moment responsable est le point à partir duquel attendre supprimerait une option importante ; décider à ce moment-là permet de disposer du maximum de connaissances sans laisser la décision se prendre par défaut.
- Les abstractions aux frontières, les feature flags, la migration incrémentale et les spikes rendent les décisions plus réversibles, à un coût qui ne vaut la peine que lorsque l’incertitude et le coût d’un retour en arrière sont tous deux élevés.
- Les matrices de décision pondérées et les enregistrements de décision d’architecture rendent le raisonnement visible et contestable ; convenez des critères et des pondérations avant de noter, et testez la sensibilité du résultat à ces choix.
Tout est compromis
Tout choix architectural important achète quelque chose en renonçant à autre chose. Découper un système en services déployables indépendamment achète l’autonomie des équipes et une mise à l’échelle indépendante, et se paie en latence réseau, en complexité opérationnelle et en cohérence des données plus difficile. Le cache achète de la vitesse et se paie en données périmées et en logique d’invalidation. Une base de données managée dans le cloud libère des correctifs et des sauvegardes, et se paie en coût et en dépendance envers un seul fournisseur. Mark Richards et Neal Ford placent cette idée en tête de Fundamentals of Software Architecture (2020 ; deuxième édition 2025), comme leur première loi : Tout, en architecture logicielle, est un compromis.
Ils en tirent un corollaire : si vous pensez avoir trouvé quelque chose qui n’est pas un compromis, c’est probablement que vous n’avez pas encore identifié le compromis.
Leur deuxième loi dit que le pourquoi est plus important que le comment. N’importe qui peut regarder un système en fonctionnement et voir comment il est construit : trois services, un courtier de messages (message broker), une base de données orientée documents. Ce que le code ne permet pas de retrouver, c’est le pourquoi : quelles alternatives ont été envisagées, quelles préoccupations l’ont emporté, quels risques ont été acceptés. Sans le pourquoi, les ingénieurs suivants soit conservent des choix qui n’ont plus de sens, soit défont des choix dont les raisons restent valables. La deuxième édition ajoute une troisième loi : la plupart des décisions architecturales ne sont pas binaires, mais se situent sur un continuum entre des extrêmes. Vous choisissez rarement entre « monolithe » et « microservices » ; vous choisissez combien d’unités déployables, découpées selon quelles lignes, partageant quoi.
Penser en compromis est l’habitude qui distingue le plus nettement la réflexion architecturale de l’enthousiasme. Quand quelqu’un propose une technologie, les questions utiles ne sont pas « est-ce bien ? » mais « que coûte-t-elle, que rend-elle plus difficile, et ces coûts sont-ils acceptables au regard de nos préoccupations ? ». La section précédente a montré d’où viennent ces préoccupations.
L’anatomie d’une décision
Une décision architecturale est plus que son résultat. Une décision que l’on peut expliquer, examiner et réexaminer comporte six parties, et les nommer est la première étape pour bien décider.
Contexte : les forces en présence. Le problème à résoudre, les exigences d’attributs de qualité qui s’y rapportent, les contraintes (budget, échéances, réglementations, systèmes existants, compétences de l’équipe) et les hypothèses retenues. Options : au moins deux alternatives réelles, y compris souvent « ne rien faire » ou « reporter ». Une décision pour laquelle une seule option a été envisagée est une annonce, pas une décision. Critères : la façon dont les options seront jugées, tirée des préoccupations des parties prenantes et pondérée selon leur importance. Décision et justification : l’option retenue et, surtout, la raison pour laquelle elle l’a emporté sur les autres au regard des critères. Conséquences : ce qui devient plus facile, ce qui devient plus difficile, quels nouveaux risques apparaissent et quelles options futures sont désormais fermées. Statut : proposée, acceptée, obsolète ou remplacée, avec qui a pris la décision et quand.
Les conséquences méritent une attention particulière, car c’est là que l’honnêteté est mise à l’épreuve. Toute option a des inconvénients ; les mettre par écrit protège l’équipe des surprises et donne à la personne qui prendra la décision suivante un compte rendu loyal. Les conséquences d’une décision font aussi partie du contexte de la suivante : une fois que vous avez choisi la messagerie asynchrone, vous devez décider comment traiter les messages en double et les messages qui arrivent dans le désordre.
Anatomie d’une décision architecturale
Portes à sens unique et portes à double sens
La propriété la plus utile d’une décision, à elle seule, est sa réversibilité : le coût et la sûreté avec lesquels on peut la défaire. Dans sa lettre de 2015 aux actionnaires d’Amazon, Jeff Bezos distinguait les décisions de type 1, lourdes de conséquences et irréversibles ou presque (« portes à sens unique »), des décisions de type 2, modifiables et réversibles (« portes à double sens »). Les décisions de type 1 méritent une délibération lente et soigneuse, avec consultation. Les décisions de type 2 doivent être prises rapidement par des individus ou de petits groupes dotés d’un bon jugement, car si elles s’avèrent mauvaises, on peut repasser la porte dans l’autre sens. Il avertissait que les grandes organisations ont tendance à appliquer à tout le processus lourd du type 1, ce qui les rend lentes et frileuses.
L’idée se transpose directement à l’architecture. En logiciel, une porte à sens unique est une décision qui, pour être défaite, exigerait de réécrire de grandes parties du système, de migrer de grandes quantités de données, de renégocier des contrats ou de reformer de nombreuses personnes : le langage de programmation principal d’une vaste base de code, le modèle de données d’un système de référence, l’API publique avec laquelle des centaines de partenaires s’intègrent, un engagement cloud sur plusieurs années. Parmi les portes à double sens figurent le choix d’une bibliothèque de journalisation placée derrière votre propre interface, la structure interne d’un module, le réglage d’un cache, ou le choix entre deux formats de message équivalents à l’intérieur d’un service.
Deux mises en garde. D’abord, la réversibilité est un continuum, pas une alternative binaire : la plupart des décisions se situent quelque part entre « trivial à défaire » et « impossible à défaire », et le coût d’un retour en arrière augmente généralement à mesure que davantage de code, de données et de personnes dépendent du choix. Une décision qui est une porte à double sens le premier mois peut devenir une porte à sens unique au douzième. Ensuite, vous pouvez souvent changer le type de porte face auquel vous vous trouvez, par la conception, comme le montre plus loin la section sur la réversibilité.
Le moment : le dernier moment responsable
Quand faut-il prendre une décision ? Mary et Tom Poppendieck, dans Lean Software Development: An Agile Toolkit (2003), ont popularisé l’idée de décider au dernier moment responsable : le moment où ne pas décider éliminerait une alternative importante. Avant ce moment, vous décidez avec moins d’informations que vous ne pourriez en avoir ; après, la décision est prise à votre place, par défaut, et généralement mal.
Le principe vaut dans les deux sens. Il plaide contre une décision trop précoce : figer la technologie de base de données la première semaine, avant de comprendre la forme des données et les schémas d’accès, revient à deviner. Il plaide tout autant contre une décision trop tardive. Si l’équipe a commencé à écrire du code de persistance en s’appuyant sur une hypothèse jamais formulée, la décision a déjà été prise, simplement pas consciemment. Si le service achats a besoin de six semaines pour approuver un fournisseur cloud, le dernier moment responsable pour ce choix se situe au moins six semaines avant que vous ayez besoin de l’environnement.
Les praticiens ne s’accordent pas sur la limite à ne pas franchir. Les critiques font valoir que le « dernier moment responsable » sert facilement de prétexte à la procrastination, que certaines décisions (structure des équipes, langage de programmation) façonnent tout ce qui suit et doivent donc être prises tôt, et que l’indécision a son propre coût : les équipes ne peuvent pas travailler en parallèle sans interfaces convenues. Les partisans répondent que le principe n’a jamais voulu dire « le plus tard possible » mais « aussi tard que c’est responsable », et qu’identifier ce moment est en soi un acte de planification. Les deux positions s’accordent sur le noyau pratique : sachez quelles décisions sont en attente, sachez quand chacune doit être prise, et utilisez le temps qui reste pour apprendre.
Décider trop tôt, trop tard et au bon moment
Concevoir pour la réversibilité
La façon la moins coûteuse de prendre une décision difficile est souvent de la transformer en une décision plus facile. Plusieurs techniques réduisent le coût d’un changement d’avis ultérieur, au prix d’un certain effort aujourd’hui.
L’abstraction à la frontière. Placez une interface étroite qui vous appartient entre votre logique centrale et une technologie que vous pourriez remplacer, comme un prestataire de paiement, un courtier de messages ou l’API d’un grand modèle de langage. Remplacer la technologie plus tard ne touchera alors qu’un adaptateur, et non toute la base de code. L’idée remonte au masquage de l’information (information hiding) de David Parnas (1972) et réapparaît dans l’architecture hexagonale (chapitre 5). Les feature flags (indicateurs de fonctionnalité). Livrez le nouveau comportement désactivé, activez-le pour une petite part des utilisateurs, et désactivez-le de nouveau en quelques secondes s’il se comporte mal ; les mises en production deviennent ainsi des portes à double sens. La migration incrémentale. Faites tourner l’ancien et le nouveau côte à côte et basculez le trafic progressivement plutôt qu’en une seule étape. Les spikes et les preuves de concept. Passez quelques jours à construire la partie la plus risquée avec une technologie candidate avant de vous y engager. Les sorties contractuelles. Préférez des engagements plus courts, des formats de données standard et la possibilité d’exporter vos données.
C’est le raisonnement en options, emprunté à la finance : vous payez une petite prime aujourd’hui (un adaptateur, un flag, un spike) pour acheter le droit, mais pas l’obligation, de changer de cap plus tard. Comme toute option, elle ne vaut la peine d’être achetée que si la prime est faible par rapport à la valeur de la flexibilité. Envelopper chaque bibliothèque dans une abstraction « au cas où nous la changerions » est une façon classique d’ajouter du coût et de l’indirection pour une flexibilité dont personne ne se sert. Achetez des options sur les décisions à la fois incertaines et coûteuses à inverser ; pour tout le reste, décidez et passez à la suite.
Guide de décision
Guide de décision : décider maintenant ou reporter ?
Utilisez-le pour toute décision susceptible d’être architecturalement significative. Parcourez les questions dans l’ordre.
- D’autres travaux sont-ils bloqués, ou une option importante va-t-elle bientôt disparaître si personne ne décide (par exemple un délai d’achat, ou une équipe qui commence à construire sur une hypothèse) ?OuiVous êtes au dernier moment responsable. Décidez maintenant avec les informations dont vous disposez, consignez la décision et ses hypothèses, et fixez une date pour la réexaminer.NonPassez à la question suivante.
- La décision est-elle peu coûteuse et sûre à inverser (une porte à double sens) ?OuiDécidez rapidement, au niveau pertinent le plus bas (souvent l’équipe responsable du code), consignez-la brièvement et passez à la suite. N’y consacrez pas une semaine de débat.NonC’est une porte à sens unique. Passez à la question suivante.
- Pouvez-vous la rendre plus réversible à peu de frais, par exemple avec une interface autour de la technologie, un feature flag ou un chemin de migration incrémentale ?OuiAchetez d’abord cette option, puis traitez la décision restante comme une porte à double sens.NonPassez à la question suivante.
- Des informations que vous pouvez raisonnablement obtenir avant l’échéance (un spike, un test de charge, une conversation avec une partie prenante) changeraient-elles le choix ?OuiReportez délibérément : nommez la décision, son responsable, la date à laquelle elle doit être prise et l’expérience qui l’éclairera.NonAttendre davantage n’aidera pas. Lancez dès maintenant une comparaison structurée (critères, pondérations, options), impliquez les parties prenantes qui assument les conséquences, et rédigez un enregistrement de décision d’architecture (ADR).
Les pièges cognitifs
Les architectes sont humains, et les décisions architecturales se prennent dans l’incertitude, sous la pression du temps et sous la pression sociale : des conditions idéales pour les biais cognitifs. Connaître les plus courants par leur nom permet de mieux les repérer chez soi et de les contester avec bienveillance chez les autres.
Les pièges qui faussent les décisions architecturales
| Piège | À quoi il ressemble | Parade |
|---|---|---|
| Ancrage | La première option mentionnée, ou la première estimation donnée, devient le point de référence auquel toutes les autres options sont comparées. | Générez plusieurs options indépendamment avant d’en discuter aucune ; demandez à chacun de noter ses estimations avant de les partager. |
| Coût irrécupérable | « Nous avons passé huit mois sur ce framework, nous ne pouvons pas l’abandonner maintenant », alors que la dépense passée est perdue quoi que vous décidiez. | Jugez les options uniquement sur leurs coûts et bénéfices futurs ; demandez-vous ce que vous choisiriez si vous partiez de zéro aujourd’hui. |
| Pensée de groupe | Une équipe soudée converge vite, le désaccord paraît déloyal, et personne n’exprime l’objection évidente. | Chargez quelqu’un de défendre la position contraire ; recueillez les avis par écrit avant la réunion ; invitez un relecteur extérieur. |
| Développement piloté par le CV | Une technologie est choisie parce qu’elle est passionnante à apprendre ou fait bien sur un CV, et non parce qu’elle convient au problème. | Exigez que chaque choix soit justifié au regard des critères convenus ; prévoyez un budget distinct pour le temps d’apprentissage. |
| Effet de mode et suivisme | « Tout le monde passe à X » tient lieu d’analyse ; des conférences de très grandes entreprises sont appliquées à de petites équipes. | Demandez quel problème X a résolu pour ceux qui l’ont adopté, et si vous avez ce problème à cette échelle. |
| Biais de confirmation | Les éléments en faveur de l’option préférée sont recherchés et retenus ; les éléments contraires sont écartés par des explications. | Notez à l’avance quel résultat vous ferait changer d’avis, puis lancez le spike ou le test. |
Exemple commenté
Exemple commenté : une matrice de décision pondérée
Une entreprise de livraison de repas construit un nouveau service des commandes. Les commandes impliquent un paiement et ne doivent jamais être perdues ni débitées deux fois. L’équipe de six personnes connaît bien PostgreSQL et n’a pas d’administrateur de bases de données dédié. Trois options sont sur la table : (A) un service PostgreSQL managé de leur fournisseur cloud, (B) la base de données orientée documents managée et propriétaire du fournisseur, et (C) PostgreSQL auto-hébergé sur des machines virtuelles. L’équipe construit une matrice de décision pondérée : elle convient de critères et de pondérations à partir des préoccupations des parties prenantes (5 = le plus important), puis note chaque option de 1 (médiocre) à 5 (excellent).
| Intégrité transactionnelle (poids 5) | A : 5, B : 3, C : 5. Les transactions sur plusieurs lignes sont au cœur des commandes et des paiements ; la base orientée documents les prend en charge avec davantage de restrictions. |
|---|---|
| Effort opérationnel (poids 4) | A : 4, B : 5, C : 2. L’auto-hébergement implique correctifs, sauvegardes et basculement assurés par une équipe sans spécialiste des bases de données. |
| Familiarité de l’équipe (poids 3) | A: 5, B: 2, C: 4. |
| Coût à la charge prévue (poids 3) | A: 3, B: 4, C: 4. |
| Marge de capacité (poids 2) | A : 3, B : 5, C : 3. La croissance attendue est d’environ trois fois en deux ans, largement à la portée d’une seule grande instance PostgreSQL. |
| Réversibilité et dépendance au fournisseur (poids 2) | A : 4, B : 2, C : 5. Un PostgreSQL standard peut passer d’un fournisseur à l’autre ; l’API propriétaire, non. |
| Totaux pondérés (maximum 95) | A: 25 + 16 + 15 + 9 + 6 + 8 = 79. B: 15 + 20 + 6 + 12 + 10 + 4 = 67. C: 25 + 8 + 12 + 12 + 6 + 10 = 73. |
| Test de sensibilité | Portez la marge de capacité au poids 5 (comme si l’on attendait une croissance d’un facteur cinquante) : A 88, B 82, C 82. Abaissez l’effort opérationnel au poids 1 (comme si une équipe plateforme gérait les bases de données pour eux) : A 67, B 52, C 67, soit une égalité entre A et C. |
| Décision | Option A, PostgreSQL managé. Elle l’emporte avec les pondérations convenues et reste première ou ex aequo sous des variations plausibles. Conséquences consignées : une facture mensuelle plus élevée qu’en auto-hébergement ; une dépendance aux fenêtres de maintenance du fournisseur ; un plan pour garder le schéma et les requêtes standard afin que l’option C reste une solution de repli. |
Les chiffres ne prennent pas la décision ; ils rendent le raisonnement visible. Quiconque n’est pas d’accord peut désigner une pondération ou une note précise au lieu de contester l’ensemble.
Le test de sensibilité est l’étape la plus instructive : il montre de quelles hypothèses dépend le résultat. Ici, l’issue tient surtout au manque de capacité de l’équipe à exploiter des bases de données.
Les matrices peuvent être manipulées en choisissant les critères et les pondérations une fois que l’option favorite est connue. Convenez des critères et des pondérations avant de noter, idéalement avec les parties prenantes dont ils représentent les préoccupations.
Consigner les décisions : un aperçu des ADR
La deuxième loi dit que le pourquoi compte plus que le comment ; le pourquoi doit donc être mis par écrit. Le format léger le plus utilisé est l’enregistrement de décision d’architecture (ADR), proposé par Michael Nygard dans un billet de blog de 2011. Un ADR est un court fichier texte, conservé avec le code dans la gestion de versions, qui consigne une décision selon l’anatomie décrite plus haut : titre, statut, contexte, décision et conséquences. Les ADR ne sont jamais modifiés pour réécrire l’histoire ; une décision ultérieure remplace une décision antérieure et y renvoie, de sorte que le journal raconte comment l’architecture a évolué.
Le chapitre 4 présente les modèles, les outils et les habitudes qui gardent les ADR utiles, dans Enregistrements de décision d’architecture (ADR). L’exemple ci-dessous consigne la décision de l’exemple commenté.
ADR 7: Use managed PostgreSQL for the order service
Status: Accepted (2026-10-12)
Context
Orders and payments need multi-row transactions and must never be lost.
The team knows PostgreSQL well and has no database administrator.
Expected growth is about 3x in two years.
Decision
We will use the cloud provider's managed PostgreSQL service.
Consequences
+ Backups, patching and failover are handled by the provider.
+ Standard SQL keeps self-hosting or another provider open as a fallback.
- Monthly cost is about 30% higher than self-hosting at current load.
- Maintenance windows are set by the provider.
Revisit if write volume exceeds what one primary instance can handle.Vérifiez votre compréhension
Quelle est la différence entre la première et la deuxième loi de Richards et Ford ?
La première dit que tout choix architectural est un compromis. La deuxième dit que le raisonnement derrière un choix (le pourquoi) compte plus que sa mise en œuvre (le comment), parce que le pourquoi ne peut pas être retrouvé à partir du code.
Donnez un exemple de porte à double sens et un exemple de porte à sens unique dans une application web typique.
À double sens : la bibliothèque de journalisation utilisée derrière votre propre interface, ou le réglage d’expiration d’un cache. À sens unique : le modèle de données d’un système de référence, ou une API publique dont dépendent déjà de nombreux partenaires.
Pourquoi décider trop tôt peut-il être aussi nuisible que décider trop tard ?
Trop tôt signifie décider avec moins d’informations que vous n’auriez pu en avoir, souvent en devinant. Trop tard signifie que la décision est en fait prise par défaut, à travers des hypothèses déjà intégrées au code ou aux plans, ou qu’une option a expiré.
Qu’apporte un test de sensibilité à une matrice de décision pondérée ?
Il montre si l’option gagnante gagne encore quand les pondérations ou les notes varient dans des plages plausibles, ce qui révèle de quelles hypothèses dépend la décision.
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 hésitons entre adopter un courtier d’événements maintenant ou plus tard. Comment savoir s’il s’agit d’une porte à sens unique, et quand nous devons réellement décider ? »