Étape 1 - Convaincre la direction
Les détail sont dans l'article précédent, consultable ici.
Étape 2 - Définir les objectifs qualité
Chaque projet doit avoir sa propre définition de ce qu’est une création qualité-valeur. Cela passe nécessairement par une combinaison des aspects suivants:
- La conformité aux exigences clairement énoncées et respectées dans la livraison du produit.
- L’aptitude à l’usage ou qui répond aux attentes et rencontre les besoins de l’utilisateur.
Un produit de qualité apporte donc une meilleure satisfaction. - Le respect des normes (externes et internes) pour un produit de qualité (réf. ISO/IEC 25010- « matériel/logiciel et système » et ISO/IEC 5055- « code source ») et la qualité du processus utilisé pour le développer (réf. CMMI et SPICE ou ISO/CEI 15504)
- Les caractéristiques ou critères qualité sous-jacents telles que la qualité structurelle (ex. complexité cyclomatique) et la qualité esthétique (ex. ergonomie, facilité d’utilisation, etc.).
Les organisations sont confrontées à plusieurs problèmes de qualité logicielle à chaque étape du cycle de vie logiciel. Il est donc impératif d’élaborer une définition de ce qu’est la qualité pour chaque organisation et pour chacun des projets.
(Image ISO/IEC)
Étape 3 - Mettre l’accent sur la prévention
Les CIO, dirigeants et professionnels de l’informatique devraient quantifier les coûts découlant de la mauvaise qualité des logiciels. En identifiant l'origine de la non-qualité, cela permet de corriger la source du problème et d’empêcher qu’il ne se reproduise.
La qualité et la sécurité des logiciels sont parmi les sujets les plus importants. Aux États-Unis, en 2018, les coûts liés à la mauvaise qualité des logiciels étaient estimés à 2 840 milliards de dollars. Selon le Cybersecurity Ventures les pertes pour l’économie mondiale dues à la cybercriminalité étaient de 3 000 milliards de dollars en 2015 et devraient atteindre 10 500 milliards de dollars par an d’ici 2025. La Cybersecurity Maturity Model Certification (CMMC) est la dernière méthode de vérification mise en place par le Department of Defense (DoD). Ces normes permettront aux entreprises de mettre en œuvre des protocoles de cybersécurité appropriés et de s'assurer qu'ils sont aussi efficaces et fiables que possible.
(image Michel Benoit)
Les compagnies qui réussissent, adoptent les meilleures pratiques d’assurance qualité logicielle (AQL).
Leur recette comprend :
- Un processus de développement bien défini, mais adaptable
- D’excellentes méthodes d’estimation
- Une discipline de la gestion de projet
- Un excellent niveau des compétences du personnel
- L’existence d’une Vision qualité
- La priorité donnée à la satisfaction du client
- Une culture de gestion TQM (Total Quality Managment)
- L’attention portée à la prévention des défauts
Idéalement il serait opportun que les dirigeants calculent la non-qualité pour adopter par la suite de bonnes pratiques d’assurance qualité logicielle.
RAPPEL :
-> Une organisation ou entreprise est jugée sur :
- La qualité de ses produits
- La qualité des services qu’elle offre à sa clientèle.
-> L’AQL s’occupe de deux éléments :
- La qualité du produit – axée sur le résultat d’un travail (contrôle qualité)
Vérifier la conformité des produits de travail.
Lorsque l’on fait bien les choses, on améliore la qualité du produit.
- La qualité du processus – axée sur les méthodes de travail (assurance qualité)
Vérifier la conformité des activités d’ingénierie logiciel.
Lorsque l’on fait les bonnes choses, on améliore la qualité du processus.
Étape 4 - Améliorer la qualité des livrables et processus
(image Michel Benoit)
La qualité doit s’appliquer à l’ensemble des processus et produits de travail. Un produit de travail c’est un artéfact, un <work item>, un livrable qui apporte de la valeur dans le processus de création d’un système ou produit logiciel.
Exemples de livrables:
|
|
Cet amalgame qualité-valeur devrait être défini pour chacun des livrables afin d’assurer un produit de travail répondant aux objectifs qualité de l’organisation.
Le cadre le plus utile, et le plus commun disponible pour aider chaque projet à définir plus précisément ses objectifs de qualité logicielle, est la série ISO/IEC 25000.
La série de normes ISO/IEC 25000, connue sous le nom de SQuaRE (System and Software Quality Requirements and Evaluation), définit un cadre pour évaluer la qualité des produits logiciels.
ISO/IEC 25010 définit un ensemble de huit caractéristiques de qualité logicielle, ou les"-ité" du système, telles que la sécurité, la fiabilité et la maintenabilité (Réf. Image Modèle de qualité). ISO/IEC 25023 décrit comment appliquer les caractéristiques de qualité pour mesurer la qualité du produit logiciel.
ISO/IEC 5055:2021 définit des mesures au niveau du code source pour quatre des huit caractéristiques de qualité : Fiabilité, Efficacité des performances, Sécurité, et Maintenabilité. Celles-ci sont désormais automatisées dans le cadre du développement de nouveaux outils d'analyse de la qualité du code. Chaque mesure de qualité du code ISO 5055 (pour la fiabilité, l'efficacité des performances, la sécurité et la maintenabilité) est composée d'un ensemble sélectionné de faiblesses (CWE) de la Common Weakness Enumeration (CWE) taxonomie. Le CWE est un bon point de référence pour les développeurs. Il codifie plus de 800 faiblesses logicielles connues. Chaque CWE est un modèle de code connu qui est un point de défaillance potentiel trouvé dans de nombreux systèmes existants.
Mais avant toute chose, assurez-vous de bien collecter et analyser les besoins réels du client et de bien les traduire en exigences fonctionnelles et non-fonctionnelles.
Qu’est-ce qu’une exigence fonctionnelle (functional requirement) :
C’est une déclaration qui indique ce qu’un produit ou un processus doit accomplir pour produire le comportement et/ou les résultats requis. Réf. ISO/IEC/IEEE 24765
Qu’est-ce qu’une exigence non-fonctionnelle (non functional requirement) :
Une exigence logicielle qui ne décrit pas ce que le logiciel va faire, mais comment le logiciel va le faire. Réf. ISO/IEC/IEEE 24765
Comment bonifier le programme qualité
(image Michel Benoit)
Par exemple assurez-vous que votre coffre à outils qualité contient;
- Un processus de développement logiciel (rôles, activités, livrables)
- Un processus d’assurance qualité avec des activités de prévention et de contrôle.
- Un gestionnaire d’anomalies pour enregistrer les bogues et les non-conformités
- Des formations sur vos outils, technologies, sur ce qu’est l’AQL dans votre organisation.
- Un guide sur les revues et audits qui explique comment réaliser les différentes techniques de contrôle
- Vos normes (programmation, ergonomie, etc…) ou celles qui vous sont imposées par l’industrie (domaine de l’aviation, domaine de la santé, etc…)
- Vos gabarits ou formulaires (DDC, DDE, etc…)
- Quelques checklists
- Quelques métriques et tableaux de bord pour suivre la qualité dans le temps.
En mode Agile ou DevOps, il faut s’assurer qu’il y aura des activités d’assurance qualité (AQ) et des activités de contrôle qualité (CQ) dans le carnet de tâches (backlog).
Sinon qui le fera ?
De plus, la gestion du risque doit guider vos choix ! On parle de criticité du produit.
Est-ce que vous faites un logiciel de jeu vidéo ou un logiciel de pilotage automatique d’un avion commercial ? Il est normal que vous ayez plus de points de contrôle pour le logiciel de pilotage que pour le jeu vidéo. En cas d’erreur les conséquences ne sont pas les mêmes.
Étape 5 - Mettre en place un processus d’amélioration continue
(image Michel Benoit)
Il existe de nombreuses façons d'obtenir une meilleure qualité logicielle.
- Éviter les initiatives de type « big-bang » qui veulent changer les choses de façon radicale, voire en même temps.
- Progresser par petites étapes itératives.
- Définir la qualité et bien choisir les mesures qui seront utiles pour avancer.
La mise en place d’une bonne démarche d’amélioration continue à l’échelle de l’entreprise repose sur le concept de la roue de Deming : Planifier-Faire-Vérifier et Réagir. Une démarche adéquate devrait permettre d’améliorer l’ensemble des produits, des services et des processus en créant de la valeur sans compromettre la qualité et la sécurité.
Conclusion
Nous sommes actuellement dans la quatrième révolution industrielle. L’effervescence des nouvelles technologies fait que le logiciel informatique se propage dans de nombreux domaines d’applications. Voici quelques exemples de l’émergence des nouvelles technologies :
- L’intelligence artificielle (IA) et l’apprentissage automatique (ML)
- L’internet des objets (IoT)
- La robotisation
- Les nanotechnologies
- L’informatique quantique
- Les systèmes de paiement électronique
- Les véhicules autonomes
- La sécurité numérique avec l’authentification multicouche (ex. 2 facteurs)
- La blockchain
- etc…
Cette omniprésence des logiciels exige des normes de qualité beaucoup plus grandes qu’avant. La qualité n’est pas un ingrédient qu’on ajoute au produit juste avant sa livraison au client. C’est le résultat d’une attention particulière apportée à chacune des étapes de la production et dans chaque secteur. Souvent la qualité est laissée aux employés (auto-contrôle), mais sans support. On n’a jamais le temps pour bien faire du premier coup, mais on a toujours du temps pour refaire un travail.
Pour faciliter l’implantation sérieuse des bonnes pratiques en matière de qualité, assurez-vous de l’engagement de la Direction, même si c’est toute l’organisation qui doit embarquer.
Pour aller plus loin :
Assurance qualité : améliorer la qualité des livrables, processus et produits logicielsAssurance qualité : savoir intégrer la qualité selon le contexte des projets
Assurance qualité : implanter un bureau qualité
Voir toutes les formations Langages et environnements de réalisation d'applications
Références :
CISQTM The Cost of Poor Software Quality in the US: A 2018, 2020 and 2022 Reports
Galin Daniel, Software Quality – Concepts and Practice 2018