Be Software Architecture Wise
Be Wise Apps

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.

Télécharger le chapitre (PDF)Lire dans l’application

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

2.1 · Intermédiaire · 18 minExigences fonctionnelles et de qualitéCe qu’un système doit faire, avec quel niveau de qualité, et quels choix sont déjà arrêtés. Apprenez à repérer les exigences architecturalement significatives qui déterminent réellement une conception.Lire →2.2 · Intermédiaire · 18 minModèles de qualitéLe modèle de qualité des produits de l’ISO/IEC 25010:2023 et ses neuf caractéristiques, ce qui a changé depuis 2011, d’autres listes comme FURPS+, et comment utiliser un modèle comme liste de contrôle sans se noyer dans la paperasse.Lire →2.3 · Intermédiaire · 18 minScénarios d’attributs de qualitéLe scénario en six parties qui transforme « rapide », « sécurisé » et « facile à modifier » en exigences testables, avec des exemples pour six qualités, les erreurs courantes et le chemin qui mène du scénario à la fonction d’aptitude.Lire →2.4 · Intermédiaire · 24 minPerformances et scalabilitéLa latence et le débit, les percentiles et la latence de queue, la loi de Little, les files d’attente et le seuil critique du taux d’utilisation, la loi d’Amdahl et la loi universelle de scalabilité, avec des calculs commentés et un panorama des tactiques de performance.Lire →2.5 · Intermédiaire · 22 minDisponibilité et fiabilitéCe que signifient réellement la disponibilité, la fiabilité et la tolérance aux pannes, comment calculer les « neuf », le MTBF et le MTTR, comment se combinent les composants en série et en parallèle, et les tactiques, le RTO et le RPO qui permettent de les atteindre.Lire →2.6 · Intermédiaire · 22 minModifiabilité et déployabilitéComment spécifier le changement et concevoir pour lui : ce qui change, qui le change et quand, les tactiques qui limitent les effets en cascade, la testabilité par la contrôlabilité et l’observabilité, la déployabilité et les métriques de livraison DORA.Lire →2.7 · Intermédiaire · 22 minSécurité, utilisabilité et autres qualitésLa sécurité comme qualité mesurable, les sous-caractéristiques et les tactiques de sécurité de l’ISO/IEC 25010, l’utilisabilité et l’accessibilité selon les WCAG 2.2, l’interopérabilité, le coût par transaction, l’intensité carbone du logiciel, la sûreté, l’observabilité et les qualités réglementaires.Lire →2.8 · Intermédiaire · 22 minÉliciter et hiérarchiserD’où viennent les exigences de qualité, comment le Quality Attribute Workshop du SEI et l’arbre d’utilité de l’ATAM permettent de les faire émerger et de les classer, comment gérer les conflits entre qualités, et comment les fonctions d’aptitude veillent à ce qu’elles restent satisfaites.Lire →

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’app

Lectures complémentaires