Read in English · Leer en español · Auf Deutsch lesen
Section 2.1 sur 2.8 · Intermédiaire · 18 min de lecture
Exigences fonctionnelles, attributs de qualité et contraintes
Leçon vidéo
5 min · narré en anglais, avec sous-titresÉcouter seulement (audio)
Lire la transcription
Cette leçon porte sur les trois types d’exigences que comporte tout système. À la fin, vous saurez repérer le petit nombre d’exigences qui déterminent vraiment une conception.
Pensez à la commande d’un gâteau de mariage. Trois étages, génoise au citron, glaçage blanc. Cela décrit ce qu’est le gâteau : ses fonctions. Prêt pour quatorze heures le samedi, capable de supporter quarante minutes de route, sans danger pour un invité allergique aux fruits à coque. Cela décrit à quel point il doit bien fonctionner : ses qualités. Et le lieu de réception n’accepte que les gâteaux de pâtissiers agréés. C’est une contrainte, un choix déjà fait pour vous. Ce sont les qualités et les contraintes, et non le parfum, qui décident de la façon dont le gâteau est construit et transporté. Il en va de même pour les logiciels.
En logiciel, une exigence fonctionnelle indique ce que le système doit faire. Par exemple, un client peut ajouter un article au panier. Un attribut de qualité indique à quel point il doit bien le faire. Les résultats de recherche s’affichent en moins d’une demi-seconde. Les attributs de qualité n’ont de sens qu’assortis d’une mesure : assez rapide pour qui, sous quelle charge, mesuré comment ? Une contrainte est une décision déjà prise : une réglementation, une technologie imposée, une échéance ou un budget. Les contraintes suppriment des options.
Vous rencontrerez souvent le terme exigences non fonctionnelles. Il faut savoir le reconnaître, mais de nombreux architectes l’évitent, pour trois raisons. Premièrement, il définit une catégorie vaste et importante par ce qu’elle n’est pas. Deuxièmement, il laisse entendre que ces exigences sont séparées des fonctions et peuvent être ajoutées plus tard. Ce n’est pas le cas. C’est l’étape de paiement qui doit être rapide, et le paiement qui ne doit jamais être perdu. Troisièmement, non fonctionnel semble facultatif. Or les systèmes qui marchent mais qui sont lents, peu sûrs ou impossibles à modifier sont exactement ceux que l’on réécrit. Ce cours parle plutôt d’attributs de qualité et de contraintes.
La plupart des exigences n’affectent pas du tout l’architecture. Ce schéma montre comment reconnaître celles qui l’affectent. Les trois types d’exigences, fonctions, qualités et contraintes, arrivent par la gauche. Pour chacune, posez une seule question : si cette exigence changeait, la structure du système devrait-elle changer ? Si oui, c’est une exigence architecturalement significative, ou ASR, et elle oriente les décisions d’architecture. La plupart sont des qualités ou des contraintes. Si non, elle relève de la conception détaillée et du code, et peut se changer en un après-midi.
Voici l’idée centrale de ce chapitre. Deux systèmes de billetterie ont des fonctionnalités identiques : parcourir les événements, bloquer des places, payer. Une salle des fêtes de trois cents places reçoit quelques requêtes par seconde à son moment le plus chargé. Une seule application web et une seule base de données sont la bonne réponse : bon marché, simple et facile à modifier. Une tournée dans des stades de soixante mille places doit absorber un afflux des milliers de fois plus important. Il lui faut donc un réseau de diffusion de contenu, une salle d’attente virtuelle, de nombreuses instances web et une file d’attente des paiements. Et comme elle ne doit jamais vendre deux fois la même place, il lui faut un inventaire des places soigneusement conçu, sur un stockage partitionné. Mêmes fonctions, architectures complètement différentes.
Étudions une vraie mise en vente. Une société de billetterie vend quatre soirs dans un stade de soixante mille places. Cela fait deux cent quarante mille billets. Le marketing attend un million et demi de personnes dans les dix premières minutes. Cela fait deux mille cinq cents arrivées par seconde, environ quatre mille cinq cents fois le taux normal. Si chaque navigateur envoie environ huit requêtes dans la première minute, le site doit faire face à vingt mille requêtes par seconde. Le prestataire de paiement autorise trois cents autorisations par seconde. À deux billets et demi par commande, cela fait quatre-vingt-seize mille commandes, ce qui prend au moins trois cent vingt secondes, soit cinq virgule trois minutes. Le système doit donc bloquer les places et mettre les paiements en file d’attente. Cela donne cinq exigences architecturalement significatives : la charge de pointe, aucune place vendue deux fois, l’équité grâce à une salle d’attente, la résistance aux bots et la dégradation gracieuse. Aucune ne figure dans la liste des fonctionnalités.
Certaines des qualités les plus importantes ne sont jamais écrites, parce que tout le monde les tient pour acquises. Ne pas perdre de commandes. Ne pas débiter deux fois le client. Ces exigences implicites n’apparaissent que lorsqu’elles sont enfreintes, généralement en production. Pour les faire émerger, demandez aux parties prenantes ce qui les mettrait hors d’elles, ou ce qui ferait passer l’entreprise dans les journaux. Deux erreurs courantes à éviter. Rédiger des qualités sans mesures : on ne peut ni concevoir ni tester pour hautement disponible. Et supposer que la qualité peut être ajoutée une fois les fonctionnalités construites. Les performances, la sécurité et la disponibilité dépendent de la structure, et coûtent cher à ajouter après coup.
La section complète présente les types de contraintes, une liste de contrôle pour repérer les exigences significatives et l’exemple de billetterie en entier. Ensuite, dans la section deux point deux, nous verrons les modèles de qualité, et comment les utiliser comme liste de contrôle. À très vite.
Ce qu’il faut savoir
- Les exigences fonctionnelles indiquent ce qu’un système doit faire ; les attributs de qualité indiquent avec quel niveau de qualité il doit le faire ; les contraintes sont des décisions déjà prises, comme les réglementations, les technologies imposées, les délais et les budgets.
- De nombreux architectes évitent le terme « exigences non fonctionnelles », car il définit une vaste catégorie par exclusion, laisse entendre que ces exigences sont séparées des fonctions et semble facultatif.
- Une exigence architecturalement significative (ASR) est une exigence dont la modification imposerait de changer la structure du système ; la plupart des ASR sont des attributs de qualité ou des contraintes, mais certaines fonctions sont aussi significatives.
- Les mêmes fonctions peuvent être fournies par des architectures très différentes ; ce sont les attributs de qualité et les contraintes qui permettent de choisir entre elles.
- Les exigences implicites, comme ne jamais perdre de commande ou ne jamais débiter deux fois, sont rarement écrites et doivent être activement recueillies auprès des parties prenantes et tirées des incidents et des réglementations.
Trois types d’exigences
Une exigence est tout ce qu’un système doit satisfaire pour être acceptable aux yeux de ses parties prenantes. Les architectes trouvent utile de classer les exigences en trois types, car chaque type influence la conception d’une manière différente. Une exigence fonctionnelle indique ce que le système doit faire : « un client peut ajouter un article au panier », « le système de la pharmacie vérifie chaque nouvelle ordonnance au regard des allergies du patient », « un passager peut voir la position du chauffeur sur une carte ». Les exigences fonctionnelles décrivent le comportement, les données et les règles qui les relient. C’est ce que capturent la plupart des récits utilisateur (user stories) et des cas d’utilisation.
Un attribut de qualité indique à quel point le système doit bien le faire. « Les résultats de recherche s’affichent en moins d’une demi-seconde », « le service de réservation est disponible 99,95 % du temps », « un nouveau prestataire de paiement peut être ajouté en moins de deux semaines », « les dossiers des patients ne sont lisibles que par les cliniciens qui traitent ce patient ». Les attributs de qualité sont des propriétés du système dans son ensemble ou d’une fonction, et ils n’ont de sens qu’assortis d’une mesure : assez rapide pour qui, sous quelle charge, mesuré comment ?
Une contrainte est une décision qui a déjà été prise pour vous. « Le système doit tourner dans le tenant Azure existant de l’entreprise », « toutes les données à caractère personnel restent dans l’Union européenne », « l’équipe connaît Java et n’a pas de budget pour se former à autre chose », « la première version doit être en production avant le début de l’exercice fiscal, le 6 avril ». Les contraintes suppriment des options plutôt que de décrire un comportement. Elles ne sont pas négociables au sein du projet, même si un bon architecte vérifie que chacune est réellement une contrainte et pas seulement une habitude ou une hypothèse.
Les frontières ne sont pas toujours nettes, et ce n’est pas grave. Le but de la classification n’est pas l’ordre bureaucratique ; il est de s’assurer que personne ne recueille cinquante récits utilisateur en oubliant de demander combien d’utilisateurs il y aura, combien de temps l’entreprise peut survivre à une panne, ou quel régulateur surveille.
Comment les exigences atteignent l’architecture
Pourquoi de nombreux architectes évitent le terme « exigences non fonctionnelles »
Les documents d’exigences séparent traditionnellement tout en exigences fonctionnelles et exigences non fonctionnelles (NFR). Le terme est partout, dans les contrats, les dossiers d’appel d’offres et les offres d’emploi, il faut donc savoir le reconnaître. De nombreux architectes et chercheurs l’évitent pourtant, pour trois raisons.
Premièrement, il définit une catégorie vaste et importante par ce qu’elle n’est pas. Tout ce qui n’est pas une fonction finit dans le même sac : temps de réponse, règles de chiffrement, choix du fournisseur de cloud et couleur du logo. L’article de Martin Glinz On Non-Functional Requirements (IEEE International Requirements Engineering Conference, 2007) a montré que les définitions publiées ne s’accordent pas sur ce qui appartient à cette catégorie, et qu’un même besoin peut être classé d’un côté ou de l’autre selon sa formulation : « seul le personnel autorisé peut voir les salaires » se lit comme une fonction lorsqu’il est écrit comme une règle d’accès, et comme une qualité lorsqu’il est écrit comme un objectif de sécurité.
Deuxièmement, le nom laisse entendre que ces exigences sont séparées des fonctions et peuvent être ajoutées plus tard. Ce n’est pas le cas. Un attribut de qualité qualifie une fonction : c’est l’étape de paiement qui doit être rapide, le paiement qui ne doit jamais être perdu, le dossier médical qui doit rester confidentiel. Bass, Clements et Kazman, dans Software Architecture in Practice, parlent donc d’exigences d’attributs de qualité et traitent les contraintes comme une catégorie distincte.
Troisièmement, « non fonctionnel » semble facultatif, comme si un système qui marche mais qui est lent, peu sûr ou impossible à modifier « fonctionnait » quand même. En pratique, ce sont exactement ces systèmes-là que l’on réécrit. Certaines équipes préfèrent « exigences de qualité » ; d’autres, notamment chez Thoughtworks, disent « exigences transverses » (cross-functional requirements) pour souligner qu’elles traversent toutes les fonctionnalités. Ce cours parle d’attributs de qualité et de contraintes. Si votre organisation parle de NFR, inutile de se battre sur le mot ; assurez-vous simplement que chaque NFR est soit une qualité mesurable, soit une contrainte clairement formulée.
Contraintes : techniques, organisationnelles, réglementaires, de délai et de budget
Les contraintes méritent plus d’attention qu’on ne leur en accorde habituellement, car elles déterminent souvent une plus grande part de l’architecture que n’importe quelle fonctionnalité. Une contrainte est simplement une exigence qui ne laisse plus aucune liberté. Il est utile de les regrouper selon leur origine.
Types de contraintes et leur effet sur l’architecture
| Type | Exemple | Effet typique sur l’architecture |
|---|---|---|
| Technique | Doit s’intégrer au système financier SAP existant par ses interfaces publiées ; doit tourner sur la plateforme Kubernetes de l’entreprise. | Fixe les styles d’intégration, les formats de données et le modèle de déploiement ; peut exclure certaines bases de données ou certains langages. |
| Organisationnelle | Trois équipes sur deux fuseaux horaires ; l’équipe d’exploitation ne prend en charge que PostgreSQL ; l’équipe sécurité doit approuver chaque dépendance externe. | Détermine la façon dont le système est découpé (loi de Conway, chapitre 3) et les technologies réalistes. |
| Réglementaire et juridique | Les données à caractère personnel des résidents de l’UE sont traitées dans le cadre du RGPD ; les données de cartes relèvent de PCI DSS ; un dispositif médical doit respecter les réglementations en matière de sécurité. | Détermine la localisation des données, le chiffrement, la journalisation d’audit, les règles de conservation et la séparation des composants sensibles. |
| Durée | Les nouvelles règles fiscales s’appliquent à partir d’une date fixe ; une plateforme de commerce de détail doit être prête avant le pic de novembre. | Favorise les technologies éprouvées et les conceptions plus simples ; peut imposer une mise en production par étapes avec une dette technique connue. |
| Budget | Les coûts de fonctionnement doivent rester sous un montant mensuel fixe ; pas d’argent pour des licences commerciales. | Limite la redondance, les régions et les services managés ; fait du coût par transaction une qualité explicite. |
Deux habitudes aident. D’abord, notez la source de chaque contrainte (une réglementation, un contrat, un décideur nommément désigné) afin qu’elle puisse être vérifiée et, si les circonstances changent, réexaminée. Ensuite, distinguez les vraies contraintes des préférences déguisées en contraintes. « Nous devons utiliser des microservices » est rarement une contrainte ; c’est une décision de conception que quelqu’un a prise tôt, et elle doit être justifiée par des attributs de qualité comme toute autre décision. La section du chapitre 1 sur les décisions et les compromis explique pourquoi les choix précoces et difficiles à défaire méritent cet examen.
Exigences architecturalement significatives
La plupart des exigences n’affectent pas l’architecture. Que la facture affiche le code postal du client au-dessus ou en dessous du nom de la rue est un détail ; cela peut se changer en un après-midi. Une exigence architecturalement significative (ASR) est une exigence qui a un effet mesurable sur l’architecture : si elle changeait, la structure du système devrait changer. Repérer les ASR tôt est important, car il coûte cher d’en tenir compte tardivement. Ajouter une salle d’attente à un site de billetterie la semaine précédant une mise en vente est possible ; partitionner l’inventaire des places sur plusieurs serveurs après le lancement revient à tout réécrire.
Lianping Chen, Muhammad Ali Babar et Bashar Nuseibeh ont interrogé des praticiens sur la façon dont ils reconnaissent les ASR (Characterizing Architecturally Significant Requirements, IEEE Software, 2013). Leurs conclusions rejoignent l’expérience de la plupart des architectes. Les ASR sont généralement difficiles à satisfaire, elles concernent souvent le système dans son ensemble plutôt qu’une seule fonctionnalité, elles entrent fréquemment en conflit les unes avec les autres, et elles sont souvent formulées de façon vague, voire pas du tout. Les attributs de qualité et les contraintes en constituent la majorité, mais certaines exigences fonctionnelles sont aussi significatives.
Exemples d’ASR fonctionnelles : « chaque modification d’un dossier patient doit pouvoir être rattachée à une personne et à un moment » (il faut un mécanisme d’audit dans tous les composants), « les utilisateurs peuvent collaborer sur le même document en temps réel » (cela exige un modèle de synchronisation et probablement un autre style de communication), et « les clients peuvent annuler un virement bancaire dans les 30 minutes » (cela affecte la façon dont l’argent circule entre les comptes). Chacune impose une décision structurelle, pas seulement davantage de code.
Pourquoi les qualités façonnent l’architecture davantage que les fonctions
Voici l’idée centrale de ce chapitre. Si seule la fonctionnalité comptait, presque n’importe quelle structure ferait l’affaire : vous pourriez écrire tout le système comme un seul gros programme, et il calculerait toujours les bonnes réponses. Bass, Clements et Kazman le disent directement : la fonctionnalité ne détermine pas l’architecture, car de nombreuses architectures différentes peuvent fournir les mêmes fonctions. Ce qui les distingue, c’est la manière dont chacune atteint les qualités.
Prenons deux systèmes de billetterie aux fonctionnalités identiques : parcourir les événements, bloquer des places, payer. L’un vend des billets pour une salle des fêtes de 300 places ; l’autre vend une tournée dans des stades de 60 000 places. Le moment le plus chargé de la salle des fêtes apportera peut-être quelques requêtes par seconde, et une seule application web avec une seule base de données est la bonne réponse : bon marché, simple et facile à modifier. La tournée des stades doit absorber un afflux des milliers de fois plus important, ne doit jamais vendre deux fois la même place et doit empêcher les bots de tout acheter dans la première seconde. Ce système a besoin d’un réseau de diffusion de contenu, d’une file d’attente devant la boutique, d’un inventaire des places soigneusement conçu, d’un stockage partitionné et d’un flux de paiement capable d’attendre un prestataire surchargé. Mêmes fonctions, architectures complètement différentes, et la différence vient entièrement des attributs de qualité et des contraintes.
Mêmes fonctions, qualités différentes
Les qualités implicites que personne n’écrit
Certaines des qualités les plus importantes ne sont jamais énoncées, car toutes les parties prenantes les tiennent pour acquises. Ces exigences implicites n’apparaissent que lorsqu’elles sont violées, généralement en production. Personne n’écrit « ne pas perdre de commandes », « ne pas débiter deux fois le client », « continuer à fonctionner lors du passage à l’heure d’été », « afficher le même solde sur le téléphone et sur le site web » ou « ne pas divulguer les données d’un client à un autre ». Pourtant, chacune est une ASR aux lourdes conséquences : traitement idempotent des paiements, écritures durables, planification robuste aux changements d’heure, cohérence entre les canaux et isolation stricte entre clients.
Les exigences implicites se cachent pour des raisons sociales. Les parties prenantes métier les jugent trop évidentes pour être mentionnées ; les développeurs supposent que quelqu’un d’autre s’en est occupé ; et les gabarits d’exigences y font rarement penser. Voici des questions utiles pour les débusquer : « Qu’est-ce qui vous mettrait hors de vous si cela arrivait ? », « Qu’est-ce qui nous ferait passer dans les journaux ? », « Qu’est-ce qui a mal tourné avec le système que nous remplaçons ? » et « Pour quoi réveille-t-on l’équipe d’exploitation ? ». Les rapports d’incident et les tickets de support des systèmes précédents en sont une source riche ; il en va de même des recommandations publiées par les régulateurs et des obligations figurant dans les contrats clients.
Exemple commenté
Exemple commenté : un système de billetterie de concerts le jour de la mise en vente
Une société de billetterie va mettre en vente quatre soirs de concerts dans un stade (60 000 places par soir) un vendredi à 10 h 00. Un jour normal, le site reçoit environ 2000 visiteurs par heure. Le marketing s’attend à ce que 1,5 million de personnes arrivent dans les dix premières minutes. Les fonctionnalités sont les habituelles : parcourir, choisir des places, les bloquer pendant dix minutes, payer. Quelles sont les exigences architecturalement significatives ?
| Billets en vente | 4 soirs × 60 000 places = 240 000 billets |
|---|---|
| Taux d’arrivée normal | 2000 visiteurs ÷ 3600 s ≈ 0,56 visiteur par seconde |
| Taux d’arrivée le jour de la vente | 1 500 000 visiteurs ÷ 600 s = 2500 visiteurs par seconde, soit environ 4500 fois le taux normal |
| Débit de requêtes | Si le navigateur de chaque visiteur envoie environ 8 requêtes au site dans la première minute (pages, plans de salle, appels d’API) : 2500 × 8 = 20 000 requêtes par seconde |
| Demande et offre | 1 500 000 visiteurs pour 240 000 billets : la plupart des gens seront déçus quelle que soit la conception, donc l’équité et une communication claire comptent autant que la vitesse |
| Contrainte de paiement | Le contrat du prestataire de paiement autorise 300 autorisations de paiement par seconde. Avec une moyenne de 2,5 billets par commande, 240 000 ÷ 2,5 = 96 000 commandes ; 96 000 ÷ 300 = 320 s, donc les paiements à eux seuls prennent au moins 5,3 minutes, même si tout le reste est instantané |
| ASR 1 : charge de pointe (performances) | Absorber 2500 arrivées par seconde sans s’effondrer ; servir les pages statiques et les plans de salle depuis un cache ou un CDN, afin que seuls les vrais achats atteignent le cœur du système |
| ASR 2 : aucune place vendue deux fois (cohérence) | Le blocage des places doit être atomique, même lorsque des milliers de personnes cliquent sur le même bloc au même moment ; cela façonne la conception de l’inventaire et son stockage |
| ASR 3 : équité (règle métier à impact structurel) | Admettre les acheteurs dans leur ordre d’arrivée grâce à une salle d’attente virtuelle, afin que le cœur du système voie un flux contrôlé plutôt qu’une ruée |
| ASR 4 : résistance aux bots (sécurité) | Détecter et bloquer les acheteurs automatisés avant qu’ils n’atteignent l’inventaire ; limiter le débit par compte et par appareil |
| ASR 5 : dégradation gracieuse (disponibilité) | Si les paiements ralentissent, maintenir la validité des places bloquées et mettre les tentatives de paiement en file d’attente plutôt que de faire échouer des commandes entières |
| Contrainte | Date et heure fixes annoncées à l’avance ; limite du prestataire de paiement de 300 par seconde |
Aucune de ces ASR ne figure dans la liste des fonctionnalités. Toutes découlent de la charge, de la cohérence, de l’équité, de la sécurité et d’une contrainte imposée par un tiers.
La limite de paiement se traduit directement en décision de conception : comme les acheteurs ne peuvent pas tous payer en même temps, le système doit bloquer les places et mettre les paiements en file d’attente, ce qui détermine à son tour la durée du blocage.
Le monde réel offre un rappel. En novembre 2022, la prévente de Ticketmaster pour une grande tournée des stades a subi de longs retards et des défaillances sous l’effet de la demande ; l’entreprise a fait état de 3,5 milliards de requêtes système au total, quatre fois son précédent pic.
Liste de contrôle : repérer les exigences architecturalement significatives
Passez ces questions en revue pour chaque exigence candidate, et pour le système dans son ensemble, tôt dans le projet.
- Sa modification changerait-elle la structure ?Si doubler le chiffre, assouplir la règle ou supprimer l’exigence ferait bouger des composants, des données ou des chemins de communication, elle est significative.
- S’applique-t-elle à de nombreuses fonctionnalités ?Les exigences qui traversent tout le système (audit, sécurité, disponibilité, internationalisation) appellent généralement une réponse structurelle.
- Est-elle difficile ou nouvelle ?Un chiffre exigeant (moins de 100 ms, 99,99 %), une charge très supérieure à tout ce que l’équipe a déjà géré ou une fonctionnalité inédite sont des signaux forts.
- Porte-t-elle une forte valeur métier ou un risque élevé ?Si ne pas la satisfaire ferait perdre du chiffre d’affaires, enfreindrait la loi ou causerait du tort à quelqu’un, traitez-la comme significative même si elle paraît simple.
- Entre-t-elle en conflit avec une autre qualité ?Les exigences en tension (rapide et fortement cohérent, ouvert et sécurisé) nécessitent des compromis délibérés, qui sont des décisions architecturales.
- S’agit-il d’une contrainte déguisée ?Les technologies imposées, les réglementations, les échéances et les budgets suppriment des options ; consignez-les avec leur source.
- A-t-elle déjà causé des problèmes ?Examinez les incidents, les tickets de support et les post-mortems du système remplacé, ainsi que de systèmes similaires ailleurs.
- Quelqu’un la suppose-t-il en silence ?Demandez ce qui mettrait les parties prenantes hors d’elles ou ferait parler de l’entreprise dans les médias ; ces réponses révèlent des exigences implicites.
Comment les professionnels travaillent avec les ASR
Les architectes expérimentés tiennent une liste courte et vivante d’ASR, généralement de cinq à quinze éléments, plutôt qu’un long document d’exigences. Chaque élément formule la qualité sous forme de scénario testable (section 2.3), nomme la partie prenante concernée, consigne sa priorité et renvoie aux décisions qu’il a orientées. Le modèle arc42, par exemple, demande les trois à cinq principaux objectifs de qualité dès sa première page, puis une liste plus complète des exigences de qualité plus loin. La liste est revue chaque fois qu’une décision importante est prise ou que l’entreprise change de cap, et les éléments les plus importants finissent par être adossés à des vérifications automatisées appelées fonctions d’aptitude, présentées à la section 2.8.
Vérifiez votre compréhension
« Les patients peuvent prendre rendez-vous en ligne » : est-ce une exigence fonctionnelle, un attribut de qualité ou une contrainte ?
Une exigence fonctionnelle : elle indique ce que le système doit faire. Une qualité ajouterait à quel point il doit bien le faire, par exemple la rapidité de confirmation des réservations ou le nombre de réservations que l’on peut traiter le lundi à 8 h.
Pourquoi « le système doit être scalable » n’est-il pas encore une exigence utile ?
Elle n’a ni stimulus, ni contexte, ni mesure. Elle ne dit pas quelle charge, à quelle vitesse la charge augmente, ni quelle réponse doit être préservée, si bien que personne ne peut concevoir en fonction d’elle ni la tester.
Donnez un exemple d’exigence fonctionnelle architecturalement significative.
Par exemple, une piste d’audit complète de chaque modification des dossiers médicaux, ou l’édition collaborative en temps réel. Chacune nécessite un mécanisme structurel dans tout le système, et pas seulement davantage de code à un seul endroit.
Quelle question permet le mieux de distinguer une exigence significative d’une exigence ordinaire ?
La structure du système devrait-elle changer si cette exigence changeait ? Si oui, elle est architecturalement significative.
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 : « Comment savoir si une exigence de mon projet est architecturalement significative ou s’il s’agit d’un simple détail pour les développeurs ? »