vignette|Assurance qualité. L'assurance qualité logicielle (AQL) est un ensemble d'activités planifiées et systématiques de toutes les actions nécessaires pour fournir une assurance suffisante de la qualité logicielle d'un nouveau logiciel ou d'une nouvelle version d'un logiciel est conforme aux exigences et aux attentes établies. Les pratiques d'AQL varient selon le modèle d'affaire et l'industrie où le logiciel est utiliséAlain April, Claude Laporte, Assurance Qualité Logicielle 1 -concepts de base, Hermes-Lavoisier, 2011, ..

Plan d'AQL La norme IEEE 730 décrit le contenu nécessaire dans un plan d'AQL pour un logiciel.

Celui-ci doit contenir un préambule qui clarifie l'intention et la portée du processus, donne les définitions et les abréviations utilisés dans le document et inclut les documents de références nécessaire au processus. Ce préambule sera suivi d'un survol du plan d'AQL qui détaille son organisation, le niveau de criticité du logiciel, les outils, techniques et méthodologies utilisées dans le processus d'AQL, les ressources employées, les normes, pratiques et conventions utilisées et les calendriers pertinents.

Ensuite, le document doit détailler les activités et tâches du cycle de vie de l'AQL en décrivant le rôle de l'assurance du produit et du processus et en décrivant les activités et tâches du système de management de la qualité et certaines tâches additionnelles. Il doit ensuite inclure les processus et politiques additionnelles en jeu dans le processus: processus de revue de contrat et de mesure de la qualité, politiques de test, politique de dérogation et de déviation et politique d'itération des tâches. Enfin, il doit aussi spécifier quels sont les paramètres des enregistrements et des rapports d'AQL.

Bien que le plan qualité soit de la responsabilité du chef de projet logiciel, le spécialiste qualité peut lui venir en aide en lui proposant un gabarit normalisé qui pourra l'aider dans le travail de rédaction du plan. Un plan d'AQL décrivant les activités qualité qui seront faites pour un projet ou une modification à un logiciel doit être développé, documenté et maintenu à jour tout au long du travail.

Connaissances fondamentales de l'AQL Un corpus de connaissances vise à corriger les concepts essentiels d’une profession afin de normaliser sa pratique. Il contient les connaissances en AQL que tout développeur, mainteneur et ingénieur logiciel devraient avoir acquis au cours de sa formation. L'ISO 15939 ISO : Systems and software engineering -- Measurement process (aussi nommée le guide SWEBOK) a pour objectif de promouvoir non seulement une vision cohérente du génie logiciel dans le monde entier, mais aussi de fournir une base commune de connaissances pour l'élaboration de programmes de formation et de certification en génie logiciel. Nous observons que le domaine du logiciel souffre encore d'un certain nombre de problèmes qui ont été résolus dans les autres domaines du génie: faible qualité, absence de garantie, dépassements des coûts et faible utilisation de normes.

En introduction, l'ISO 15939 présente les considérations de qualité qui surpassent les processus individuels du cycle de vie d’un projet logiciel. On y précise que la qualité doit être un souci omniprésent pour l'ingénieur logiciel, et conséquemment il est important de toujours la considérer dans tous les autres domaines de connaissances présentés dans le guide, par exemple : les exigences, la conception, la maintenance Au chapitre onze du guide SWEBOK, y décrit les connaissances généralement acceptées qui permettent de définir, d’instaurer et de mesurer la qualité d’un logiciel.

Ces connaissances sont réparties en trois grandes catégories : les fondements de la qualité logicielle ; les processus de gestion de la qualité logicielle ; les considérations pratiques.

Les sections qui suivent en font la synthèse et précisent dans quels chapitres, de nos deux premiers ouvrages, ces connaissances ont été traitées d'une façon détaillée. voudra bien s'y référer afin de s’assurer que l’on maîtrise tous les concepts de la mise en œuvre d’un plan d’assurance qualité logicielle.

Fondements de la qualité logicielle Comment peut-on résumer la notion de qualité d’un logiciel, et pourquoi est-il si important que ce sujet soit dominant dans le guide du corpus de connaissances en génie logiciel ? Au cours des années, les auteurs et les organismes ont défini le terme « qualité » de manières différentes. Pour Phillip Crosby, c'était « se conformer aux exigences des utilisateurs ». Pour Watts Humphrey, c’était «une adéquation parfaite entre le logiciel et son utilisation visée», alors que l'entreprise IBM proposait l'expression « la qualité telle qu'elle est définie par la clientèle » : une perspective qui vise l'entière satisfaction de sa clientèle. Les critères du programme d'excellence en qualité, le Malcolm Baldrige, programme qui est destiné aux organisations américaines emploie aussi une expression de la qualité semblable : « la qualité exigée par le client », et cette perspective inclut la satisfaction du client en considérant comme importante la qualité d'un service ou d’un produit. La qualité du logiciel a aussi sa définition propre que l’on peut retrouver dans la norme internationale ISO 9001: « le degré auquel un ensemble de caractéristiques remplit les exigences ». Toutes ces définitions sont générales. Dans certains cas, le contexte requiert que la qualité logicielle soit modélisée et compilée dans le dossier des exigences du logiciel. Plusieurs modèles de la qualité logicielle ont été proposés au cours des ans afin de décrire les exigences qualité d’un logiciel.

Il est important pour le spécialiste du logiciel de spécifier les exigences qualité, les communiquer et s'assurer que tous les intervenants approuvent ces exigences au tout début d’un projet ou d'une modification d’un logiciel. Le spécialiste en assurance qualité logicielle a pour mission de former et d’appuyer le personnel du développement, de la maintenance et des infrastructures afin qu’ils appliquent concrètement ces concepts au cours de leur travail quotidien. C'est à l'étape de l'élucidation des exigences d'un projet logiciel que les exigences qualité doivent être identifiées, documentées, numérotées, hiérarchisées et approuvées. Il est important de souligner ici que ces exigences ont une incidence sur les processus, techniques et outils de mesures d’assurance qualité logicielle qui devront être mise en place pour évaluer la qualité du logiciel livré à la clientèle. Cette approche permet de démontrer, à la clientèle, que ces exigences ont été prises en compte et validées, par des tests, avant l’acceptation finale du logiciel.

Importance de la culture et l'éthique du génie logiciel s'attend, à cette étape ci, à ce que les spécialistes du logiciel prennent un engagement en ce qui a trait à la qualité du logiciel en tant qu'élément essentiel de leurs activités quotidiennes. L'éthique doit jouer un rôle significatif. En effet, une culture et des attitudes qui font la promotion de l’éthique influencent irrémédiablement la qualité du logiciel. La Computer Society de l’IEEE et l’ACM proposent un code d'éthique accompagné de pratiques professionnelles adaptées spécifiquement pour l'ingénieur logiciel. Ce code d’éthique vise à aider à renforcer les attitudes liées à la qualité et à l'indépendance au moment de la réalisation d'un logiciel. Afin de bien comprendre comment il faut résister aux pressions des patrons et de la clientèle, nous présentons un modèle de négociation (utilisant cinq perspectives d’un projet logiciel : l’échéance, le coût, la fonctionnalité, le personnel et la qualité) qui peut vous aider à mieux gérer les attentes de vos clients et de vos patrons.

Valeur et coût de la qualité Le concept de la qualité n'est pas aussi simple qu'il peut y paraître. Avant d’aller de l’avant en ce qui a trait à la mise en œuvre du coût de la qualité au sein de votre organisme il est important de comprendre les différentes cultures et modèles d’affaires de l’industrie du logiciel (par exemple: la différence des pratiques logicielles utilisées dans les domaines : nucléaire, aéronautique, bancaire et dans bien d’autres). Selon le domaine d'affaires, et les enjeux de qualité spécifiques, il y a toutes sortes de caractéristiques qualité qui sont attendues par la clientèle. Ces nuances contextuelles doivent être maîtrisées par le spécialiste en l'assurance qualité logicielle afin de guider les équipes de projet. Il pourra alors en discuter avec les intervenants et déterminer leurs impacts potentiels. Dans certains cas, les caractéristiques de qualité peuvent être exigées dans un contrat, ou peuvent être exigées à un plus ou moins fort degré. Quoi qu’il en soit, des compromis doivent être établis entre ces différentes exigences qualité. Bien sûr, la qualité a un coût. Pour aider les gestionnaires à mieux comprendre le coût de qualité d’un logiciel, il est possible de le calculer en effectuant la somme des coûts selon les quatre perspectives suivantes : le coût de prévention des défauts, le coût de l'évaluation de la qualité le coût d'échec interne du logiciel, le coût d'échec externe d’un logiciel.

Le spécialiste d'assurance qualité logicielle pourra donc bien présenter ces enjeux à l’organisme en question et l’aider à comprendre le retour sur les capitaux investis.

Le chapitre de l'AQL du SWEBOK traite aussi de l'importance de définir tôt les exigences qualité dans le projet de développement d'un logiciel. On sait, par expérience, que lors de la planification d’un nouveau projet logiciel, l'équipe de projet vise à créer un logiciel qui offre une valeur ajoutée pour l’organisme, et cette valeur est souvent quantifiée en termes de coûts et de bénéfices. Le client fixe un certain coût maximum, en échange duquel il s'attend à ce que les objectifs établis soient rencontrés par le projet. Dans cette démarche, le client aura une certaine assurance quant à la qualité du logiciel. Il est fréquent que les clients n’établissent pas clairement les objectifs qualité, et conséquemment qu'il comprenne les implications en efforts et en coûts. Pour assurer cette condition, le spécialiste du logiciel doit se poser la question suivante : « Ai-je une spécification claire des exigences qualité suivi d’une explication claire de ce qui est optionnel et essentiel pour assurer le succès de ce projet ? »

Comme la réponse à cette question se trouve souvent quelque part dans un intervalle flou, et c’est souvent le cas, il faut alors s’assurer que le client soit impliqué dans le processus d’élucidation des exigences qualité et qu'il soit raisonnablement informé des options, coûts et avantages/inconvénients. Les modèles et caractéristiques de la qualité : Les modèles et caractéristiques de la qualité logicielle, présentés dans le guide SWEBOK, sont divisés en deux perspectives différentes : les modèles de la qualité des produits logiciels ; les modèles de maturité et de pratiques logicielles exemplaires.

La terminologie qui permet décrire les nombreuses caractéristiques qualité d’un logiciel ont évolué au cours des années. Au cours des années 80, divers auteurs suggèrent différents modèles de caractéristiques et d’attributs qualité du logiciel. C'est à ce moment que l’ISO a décidé de normaliser ce domaine et a tranché en normalisant trois perspectives qualité d’un produit logiciel : la qualité interne, la qualité externe, et la qualité en service. Ces informations ont été publiées dans le modèle qualité des produits logiciels de la norme ISO 9126 et ISO 25000. Le modèle est accompagné d’un ensemble de guides qui permettent sa mise en œuvre. L'ingénieur logiciel doit être en mesure de bien comprendre les concepts et la terminologie des caractéristiques qualités du logiciel préconisées par l'ISO et d’être en mesure de les mettre en pratique dans ses projets.