Read in English · Leer en español · Auf Deutsch lesen
Chapitre 2 sur 12 · Intermédiaire
Attributs de qualité et exigences architecturalement significatives
L’architecture existe pour apporter des qualités : la rapidité sous la charge, le maintien en service quand des parties tombent en panne, la possibilité de modifier sans risque, la confidentialité des données. Ce chapitre montre comment transformer des souhaits vagues comme « rapide », « fiable » et « sécurisé » en exigences précises et testables, capables d’orienter les décisions de conception. Il couvre la différence entre exigences fonctionnelles, attributs de qualité et contraintes, le modèle de qualité ISO/IEC 25010, les scénarios d’attributs de qualité, l’arithmétique des performances et de la disponibilité, la conception pour le changement, la sécurité, l’utilisabilité et le coût en tant que qualités, et la manière de les éliciter, de les hiérarchiser et d’arbitrer entre eux. Il s’adresse aux développeurs qui s’orientent vers l’architecture et à toute personne qui rédige ou relit des exigences.
Introduction vidéo au chapitre 2
6 min · narré en anglais, avec sous-titresÉcouter seulement (audio)
Lire la transcription
Bienvenue dans le chapitre 2 : Attributs de qualité et exigences architecturalement significatives. L’architecture existe pour apporter des qualités : la rapidité sous la charge, le maintien en service quand des parties tombent en panne, la possibilité de modifier sans risque, la confidentialité des données. Ce chapitre montre comment transformer des souhaits vagues, comme rapide, fiable et sécurisé, en exigences précises et testables, capables d’orienter les décisions de conception.
Demandez à n’importe quel groupe de parties prenantes ce qu’un système doit faire, et vous obtiendrez une liste de fonctionnalités : rechercher un vol, payer un panier, prendre un rendez-vous. Demandez-leur à quel point il doit bien le faire, et les réponses sont plus vagues : il doit être rapide, il ne doit pas tomber en panne, il doit être sécurisé. Ces secondes réponses sont des attributs de qualité, et c’est surtout d’eux que traite l’architecture. Une exigence qui a un effet mesurable sur la structure d’un système s’appelle une exigence architecturalement significative. La plupart d’entre elles s’avèrent être des attributs de qualité ou des contraintes, plutôt que des fonctions.
Ce schéma de la section deux point un le montre bien. Deux systèmes de billetterie ont des fonctionnalités identiques : parcourir les événements, bloquer des places et payer. L’un vend des billets pour une salle des fêtes de trois cents places. Son moment le plus chargé apporte quelques requêtes par seconde, donc une seule application web avec une seule base de données est la bonne réponse : bon marché, simple et facile à modifier. L’autre vend une tournée dans des stades de soixante mille places. Il doit absorber un afflux des milliers de fois plus important, et ne jamais vendre deux fois la même place. Il lui faut donc un cache de pages, une salle d’attente virtuelle, un inventaire des places soigneusement conçu, un stockage partitionné et une file d’attente des paiements. Mêmes fonctions, architectures complètement différentes. La différence vient entièrement des attributs de qualité et des contraintes.
Ce chapitre s’adresse aux développeurs qui s’orientent vers l’architecture. Il s’adresse aussi à toute personne qui rédige ou relit des exigences. Il vous faudra une certaine aisance avec l’arithmétique simple : pourcentages, multiplications et divisions. Il s’appuie sur l’idée, vue au chapitre 1, que l’architecture existe pour répondre aux préoccupations des parties prenantes au moyen de compromis. Ce chapitre rend ces préoccupations précises. Et il mène au chapitre 3, qui présente les principes de conception que les architectes utilisent pour atteindre ces qualités.
Il comporte huit sections. La section deux point un distingue exigences fonctionnelles, attributs de qualité et contraintes, et étudie un système de billetterie de concerts le jour où une grande tournée est mise en vente. La section deux point deux présente la norme internationale sur la qualité des produits, avec ses neuf caractéristiques, et montre comment l’utiliser comme aide-mémoire plutôt que comme formulaire à remplir. La section deux point trois enseigne la technique la plus utile du chapitre : le scénario d’attribut de qualité en six parties, qui transforme doit être rapide en un énoncé que vous pouvez tester.
Voici sa forme. Un scénario raconte une courte histoire, de gauche à droite. Une source, quelqu’un ou quelque chose, produit un stimulus : un événement auquel le système doit répondre, comme un afflux de requêtes ou la panne d’un serveur. Le stimulus atteint un artefact, le système entier ou l’une de ses parties, dans un environnement : fonctionnement normal, pic de charge, mode dégradé ou attaque. L’artefact répond, et la réponse est jugée par une mesure de la réponse : le chiffre. Le stimulus et la mesure de la réponse sont les deux parties que l’on omet le plus souvent, et les deux qui comptent le plus. L’exemple en dessous rassemble le tout : cinq cents acheteurs par seconde arrivent à l’étape de paiement le jour du Black Friday, et les commandes sont confirmées en une seconde et demie au plus au quatre-vingt-dix-neuvième percentile, sans aucune commande perdue.
Les sections deux point quatre à deux point sept passent en revue les qualités qui façonnent le plus souvent les architectures. La section deux point quatre traite des performances et de la scalabilité, avec de vrais calculs : latence et débit, percentiles, files d’attente et limites de l’ajout de processeurs. La section deux point cinq fait de même pour la disponibilité et la fiabilité : les neuf, le temps entre défaillances et le temps de réparation, et la façon dont les composants se combinent en série et en parallèle. La section deux point six couvre les qualités liées au changement : modifiabilité, testabilité et déployabilité. La section deux point sept rassemble la sécurité, l’utilisabilité et l’accessibilité, l’interopérabilité, le coût, l’efficacité énergétique, la sûreté et les qualités réglementaires.
C’est le chapitre où le cours commence à calculer. Vous verrez pourquoi une requête adressée à un serveur occupé à quatre-vingt-dix pour cent prend, en moyenne, dix fois son temps de service. Aucune de ces mathématiques n’est plus difficile que l’arithmétique de l’école. Les chiffres dissipent aussi les fausses certitudes. Un temps de réponse moyen de cent vingt millisecondes peut masquer le fait qu’une requête sur cinquante prend plus d’une seconde. C’est pourquoi les professionnels spécifient des percentiles. La section deux point huit boucle la boucle. Aucun système ne peut être à la fois rapide, disponible, sécurisé, bon marché et facile à modifier. Elle montre comment un atelier et un arbre d’utilité transforment une foule d’opinions en une liste classée, et quelles qualités entrent en conflit.
Si vous ne retenez qu’une chose de ce chapitre, que ce soit celle-ci : une qualité n’est pas une exigence tant qu’elle n’a pas de stimulus, de contexte et de mesure. L’étape de paiement doit être rapide : c’est un souhait. Lorsque deux mille clients par minute passent commande pendant le pic du vendredi soir, quatre-vingt-dix-neuf pour cent des paiements aboutissent en une seconde et demie au plus : voilà une exigence. On peut concevoir en fonction d’elle, la tester, la superviser et en débattre preuves à l’appui.
Il vaut mieux lire les sections deux point un à deux point trois dans l’ordre, car le reste du chapitre utilise leur vocabulaire. Ensuite, vous pouvez piocher dans les qualités dont vous avez besoin. La lecture du chapitre entier prend environ trois heures. Quand une section fait des calculs, refaites-les vous-même. C’est ainsi que les chiffres deviennent des outils utilisables dans une vraie conversation. Chaque section se termine par quelques questions d’autoévaluation. Répondez-y de tête avant de regarder. Quand vous êtes prêt, passez le test facultatif du chapitre : 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 2. Commencez par la section deux point un, où nous distinguerons exigences fonctionnelles, attributs de qualité et contraintes, et découvrirons un système de billetterie le jour de sa plus forte affluence. À très vite.
En un coup d’œil
Vous apprendrez à
- Distinguer les exigences fonctionnelles, les attributs de qualité et les contraintes, et reconnaître une exigence architecturalement significative.
- Utiliser le modèle de qualité des produits de l’ISO/IEC 25010:2023 comme liste de contrôle sans le laisser se transformer en paperasse.
- Rédiger des scénarios d’attributs de qualité en six parties, avec des mesures de la réponse chiffrées, et transformer des énoncés vagues en énoncés testables.
- Calculer avec les percentiles, la loi de Little, des formules simples de files d’attente et la loi d’Amdahl pour raisonner sur les performances et la scalabilité.
- Calculer la disponibilité à partir des « neuf », du MTBF et du MTTR, et pour des composants en série et en parallèle.
- Expliquer comment la modifiabilité, la testabilité, la déployabilité, la sécurité, l’utilisabilité, le coût et la durabilité sont spécifiés et obtenus.
- Éliciter et hiérarchiser les exigences de qualité à l’aide d’un arbre d’utilité, et expliquer les compromis entre qualités concurrentes.
Avant de commencer
Le chapitre 1, en particulier les sections sur les parties prenantes et leurs préoccupations, et sur les décisions et les compromis. Une certaine aisance avec l’arithmétique simple (pourcentages, multiplications et divisions).
Durée
Environ 3 heures de lecture ; 45 minutes pour le test.
Termes clés
attribut de qualité · contrainte · exigence architecturalement significative · ISO/IEC 25010 · scénario d’attribut de qualité · mesure de la réponse · latence et débit · percentile · Loi de Little · disponibilité · MTTR · tactique · arbre d’utilité · fonction d’aptitude (fitness function)
Pourquoi ce sont les qualités, et non les fonctionnalités, qui décident de l’architecture
Demandez à n’importe quel groupe de parties prenantes ce qu’un système doit faire, et vous obtiendrez une liste de fonctionnalités : rechercher un vol, payer un panier, prendre un rendez-vous. Demandez-leur à quel point il doit bien le faire, et les réponses sont généralement plus vagues : il doit être rapide, il ne doit pas tomber en panne, il doit être sécurisé, il doit être facile à modifier. Ces secondes réponses sont des attributs de qualité, et c’est surtout d’eux que traite l’architecture. La même liste de fonctionnalités peut être fournie par un programme unique sur un seul serveur ou par quarante services répartis sur trois continents. Ce qui distingue ces conceptions, ce n’est pas ce que fait le système, mais le nombre de personnes qu’il doit servir en même temps, la durée d’indisponibilité que l’entreprise peut tolérer, la fréquence à laquelle le code changera et la sensibilité des données.
Le chapitre 1 a décrit l’architecture comme l’ensemble des décisions importantes qui répondent aux préoccupations des parties prenantes au moyen de compromis. Ce chapitre rend ces préoccupations précises. Une exigence qui a un effet mesurable sur la structure d’un système est une exigence architecturalement significative, et la plupart d’entre elles s’avèrent être des attributs de qualité ou des contraintes plutôt que des fonctions. Les repérer tôt, et les formuler de façon à pouvoir les tester, est l’une des choses les plus précieuses que fasse un architecte.
Comment s’articule le chapitre
La section 2.1 distingue exigences fonctionnelles, attributs de qualité et contraintes, explique pourquoi de nombreux architectes évitent le terme « exigences non fonctionnelles », et étudie un système de billetterie de concerts le jour où une grande tournée est mise en vente. La section 2.2 présente le modèle de qualité des produits de l’ISO/IEC 25010:2023, avec ses neuf caractéristiques, et montre comment l’utiliser comme aide-mémoire plutôt que comme formulaire à remplir. La section 2.3 enseigne la technique la plus utile du chapitre : le scénario d’attribut de qualité en six parties, qui transforme « doit être rapide » en un énoncé que vous pouvez tester.
Les sections 2.4 à 2.7 passent ensuite en revue les qualités qui façonnent le plus souvent les architectures. La section 2.4 traite des performances et de la scalabilité avec de vrais calculs : latence et débit, percentiles, latence de queue (tail latency), loi de Little, files d’attente et loi d’Amdahl. La section 2.5 fait de même pour la disponibilité et la fiabilité : les « neuf », le temps moyen entre défaillances et le temps moyen de réparation, et la disponibilité de composants en série et en parallèle. La section 2.6 couvre les qualités liées au changement (modifiabilité, testabilité et déployabilité), et la section 2.7 rassemble la sécurité, l’utilisabilité et l’accessibilité, l’interopérabilité, le coût, l’efficacité énergétique, la sûreté et les qualités réglementaires.
La section 2.8 boucle la boucle. Elle montre d’où viennent les exigences de qualité, comment un atelier sur les attributs de qualité (Quality Attribute Workshop) et un arbre d’utilité transforment une foule d’opinions en une liste classée, quelles qualités entrent en conflit avec lesquelles, et comment les fonctions d’aptitude (fitness functions) continuent de vérifier automatiquement les qualités importantes une fois l’architecture construite.
Des souhaits vagues aux chiffres
C’est le chapitre où le cours commence à calculer. Vous calculerez combien de requêtes sont en cours en même temps à partir d’un taux d’arrivée et d’un temps de réponse, vous verrez pourquoi une requête adressée à un serveur occupé à 90 % prend, en moyenne, dix fois son temps de service, pourquoi répartir un travail séquentiel à 10 % sur seize processeurs ne donne qu’une accélération d’un facteur 6,4, et combien de minutes d’indisponibilité par an une promesse de « quatre neuf » autorise réellement. Aucune de ces mathématiques n’est plus difficile que l’arithmétique de l’école, mais elles changent les conversations : « la base de données est lente » devient « le pool de connexions est dimensionné pour 100 requêtes simultanées et la loi de Little dit qu’il nous en faut 400 pendant le pic du soir ».
Les chiffres dissipent aussi les fausses certitudes. Un temps de réponse moyen de 120 millisecondes peut masquer le fait qu’une requête sur cinquante prend plus d’une seconde : c’est pourquoi les professionnels spécifient le 95e ou le 99e percentile. Une exigence sans mesure de la réponse ne peut pas être testée, et une exigence qui ne peut pas être testée sera discrètement sacrifiée à l’approche d’une échéance.
Les compromis sont le cœur du métier
Aucun système ne peut être à la fois le plus rapide, le plus disponible, le plus sécurisé, le moins cher et le plus facile à modifier possible. La mise en cache améliore la vitesse mais complique la cohérence ; le chiffrement et les contrôles supplémentaires protègent les données mais ajoutent de la latence ; la redondance augmente à la fois la disponibilité et le coût ; les conceptions souples à base de plug-ins facilitent le changement et rendent les performances plus difficiles à prévoir. Le chapitre traite donc les qualités comme des objectifs concurrents qu’il faut classer selon le contexte, et non comme des cases à cocher. Le talent de l’architecte consiste à savoir quelles sont les deux ou trois qualités qui comptent le plus pour ce système, à les formuler avec précision et à choisir des conceptions dont les faiblesses tombent là où l’entreprise peut se les permettre.
Les techniques de conception qui permettent d’obtenir chaque qualité, appelées tactiques, ne sont présentées ici que dans les grandes lignes. Les chapitres suivants les développent : les principes de conception au chapitre 3, les styles architecturaux aux chapitres 5 et 6, les pratiques relatives aux données, à la sécurité, à la résilience et au cloud aux chapitres 7 à 10, et les méthodes d’évaluation comme l’ATAM et les fonctions d’aptitude au chapitre 11.
L’idée à retenir
Si vous ne retenez qu’une chose de ce chapitre, que ce soit celle-ci : une qualité n’est pas une exigence tant qu’elle n’a pas de stimulus, de contexte et de mesure. « L’étape de paiement doit être rapide » est un souhait. « Lorsque 2000 clients par minute passent commande pendant le pic du vendredi soir, 99 % des paiements aboutissent en 1,5 seconde au plus » est une exigence. On peut concevoir en fonction d’elle, la tester, la superviser et en débattre preuves à l’appui, et elle indique à chacun, du product owner à l’équipe d’exploitation, à quoi ressemble la réussite.
Les 8 sections
Test du chapitre
Vérifiez votre compréhension du chapitre 2
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 2 dans l’appLectures complémentaires
- Software Architecture in Practice (4th edition), Len Bass, Paul Clements and Rick Kazman (2021), Addison-Wesley. La source des scénarios d’attributs de qualité et des tactiques, avec un chapitre sur chaque qualité majeure et un autre sur les exigences architecturalement significatives.
- ISO/IEC 25010:2023 Systems and software engineering: Product quality model, ISO/IEC JTC 1/SC 7 (2023), International Organization for Standardization. Le modèle normalisé de qualité des produits, avec neuf caractéristiques ; sa norme compagne, l’ISO/IEC 25019:2023, couvre la qualité en utilisation.
- Characterizing Architecturally Significant Requirements, Lianping Chen, Muhammad Ali Babar and Bashar Nuseibeh (2013), IEEE Software, volume 30, issue 2. Une étude empirique sur la façon dont les praticiens reconnaissent les exigences qui façonnent une architecture.
- The Tail at Scale, Jeffrey Dean and Luiz André Barroso (2013), Communications of the ACM, volume 56, issue 2. Un article court et facile à lire sur les raisons pour lesquelles de rares réponses lentes dominent les grands systèmes à fan-out, et sur les techniques qu’utilise Google pour les maîtriser.
- Designing Data-Intensive Applications (2nd edition), Martin Kleppmann and Chris Riccomini (2026), O'Reilly Media. Un traitement clair de la charge, des percentiles, de la fiabilité et de la scalabilité dans les systèmes de données, avec de nombreux exemples réels.
- Fundamentals of Software Architecture (2nd edition), Mark Richards and Neal Ford (2025), O'Reilly Media. Le point de vue d’un praticien sur l’identification et la hiérarchisation des caractéristiques d’architecture, et sur leur protection par des fonctions d’aptitude.
- Site Reliability Engineering: How Google Runs Production Systems, Betsy Beyer, Chris Jones, Jennifer Petoff and Niall Richard Murphy (eds) (2016), O'Reilly Media. Gratuit en ligne ; les chapitres sur les objectifs de niveau de service et la supervision montrent comment les qualités sont mesurées en production.
- Systems Performance: Enterprise and the Cloud (2nd edition), Brendan Gregg (2020), Addison-Wesley. La référence en matière d’analyse des performances, des files d’attente et du taux d’utilisation jusqu’à la méthode USE.