2.11 Qualité logicielle
Vue d’ensemble et motivation
La qualité logicielle est à quel point bien un système satisfait des besoins énoncés et des attentes raisonnables. Cela signifie plus que si cela fonctionne : cela signifie si le système est fiable, sécurisé, maintenable, utilisable, performant, et adapté à son but dans le temps. La qualité est plus large que le test. Le test (chapitre 2.4) est une activité qui révèle les défauts. La qualité est toute la discipline de bien construire la bonne chose, et de savoir, avec preuve, que vous l’avez fait. Un système peut passer chaque test et être encore de faible qualité s’il est non maintenable, inaccessible, ou mal adapté à ce dont les utilisateurs ont réellement besoin.
Sur une grande équipe, la qualité ne peut pas vivre dans la tête d’une personne ou les habitudes d’une équipe. Des centaines d’ingénieurs, de multiples produits, et des systèmes à longue durée de vie ont besoin d’une définition partagée de la qualité, de processus explicites pour l’assurer, et de mesures qui vous disent si elle s’améliore ou se dégrade. Sans cela, la « qualité » devient une aspiration vague qui perd chaque argument contre une échéance, et les défauts s’accumulent jusqu’à ce que le changement devienne lent et risqué.
Dans les contextes d’entreprise et gouvernementaux, les enjeux montent davantage. Les systèmes réglementés, critiques pour la sécurité, et face aux citoyens doivent démontrer la qualité, pas seulement l’affirmer : des processus documentés, des preuves traçables, et une vérification indépendante sont souvent obligatoires. Une mauvaise qualité porte un coût financier, légal, et réputationnel direct, et dans certains domaines elle met des gens en danger. Une discipline de qualité délibérée, construite à partir de modèles, de processus, de mesure, et de culture, est ce qui transforme la qualité d’un accident en un résultat géré.
Principes clés
- La qualité est l’adéquation à l’usage plus la conformité aux exigences ; définissez les deux explicitement.
- La qualité est intégrée, pas testée après coup ; la vérification trouve les défauts, mais la prévention les évite.
- Distinguez l’assurance qualité (nos processus sont-ils solides ?) du contrôle qualité (ce produit est-il bon ?).
- La vérification demande « avons-nous construit cela correctement ? » ; la validation demande « avons-nous construit la bonne chose ? »
- Mesurez la qualité avec un petit ensemble de métriques significatives ; traitez les métriques comme des signaux, pas des cibles.
- Le coût d’un défaut augmente plus il est trouvé tard, alors décalez les activités de qualité plus tôt.
- La qualité est une propriété de toute l’organisation et sa culture, pas une porte à la fin.
Recommandations
Adoptez un modèle de qualité partagé comme ISO/IEC 25010
Donnez à votre organisation un vocabulaire commun pour la qualité en adoptant un modèle de qualité produit reconnu. ISO/IEC 25010 définit des caractéristiques incluant l’adéquation fonctionnelle, l’efficacité de performance, la compatibilité, l’utilisabilité, la fiabilité, la sécurité, la maintenabilité, et la portabilité. Utilisez-le pour rendre la qualité concrète : pour chaque système, décidez quelles caractéristiques comptent le plus et ce que « assez bon » signifie pour chacune. Ces caractéristiques de qualité produit sont les mêmes attributs de qualité qui conduisent l’architecture (chapitre 3.1). La qualité et l’architecture sont deux vues d’une préoccupation, alors laissez-les partager une liste de priorités plutôt que deux concurrentes.
Séparez l’assurance qualité du contrôle qualité
Traitez l’assurance qualité (AQ) et le contrôle qualité (CQ) comme des activités distinctes mais complémentaires. L’AQ est orientée processus et préventive : elle améliore la façon dont le travail est fait, à travers des normes, des revues, des définitions du fini, et de la formation, afin que les défauts soient moins susceptibles d’apparaître en premier lieu. Le CQ est orienté produit et détective : il inspecte les produits de travail réels, comme le test, la revue de code, et les audits, pour attraper les défauts qui sont réellement entrés. Une organisation mature investit dans les deux, mais penche vers l’AQ, parce que prévenir les défauts est moins cher que les trouver et les corriger.
Exécutez des processus explicites de gestion de qualité logicielle
Faites de la qualité un processus géré, pas un espoir silencieux. Pour le travail significatif, écrivez un plan de qualité qui énonce les caractéristiques de qualité cibles, les activités d’assurance et de contrôle, les critères d’acceptation, et qui est responsable. Tissez-le dans les pratiques que vous avez déjà : la revue de code (chapitre 2.5) à la fois comme un contrôle et une façon de partager la connaissance, la stratégie de test (chapitre 2.4) comme le filet de sécurité automatisé, et l’analyse statique comme inspection continue. Révisez les données de qualité régulièrement et agissez sur les tendances, au lieu de seulement réagir aux incidents.
Pratiquez la vérification et la validation comme des disciplines distinctes
La vérification confirme que les produits de travail satisfont leurs spécifications, afin que les bonnes entrées à chaque étape produisent les bonnes sorties, à travers des revues, l’analyse statique, et le test contre les exigences. La validation confirme que le système fini satisfait réellement les besoins utilisateur et son usage prévu, à travers le test utilisateur, le test d’acceptation, les pilotes, et le retour du terrain. Vous avez besoin des deux. Un système peut être correct contre une spécification défectueuse (vérifié mais pas valide), ou il peut adresser un vrai besoin tout en contenant encore des défauts (valide mais pas vérifié). Dans les environnements réglementés, la vérification et validation (V&V) indépendante par une partie séparée des développeurs peut être requise.
Mesurez la qualité avec des métriques significatives
Choisissez un petit ensemble de métriques qui reflètent les résultats de qualité et leurs moteurs, et surveillez-les dans le temps. Les mesures utiles incluent la densité de défauts, le taux d’échappement de défauts (défauts trouvés en production contre avant publication), le temps moyen pour détecter et réparer, le taux d’échec des changements, les signaux de santé de code comme la complexité et la duplication, et les signaux de validation comme les problèmes rapportés par les utilisateurs et la conformité d’accessibilité. Évitez les métriques de vanité et détournables : une métrique qui devient une cible cesse de mesurer la réalité. Associez les chiffres à des signaux qualitatifs des revues et du retour utilisateur.
Caractérisez et gérez les défauts systématiquement
Traitez les défauts comme des données, pas seulement des incendies à éteindre. Classifiez-les par sévérité, type, et cause profonde. Suivez-les de la découverte à la résolution. Cherchez des motifs afin de pouvoir prévenir la récurrence. Utilisez des techniques comme l’analyse des causes profondes et la catégorisation de défauts pour distinguer les erreurs ponctuelles des faiblesses systémiques. Réinjectez ce que vous apprenez dans l’AQ, à travers des normes mises à jour, des tests ajoutés, et des revues améliorées, afin que la même classe de défaut ne revienne pas. Un défaut corrigé sans comprendre sa cause est un défaut que vous avez invité à revenir.
Gérez délibérément le coût de la qualité
Comprenez l’économie de qualité à travers les catégories classiques : coûts de prévention (formation, normes, bonne conception, outillage), coûts d’évaluation (revues, test, audits), et coûts d’échec (reprises internes avant publication, plus échecs externes trouvés par les utilisateurs, qui coûtent bien plus). Déplacez votre investissement vers la prévention et l’évaluation précoce, parce que chaque dollar là-bas évite plusieurs dollars de coût d’échec plus tard. Rendez ces coûts visibles, afin que « nous n’avons pas le temps pour la qualité » soit vu pour ce que c’est : un choix de dépenser plus sur l’échec à la place.
Construisez une culture de qualité
Faites de la qualité la responsabilité de tous, possédée par les équipes qui construisent le logiciel, plutôt que remise à un département AQ en aval qui l’inspecte à la fin. Les dirigeants devraient récompenser les résultats de qualité, rendre sûr de rapporter les défauts et quasi-incidents, et traiter les données de qualité comme un outil d’apprentissage plutôt qu’un bâton. Une approche sans blâme des défauts amène les problèmes au grand jour tôt. Une approche blâmante les cache jusqu’à ce qu’ils soient coûteux.
Compromis : avantages et inconvénients
| Pratique / choix | Avantages | Inconvénients |
|---|---|---|
| Modèle de qualité formel (ISO 25010) | Vocabulaire partagé ; priorités explicites | Frais généraux si appliqué dogmatiquement |
| Forte assurance qualité (prévention) | Moins de défauts ; coût total plus bas | Investissement initial ; plus lent à montrer un retour |
| Fort contrôle qualité (inspection) | Attrape les défauts qui passent à travers | Coûteux ; trouve les défauts tard |
| V&V indépendante | Haute assurance ; objective | Coûteuse ; plus lente ; peut sembler adversariale |
| Métriques de qualité riches | Visibilité ; alerte précoce | Risque de détournement ; frais généraux de mesure |
| Équipe AQ dédiée | Concentration et expertise | Peut décharger la responsabilité des développeurs |
| Qualité possédée par les équipes | Appropriation ; retour rapide | Exige discipline et compétence partout |
Le compromis central est l’investissement contre l’assurance, façonné par le timing. La prévention coûte de l’argent maintenant pour éviter de plus grands coûts d’échec plus tard. Donc le niveau de qualité économiquement correct n’est pas le maximum ; c’est le point où le coût marginal de plus d’assurance égale le coût d’échec qu’il évite. Ce point est élevé pour les systèmes critiques pour la sécurité et plus bas pour les outils internes à faible enjeu. L’autre tension récurrente est l’appropriation. Les groupes AQ centraux construisent l’expertise mais peuvent laisser les développeurs décharger la responsabilité. La qualité possédée par les équipes construit l’appropriation mais exige compétence et discipline partout.
Questions à discuter avec votre équipe
Quand la même classe de défaut apparaît deux fois, menons-nous une analyse des causes profondes, ou le corrigeons-nous simplement à nouveau ? Un défaut corrigé sans comprendre sa cause est un défaut que vous avez invité à revenir, et sur une grande équipe, la même cause profonde peut surgir à travers de nombreux services avant que quiconque ne connecte les points. Traiter les défauts comme des données (classifiés par sévérité, type, et cause, puis analysés pour des motifs) est ce qui sépare une équipe qui devient régulièrement plus fiable d’une qui reste occupée à recorriger la même erreur. Apportez votre traqueur de défauts à la réunion et cherchez des signatures récurrentes : combien d’incidents récents partagent une cause que vous n’avez jamais adressée systémiquement ? La réponse devrait alimenter la prévention, afin qu’une cause récurrente conduise une norme mise à jour, un nouveau helper partagé, un test ajouté, ou une meilleure liste de contrôle de revue, parce que c’est comment une correction à un endroit arrête toute la classe de revenir.
Est-il sûr dans notre équipe de rapporter un défaut ou un quasi-incident, et qu’arrive-t-il à la personne qui en soulève un ? La qualité est une propriété de la culture, et une approche sans blâme amène les problèmes au grand jour tôt tandis qu’une approche blâmante les cache jusqu’à ce qu’ils soient coûteux, ce qui dans un système réglementé ou face aux citoyens peut signifier un échec public ou une pénalité. Cela compte le plus à l’échelle, où l’ingénieur le plus proche d’un risque est souvent junior et l’incitation à rester silencieux est forte. Apportez des signaux honnêtes : les quasi-incidents sont-ils journalisés et discutés, ou disparaissent-ils ? Les post-mortems nomment-ils les causes ou nomment-ils les gens ? L’action est de faire des données de qualité un outil d’apprentissage plutôt qu’un bâton, récompenser les gens qui font surgir les problèmes, et mener des post-mortems sans blâme, parce que vous ne pouvez pas prévenir ce que votre équipe a peur de rapporter.
La validation peut-elle réellement arrêter une publication, et qui détient cette autorité quand une échéance approche ? La vérification (avons-nous construit cela correctement ?) et la validation (avons-nous construit la bonne chose ?) sont des disciplines distinctes, et la validation n’a de dents que si un contrôle d’accessibilité échoué, un test d’acceptation échoué, ou une recherche utilisateur accablante peut réellement bloquer la livraison. Dans les contextes d’entreprise et gouvernementaux, c’est souvent obligatoire, parfois à travers une vérification et validation indépendante par une partie séparée des développeurs, et « nous l’avons livré quand même » n’est pas une réponse qu’un organisme de surveillance accepte. Apportez vos quelques dernières publications : un signal de qualité en a-t-il jamais réellement arrêté une, ou la porte cède-t-elle toujours à la date ? Si la validation n’a jamais bloqué une publication, c’est de la décoration, et la correction est d’écrire les critères d’acceptation dans le plan de qualité en amont, nommer qui possède la décision de poursuivre ou non, et donner à cette décision une vraie autorité indépendante de la pression de livraison.
Connaissons-nous réellement notre coût de mauvaise qualité, et déplaçons-nous délibérément les dépenses de l’échec vers la prévention ? Le coût de mauvaise qualité (COPQ) est l’argent perdu en reprises internes, incidents de production, corrections d’urgence, charge de support, utilisateurs perdus, et pénalités, et il est presque toujours plus grand que la dépense visible sur les revues et le test. Sur une grande équipe, les coûts d’échec sont éparpillés à travers les canaux d’incident, les files de support, et les reprises que personne ne journalise comme reprises, donc ils restent invisibles jusqu’à ce que quelqu’un les additionne. La tension est que la prévention coûte de l’argent maintenant, dans un cycle budgétaire, pour éviter des coûts d’échec qui atterrissent plus tard et atterrissent sur le budget de quelqu’un d’autre, ce qui rend l’échange facile à différer indéfiniment. Apportez de vrais chiffres : le compte et le coût d’incidents, les heures de reprise, le taux de défauts échappés, et la répartition actuelle des dépenses entre prévention, évaluation, et échec, puis décidez si le mélange devrait bouger plus tôt. Pour les systèmes d’entreprise et gouvernementaux, où la plupart du coût de vie atterrit après la première publication, mettez le COPQ devant les gens qui tiennent le budget, parce qu’un chiffre qu’un organisme de surveillance peut voir est bien plus difficile à échanger qu’un vague appel à la « qualité ».
Lesquelles de nos métriques de qualité sont silencieusement devenues des cibles, et quel comportement conduisent-elles maintenant ? Une métrique qui devient une cible cesse de mesurer la réalité : poursuivez un pourcentage de couverture et vous obtenez des tests écrits pour bouger le chiffre, pas des tests qui attrapent les défauts. À l’échelle, c’est dangereux, parce qu’un tableau de bord vedette partagé à travers des dizaines d’équipes fixe les incitations pour toutes, et une métrique détournable propage le détournement partout à la fois. La considération concurrente est que vous avez encore besoin de mesure, donc la réponse est rarement « abandonner la métrique » mais « l’associer à un contre-signal et la lire aux côtés de preuves qualitatives des revues et des utilisateurs ». Apportez votre ensemble de métriques actuel et, pour chacune, demandez ce que quelqu’un sous pression pourrait faire pour la bouger sans améliorer la qualité, et si vous avez vu cela arriver. Dans les contextes réglementés et face aux citoyens, méfiez-vous spécialement des métriques de conformité qui semblent vertes pendant que la validation sous-jacente (accessibilité, résultats utilisateur réels) n’a jamais été réellement exercée, puisqu’un auditeur testera éventuellement la réalité derrière le chiffre.
Qui possède la qualité ici : les équipes qui écrivent le code, ou un groupe séparé à la fin, et lesquels dotons-nous réellement en ressources ? L’appropriation façonne tout en aval, parce qu’un silo AQ en aval laisse les développeurs décharger la responsabilité pour le code qu’ils écrivent, tandis que la qualité possédée par les équipes construit l’appropriation au prix d’exiger compétence et discipline dans chaque équipe. Sur une grande équipe, ce n’est pas l’un ou l’autre : le modèle durable est généralement des équipes possédant la qualité à travers la revue de code et les tests automatisés, soutenues par un petit groupe central qui maintient les normes, mène l’assurance qualité comme amélioration de processus, et coache, plutôt que d’inspecter la qualité à la fin. Apportez une carte honnête d’où le travail de qualité se produit actuellement, qui est responsable quand un défaut échappe, et où le budget et l’effectif se trouvent réellement contre où la rhétorique dit que la qualité vit. Pour les organisations d’entreprise et gouvernementales, ajoutez l’exigence de vérification et validation indépendante : certains régimes d’assurance mandatent une partie séparée, donc décidez délibérément quels contrôles appartiennent aux équipes de livraison et lesquels doivent rester indépendants pour satisfaire l’audit.
Regard sectoriel
Jeune pousse. La vitesse compte plus que la cérémonie, alors nommez les deux ou trois caractéristiques de qualité qui protègent réellement votre produit, généralement la fiabilité et la maintenabilité, et laissez le polissage attendre. Possédez la qualité à travers toute l’équipe avec la revue de code et une suite de tests automatisés modeste plutôt que de monter un groupe AQ séparé que vous ne pouvez pas doter en personnel. Quand la même classe de bug apparaît deux fois, passez vingt minutes sur la cause profonde et ajoutez un helper partagé plus un test, afin que la prévention reste peu coûteuse et que votre taux d’échec de changement reste bas pendant que vous bougez vite.
Petite entreprise. Sans spécialiste de qualité dédié et avec un budget serré, appuyez-vous sur la qualité intégrée dans les outils et plateformes que vous achetez plutôt qu’un processus que vous devez faire fonctionner. Quand vous choisissez un logiciel, traitez la preuve de qualité du fournisseur comme partie de l’achat : posture de sécurité, accessibilité, réactivité de support, et à quelle fréquence leurs publications cassent. Suivez une poignée de signaux peu coûteux et honnêtes (incidents de production, problèmes rapportés par les clients, temps de correction) au lieu d’un programme de métriques élaboré que vous n’avez personne pour maintenir.
Grande entreprise. Le travail est la cohérence à travers de nombreuses équipes : adoptez un modèle de qualité partagé comme ISO/IEC 25010, séparez l’assurance qualité (processus) du contrôle qualité (produit), et menez des revues de coût de qualité qui déplacent les dépenses vers la prévention. Gardez la qualité possédée par les équipes de livraison, soutenues par un petit groupe central qui maintient les normes et les tableaux de bord pour le taux d’échappement de défauts, le taux d’échec des changements, et les tendances de santé de code. Standardisez le vocabulaire et les portes afin que les groupes arrêtent de réinventer la pratique de qualité, tout en laissant aux équipes la marge d’atteindre ces barres à leur façon.
Gouvernement. Les marchés publics, la transparence, et la responsabilité publique fixent le cadre, alors écrivez les exigences de qualité dans les contrats et exigez une preuve de qualité documentée et traçable plutôt que des affirmations. Attendez-vous à une vérification et validation indépendante par une partie séparée des développeurs, une conformité d’accessibilité obligatoire, et des enregistrements de défauts avec sévérité et cause profonde gardés comme partie de la piste d’audit. Rapportez les chiffres de coût de mauvaise qualité (reprises, appels, échecs de service) aux organismes de surveillance, et donnez à la validation une vraie autorité pour bloquer une publication qui échouerait les citoyens qui en dépendent.
Exemples
Jeune pousse. Une start-up de cinq personnes décide que pour son premier produit, la fiabilité et la maintenabilité sont les caractéristiques de qualité qui comptent, et laisse le polissage pixel-parfait attendre. La qualité est possédée par toute l’équipe : la revue de code et une suite de tests automatisés modeste sont les contrôles, et il n’y a pas de groupe AQ séparé auquel remettre les défauts. Quand la même classe de bug apparaît deux fois, ils passent vingt minutes sur un rapide examen de cause profonde et ajoutent un helper partagé plus un test, afin qu’il arrête de récurrer au lieu d’être recorrigé à la main chaque fois. Cette petite habitude de prévention garde leur taux d’échec de changement bas pendant qu’ils bougent encore vite.
Grande entreprise. Une grande firme de services financiers adopte ISO/IEC 25010 comme son vocabulaire de qualité et, pour chaque produit, enregistre des niveaux cibles pour la fiabilité, la sécurité, et la maintenabilité. Les équipes possèdent la qualité : la revue de code et les tests automatisés sont des contrôles dans le pipeline, tandis qu’un petit groupe central mène l’AQ en maintenant les normes et en coachant. Un tableau de bord de qualité suit le taux d’échappement de défauts, le taux d’échec des changements, et les tendances de santé de code. Les défauts sont classifiés et leur cause profonde établie, et les causes récurrentes conduisent des mises à jour des bibliothèques partagées et des listes de contrôle. La direction révise les données de coût de qualité trimestriellement et a déplacé les dépenses vers la prévention, réduisant à la fois les incidents de production et le coût de les corriger.
Gouvernement. Une agence nationale livrant une plateforme de prestations face aux citoyens travaille sous un régime d’assurance qui exige une preuve de qualité documentée. Elle mène un processus formel de gestion de qualité avec un plan de qualité par publication, plus une vérification et validation indépendante par une équipe séparée des développeurs. La vérification vérifie chaque produit de travail contre des exigences tracées à la politique. La validation inclut le test de conformité d’accessibilité et la recherche utilisateur avec de vrais citoyens, et l’une ou l’autre peut bloquer une publication. Les défauts sont suivis avec sévérité et cause profonde comme partie de la piste d’audit, et les chiffres de coût de mauvaise qualité (reprises, appels, et échecs de service) vont aux organismes de surveillance pour justifier un investissement continu dans la prévention.
Argumentaire économique : motivations, retour sur investissement et coût total de possession
Le retour sur la qualité est un coût total de possession plus bas et une vitesse de livraison régulière. Le coût de qualité a deux côtés. La bonne dépense, la prévention et l’évaluation, est visible et contrôlable : conception, normes, revues, test, et outillage. Le coût de mauvaise qualité (COPQ) est plus grand mais souvent caché : reprises internes, incidents de production, corrections d’urgence, support client, utilisateurs perdus, pénalités réglementaires, et dommage réputationnel. Les études remontant à « Quality Is Free » de Crosby ont constamment trouvé que le coût total de mauvaise qualité éclipse le coût de la prévenir, et que les défauts deviennent bien plus coûteux plus tard vous les attrapez : un problème trouvé en conception coûte une fraction du même problème trouvé en production.
Pour la direction, l’argument n’est pas « dépenser plus sur la qualité ». C’est « dépenser plus tôt pour dépenser moins au total ». Quantifiez le COPQ depuis vos propres données (compte et coût d’incidents, heures de reprise, taux de défauts échappés) et montrez comment la prévention et l’évaluation précoce le font baisser. Reliez la qualité aux résultats commerciaux : la fiabilité retient les clients, la maintenabilité garde le changement futur peu coûteux, et la sécurité et l’accessibilité vous gardent hors des problèmes légaux. Dans les systèmes d’entreprise et gouvernementaux à longue durée de vie, où la plupart du coût atterrit après la première publication, les dimensions de maintenabilité et de fiabilité de la qualité dominent le coût de vie. Cela fait de l’investissement de qualité précoce l’une des décisions à plus fort effet de levier que vous puissiez faire.
Anti-patterns et pièges
- La qualité comme porte finale : inspecter la qualité à la fin au lieu de l’intégrer, donc les défauts sont trouvés quand ils sont les plus coûteux.
- Confondre le test avec la qualité : supposer que passer les tests signifie une haute qualité, ignorant la maintenabilité, l’utilisabilité, et l’adéquation à l’usage.
- L’AQ comme silo séparé : une équipe en aval qui « possède la qualité », laissant les développeurs décharger la responsabilité pour le code qu’ils écrivent.
- Le théâtre de métriques : poursuivre des pourcentages de couverture ou des comptes de défauts comme cibles, ce qui invite au détournement et cache la vraie qualité.
- La vérification sans validation : construire la spécification correctement sans jamais vérifier que la spécification satisfait de vrais besoins.
- Aucune analyse des causes profondes : corriger les défauts individuellement sans adresser la cause systémique, donc la même classe récurre.
- Ignorer le coût de mauvaise qualité : traiter la qualité comme un coût pur parce que les coûts d’échec sont cachés et non mesurés.
Modèle de maturité
Niveau 1 (Initiation). La qualité est indéfinie et ad hoc. Elle repose sur la diligence individuelle, est vérifiée principalement par le test manuel à la fin, et les défauts sont gérés réactivement à mesure qu’ils surgissent. Il n’y a pas de modèle partagé, pas de métriques, et pas de ligne entre l’assurance et le contrôle.
Niveau 2 (Développement). Des pratiques de base apparaissent : revue de code, tests automatisés, et un traqueur de défauts. Certaines données de qualité sont collectées, mais inégalement, et chaque équipe le fait à sa façon. La qualité est encore surtout vue comme le test, la prévention est minimale, la vérification se produit, et la validation est informelle.
Niveau 3 (Standardisation). L’organisation adopte un modèle de qualité partagé (comme ISO/IEC 25010), sépare l’AQ du CQ, et mène des processus de gestion de qualité avec des plans de qualité et des critères d’acceptation, documentés et appliqués de manière cohérente entre équipes. La vérification et la validation sont distinctes et délibérées, et les défauts sont classifiés et leur cause profonde établie selon un schéma convenu.
Niveau 4 (Gestion). La qualité est mesurée et contrôlée par rapport à des références. Un petit ensemble de métriques significatives est suivi dans le temps (densité de défauts, taux d’échappement de défauts, temps moyen pour détecter et réparer, taux d’échec des changements, et signaux de santé de code comme la complexité et la duplication), et le coût de qualité est quantifié à travers la prévention, l’évaluation, et l’échec. Les portes d’acceptation et de qualité sont appliquées sur preuve plutôt qu’opinion, les tendances sont révisées sur une cadence fixe, et la validation peut réellement bloquer une publication.
Niveau 5 (Orchestration). La qualité est une discipline continuellement améliorée, possédée culturellement, et intégrée à la planification commerciale et de risque. La prévention est l’accent, les données de coût de qualité guident où va l’investissement, et les conclusions de cause profonde préviennent systémiquement la récurrence. Les équipes possèdent la qualité de bout en bout, les métriques alimentent l’amélioration continue, et l’organisation adapte sa pratique de qualité à mesure que les produits, risques, et réglementation changent. Cela s’aligne avec les niveaux supérieurs des modèles de maturité du chapitre 10.8.
Pistes de réflexion
- Quelles caractéristiques de qualité ISO/IEC 25010 comptent le plus pour vos systèmes, et qu’est-ce que « assez bon » pour chacune ?
- Où votre organisation se situe-t-elle sur le mélange de dépenses prévention-évaluation-échec, et devrait-il changer ?
- Distinguez-vous la vérification de la validation en pratique, ou effondrez-vous les deux en « test » ?
- La qualité est-elle possédée par les équipes qui construisent le logiciel, ou déléguée à un groupe séparé, et que changerait-il si vous la déplaciez ?
- Quel est votre vrai coût de mauvaise qualité, et pourriez-vous le mesurer assez bien pour faire l’argument commercial ?
- Lesquelles de vos métriques de qualité sont de vrais signaux, et lesquelles sont devenues des cibles détournables ?
Points clés à retenir
- La qualité est plus large que le test : c’est l’adéquation à l’usage plus la conformité, à travers des caractéristiques comme la fiabilité, la sécurité, et la maintenabilité.
- Utilisez un modèle de qualité partagé (ISO/IEC 25010) afin que les attributs de qualité soient explicites et s’alignent avec l’architecture (chapitre 3.1).
- Séparez l’assurance qualité (prévenir, processus) du contrôle qualité (détecter, produit), et penchez vers la prévention.
- Pratiquez la vérification (l’avons-nous bien construit) et la validation (avons-nous construit la bonne chose) comme des disciplines distinctes.
- Mesurez la qualité avec quelques métriques significatives, et caractérisez les défauts par sévérité et cause profonde pour prévenir la récurrence.
- Gérez le coût de la qualité : la prévention et l’évaluation précoce sont bien moins chères que l’échec, spécialement dans les systèmes à longue durée de vie.
- Construisez une culture de qualité sans blâme où les équipes possèdent la qualité, soutenues par la revue de code (chapitre 2.5) et la stratégie de test (chapitre 2.4).
Références et lectures complémentaires
- IEEE Computer Society, SWEBOK Guide (Guide to the Software Engineering Body of Knowledge), domaine de connaissance Qualité Logicielle.
- ISO/IEC 25010, Systems and software engineering: Systems and software Quality Requirements and Evaluation (SQuaRE): System and software quality models.
- Série ISO/IEC 25000 (SQuaRE), Software product quality requirements and evaluation.
- Philip B. Crosby, Quality Is Free: The Art of Making Quality Certain.
- W. Edwards Deming, Out of the Crisis.
- Capers Jones et Olivier Bonsignour, The Economics of Software Quality.
- Gerald Weinberg, Quality Software Management.
- ISO/IEC/IEEE 12207, Systems and software engineering: Software life cycle processes (contexte de processus d’assurance qualité et de V&V).