2.6 La qualité des logiciels selon divers domaines de recherche

2.6.1 Qualité du logiciel et génie logiciel

D’après la norme [IEEE 610.12, 1990], le génie logiciel désigne l’application d'une approche systématique, disciplinée et quantifiable au développement, à l'opération et à la maintenance du logiciel.

Le génie logiciel est une discipline créée afin de faire face à la crise de l’industrie du logiciel à la fin des années 70, crise dont les signes les plus évidents étaient  l'augmentation des coûts de production du logiciel, le non respect des délais de livraison, la non fiabilité des programmes, un écart important entre les besoins exprimés par les utilisateurs et les fonctions offertes par les systèmes informatiques.

Le génie logiciel consiste en un ensemble de techniques qui organise le travail de développement de logiciels de façon à assurer la qualité des produits construits. L’activité de conception d’un logiciel est régie par le cycle de vie du logiciel : l'ensemble des phases qui constituent son développement et son utilisation. Classiquement, on distingue 5 phases :

  • la phase d'analyse : durant cette étape, les fonctions du futur logiciel sont décrites,
  • la phase de conception qui s’intéresse à la description de la réalisation des fonctions du système informatique,
  • la phase de codage durant laquelle les algorithmes décrits en phase de conception sont programmés,
  • la phase de tests qui permet de comparer le comportement effectif du système avec le comportement prévu à la phase d'analyse,
  • la phase d'exploitation correspond à l’étape de maintenance du logiciel. On ajuste, on corrige, on améliore et on ajoute de nouvelles fonctions au système.

Une étude préalable précède la première étape du cycle de vie du logiciel. L’étude préalable est constituée de l’analyse des besoins ou des exigences (« requirements » en anglais). On distingue :

  • les exigences fonctionnelles qui expriment les fonctions que le système doit être capable d'effectuer,
  • les exigences non fonctionnelles, quant à elles décrivent la qualité du futur système. Il existe plusieurs types d’exigences non fonctionnelles suivant le domaine d’étude. Nous pouvons citer par exemple : les exigences d'utilisabilité (qui se réfère à l’ergonomie du logiciel), les exigences de fiabilité (génie logiciel), les exigences de performance (temps de réponse, quantité de mémoire nécessaire, temps de récupération des données après une erreur) etc.

En résumé, l’assurance qualité en GL comporte plusieurs facteurs : la performance du logiciel, la performance et le coût du matériel, la facilité de maintenance, la sécurité, la surêté, la fiabilité et l’interopérabilité. Le respect des exigences fonctionnelles et non fonctionnelles permet d’assurer la qualité des logiciels en GL. Dans ce domaine, les tests de logiciels permettent de découvrir et de traiter les défaillances des logiciels d’un point de vue technique. Dans la section suivante, une définition de la notion d’IHM est proposée.