J’imagine que pour la plupart d’entre vous, le terme “qualité logicielle” est flou, mais saviez-vous qu’il existe une norme internationale qui le définit ?
Il s’agit de la norme ISO/IEC 25010:2011. Étudions-la ensemble.
La qualité logicielle passe par différentes notions, dont vous avez sûrement déjà entendu parler, au moins pour certaines. Elles sont au nombre de huit, elles-mêmes composées de sous-notions :
Pour illustrer l’intégralité des notions, plaçons nous dans le cas d’une application de vente en ligne (e-commerce) comme vous en utilisez déjà très certainement. Chaque notion sera suivie d’un exemple correspondant à ce cas.
L’ensemble des fonctions couvrent toutes les tâches spécifiées et les objectifs de l’utilisateur
L’utilisateur doit pouvoir réaliser toutes les actions attendues, de la recherche à l’achat final, en passant par l’ajout dans un panier.
Le produit ou système met à disposition les résultats corrects avec un degré de précision nécessaire
Si je cherche des livres des années 80, j’ai bien la liste des livres des années 80.
Les fonctions facilitent l’accomplissement de tâches et d’objectifs précis
L’ajout d’un article dans le panier se fait sur les pages attendues, l’utilisateur se voit proposer des articles souvent achetés en même temps et l’enchaînement des actions fait tout son sens.
Les temps de réponse, de traitement et de débits d’un produit ou d’un système, lors de l’exécution de ses fonctions, satisfont aux exigences
La recherche de produits doit afficher les résultats en moins d’une seconde.
Les quantités et types de ressources utilisés par un produit ou un système, dans l’exercice de ses fonctions, satisfont aux exigences
Je souhaite qu’un cluster seul puisse supporter une charge de 1 000 utilisateurs en simultané.
Les limites maximales d’un produit ou d’un paramètre du système répondent aux exigences
Je souhaite que mon système utilise au maximum 50Go de données par mois.
Un produit peut exécuter ses fonctions de manière efficace tout en partageant un environnement et des ressources en communs avec d’autres produits, sans impact négatif sur tout autre produit
L’application de e-commerce doit co-exister avec l’application de back-office permettant de faire les comptes de l’entreprise qui tourne sur le même serveur.
Deux ou plus de systèmes, produits ou composants peuvent échanger des informations et utiliser les informations échangées
L’application de e-commerce doit dispatcher la commande aux services de livraison.
Les utilisateurs peuvent reconnaître qu’un produit ou un système est adapté à leurs besoins
Les utilisateur utilisent l’application pour acheter des articles dont ils ont besoin.
Un produit ou un système peut être utilisé par des utilisateurs spécifiques pour atteindre des objectifs précis d’apprentissage de l’utilisation du produit ou du système avec efficacité, efficience, absence de risque et de satisfaction dans un contexte d’utilisation spécifique
L’utilisateur est accompagné tout le long de son parcours sur l’ensemble du site, il comprend comment aller jusqu’à l’achat.
Un produit ou un système a des attributs qui le rend facile à utiliser et à contrôler
Je peux contrôler l’intérieur de mon panier, retirer des articles ajoutés par erreur, visualiser le prix final après éventuelles réductions.
Un produit ou un système est protégé contre les erreurs issues des utilisateurs
Si l’utilisateur saisit une chaîne de caractères invalides, l’application doit le détecter et retourner un message d’erreur.
Une interface utilisateur permet une interaction agréable et satisfaisante pour l’utilisateur
Les résultats des tests UX/UI montrent que les informations importantes pour l’utilisateur de manière claire et agréable.
Un produit ou un système peut être utilisé par des personnes ayant le plus grand nombre de caractéristiques et de capacités pour atteindre un objectif spécifié dans un contexte d’utilisation spécifique
Les résultats des tests UX/UI montrent que l’application est suffisamment simple pour pouvoir être utilisée par des personnes de plus de 60 ans.
Un système, un produit ou un composant répond aux besoins de fiabilité en fonctionnement normal
L’application est stable et opérationnelle.
Un système, un produit ou un composant est opérationnel et accessible au besoin
L’application est accessible en ligne 24/24, 7/7, à un taux de disponibilité de 99,9%.
Un système, un produit ou un composant fonctionne comme prévu malgré la présence de pannes matérielles ou logicielles
Si un serveur tombe, un autre prend le relai en moins d’une seconde. Les erreurs logicielles ne font pas tomber le matériel.
En cas d’interruption ou de défaillance, un produit ou un système peut récupérer les données directement affectées et rétablir l’état souhaité du système
Le serveur ayant pris le relai a gardé les articles dans les paniers de tous les utilisateurs actuellement connectés.
Un produit ou un système garantit que les données ne sont accessibles qu’aux personnes autorisées à y avoir accès
Le gérant de l’application a des accès à des données que les autres utilisateurs ne peuvent pas obtenir de quelque façon que ce soit.
Un système, un produit ou un composant empêche l’accès non autorisé à des programmes informatiques ou des données, ou la modification de ceux-ci
Seuls les accès via l’application de e-commerce peuvent modifier le contenu du panier des utilisateurs.
Des actions ou des événements peuvent être prouvés avoir eu lieu, de sorte que les événements ou les actions ne peuvent être répudiées plus tard
La validation de l’achat et du paiement ne peuvent être contestés.
Les actions d’une entité peuvent être tracées à l’entité de façon unique
Chaque action sur l’interface contient l’identité de son auteur.
Preuve de l’identité d’un sujet ou d’une ressource
L’application garanti que c’est bien cet utilisateur qui a passé la commande.
Un système ou un programme informatique est composé de composants distincts, de sorte qu’un changement sur un composant a un impact minimal sur les autres composants
L’ajout d’une nouvelle brique d’analyses des tendances des achats n’impose pas la refonte totale de l’application.
Un composant ou une brique peut être utilisé dans plusieurs systèmes ou dans la création d’autres composants ou briques
Le module de choix de date peut être utilisé partout, aussi bien dans le profil de l’utilisateur pour sa date de naissance que pour choisir sa date de livraison à la fin de son panier.
Efficacité avec lequel il est possible d’évaluer l’impact sur un produit ou un système d’une modification envisagée à une ou plusieurs de ses parties, ou de diagnostiquer un produit pour détecter des défaillances ou des causes de défaillance, ou identifier des parties à modifier
Si je veux modifier la fonctionnalité d’ajout d’un article dans le panier, je sais exactement tout ce que cela impacte. Les erreurs intervenues lors de son utilisation sont consultables dans un journal qui me permet d’y remédier.
Un produit ou un système peut être modifié efficacement sans introduire des défauts ou dégrader la qualité du produit existant
Le code est suffisamment bien construit et toute évolution n’entraîne pas de régression dans les fonctionnalités existantes.
Efficacité et efficience avec lequel des critères de test peuvent être établis pour un système, un produit ou un composant et des tests peuvent être effectués pour déterminer si ces critères ont été respectés
Je dispose de différentes façons pour tester efficacement le code, que ce soit avec des tests unitaires, d’intégration, de bout en bout ou de performance.
Un produit ou un système peut être adapté de manière efficace et efficiente à des matériels, logiciels ou autres environnements opérationnels ou d’utilisation différents ou en constante évolution
Le site web peut être utilisé depuis un smartphone, peu importe son OS et sa résolution.
Efficacité et efficience avec lequel un produit ou un système peut être installé et/ou désinstallé avec succès dans un environnement spécifié
L’application peut être déployée sur une machine peu importe son OS ou sa configuration en moins de quelques minutes, voire secondes.
Un logiciel ou un produit peut en remplacer un autre spécifiquement pour le même usage dans le même environnement
Je dois pouvoir remplacer la sous application d’achat par une autre conçue dans une toute autre technologie sans grands impacts sur le reste de l’écosystème.
Ces huit notions permettent d’y voir un peu plus clair par rapport aux attentes de qualité logicielle. Lesquelles sont les plus importantes pour vous ? Et lesquelles appliquez-vous ?