Les technologies clés

* Technologies de l'information et de la communication

Tests et certification de logiciel

Fiche Technologie-clé n : 66

VERSION 3


Présentation de la technologie

*Définition

Les logiciels sont de nos jours présents dans tous les domaines : industrie, tertiaire, santé, vie courante, etc. Leurs fonctionnalités sont devenues de plus en plus complexes et étendues si bien que leur taille a rapidement augmenté dans de très fortes proportions (on atteint souvent aujourd'hui le million de lignes de code). Les problèmes de test de logiciel deviennent alors considérablement plus aigus et difficiles à appréhender.

Les années 80 ont été le siège de développements logiciels pléthoriques, se focalisant bien souvent sur la seule phase de conception, délaissant les techniques de gestion de configuration et de test. Avec la rapide croissance de la complexité des logiciels et de la taille des équipes de développement, de nouvelles difficultés sont apparues dans la conception d'un logiciel complet, constructions souvent réalisées à partir du puzzle de versions complémentaires écrites simultanément par des développeurs différents.

Les problèmes s'accentuent encore lorsqu'on gère en parallèle les versions destinées à des clients distincts. Chaque client dispose, en effet, d'une partie de pièces communes et d'un lot de pièces spécifiques, sans oublier que les nouvelles architectures distribuées (type client-serveur) induisent des risques importants de non-cohérence d'applicatifs. D'autant que les coûts consacrés sont importants : de nombreuses entreprises dépensent 25% à 45% de leurs budgets de développement rien que dans la phase de test. La fiabilité finale, pourtant, n'est souvent pas à la hauteur des efforts fournis, divers "bogues" résidant encore dans les logiciels vendus dans le commerce ou livrés au client. Le but n'est pas de les éliminer totalement, mais de diminuer leur nombre.

Le test est une activité clé pour la qualité de tout logiciel vendu puisque la fiabilité, bien plus que le nombre de fonctionnalités offertes, est devenue un enjeu de compétitivité de première importance. C'est souvent un facteur prédominant dans le choix et la satisfaction finale du client, qui se refuse désormais à assumer les conséquences induites par des erreurs de programmation. La fiabilité est donc de nos jours un enjeu de compétitivité prépondérant et il devient nécessaire que la gestion et les diverses procédures de tests s'appuient sur des bases solides et efficaces. En effet, pour les entreprises qui développent des logiciels, comme pour celles qui en assurent la mise en place ou la maintenance, des gains d'efficacité, de productivité et de fiabilité peuvent être obtenus grâce à des solutions et des outils adaptés.

*Techniques mises en oeuvre

Il y deux facettes de la qualité logicielle : la première se rapporte au processus de développement du logiciel (cahier des charges, conception, programmation, configuration, respect des plannings) alors que la seconde concerne l'évaluation de la qualité du logiciel lui-même (test, certification).

Processus de développement :

Alors que la deuxième facette n'en est qu'à ses balbutiements, la première est depuis presque 20 ans en constante amélioration. Le modèle le plus connu et le plus utilisé s'appelle le "CMM" (Capacity Maturity Model), développé aux USA par le SEI (Software Engineering Institute) sous commande du DOD (département de la défense américain). C'est une sorte de mode d'emploi précis et complet composé d'une dizaine de focus, les "KPA" (Key process area), décrivant le détail des processus de conception d'un logiciel afin qu'il soit développé dans les meilleures conditions possibles. Historiquement le SEI avait travaillé sur un projet mis en place par IBM dans les années 80 ; au fur et à mesures des réflexions regroupant de nombreux experts, une démarche a été proposée, décrivant la procédure optimale de développement, et ceci indépendamment de la nature du logiciel et de ses outils de développement.

En France, Objectif Technologie est la principale SSII française impliquée dans la promotion du CMM et de ses dérivés. Parmi ces derniers, on peut citer méthode AMI (Application of Metrics to Industry, dont une publication est disponible chez Adisson Wesley) développée dans le cadre d'un projet européen ESPRIT, méthode donnant des évaluations quantitatives du processus de développement et du produit. Cette méthode est soutenue par l'association internationale "AMI user Group" basée en France (statut loi 1901). Il existe des équivalents d'AMI, dont le GQM (USA, plus ancien) et Pyramide (Europe).

Tests et certification :

D'une manière générale les tests sont réalisés en interne par l'éditeur et suivant des processus qui lui sont propres ; certains suivent des procédures pré-définies (type CMM) les guidant dans le processus de développement, démarche éventuellement complétée par l'utilisation d'un outil de test spécifique (type Logiscope) ; d'autres consacrent une grande partie de leur budget dans de longues phases de tests, appelées "alpha-test" puis "béta-test" qui font intervenir certains client dans ces phases de validation.

La certification n'est pas obligatoire pour les logiciels dits "grand public" (traitement de texte), mais deviendra de plus en plus un argument commercial. L'exemple de la certification NF Logiciel de l'AFNOR suit les étapes suivantes :

Objectifs de la technologie

*Contexte concurrentiel et économique

Le test et la certification sont deux notions bien distinctes qui remplissent des impératifs différents.

Si tous les acteurs de l'industrie du logiciel sont confrontés à la nécessité de réaliser des tests sur leur produit (il le font le plus souvent en interne, soit avec des procédures maison, soit en utilisant des produits spécifiques développés par des sociétés spécialisées), la certification ne concerne actuellement que peu d'entreprise. Le marché est donc en gestation mais riche en opportunités et se prépare à de grandes évolutions dans les prochaines années.

Il faut néanmoins distinguer :

*Fonctions remplies :

Si les tests sont une étape primordiale dans tout processus de conception - réalisation, ils ne peuvent cependant pas prétendre garantir l'absence totale d'erreurs de programmation. Le rôle de la phase de test est d'en diminuer significativement le nombre afin de rendre l'utilisation du produit acceptable en terme de stabilité et de fiabilité.

La certification a un autre but et n'a de sens que lorsque l'on se base sur un référentiel commun précis, défini par une entité ou un organisme indépendant (AFNOR et la marque NF Logiciel par exemple), seul habilité à délivrer les certificats ad hoc. Elle est donc particulièrement bien adaptée aux applications "classiques" à large diffusion et relativement simples : logiciels bureautiques (traitement de texte, tableurs, bases de données), de communication (protocoles de réseau, d'émulation), jeux, etc.

Le cas des logiciels très spécialisés, souvent lourds et uniques en leur genre (gestion des roulement dans une compagnie aérienne ou contrôle d'une centrale nucléaire par exemple) demande une approche bien différente. En effet, vu la complexité du produit et son nombre important de fonctionnalités, l'étape de certification serait trop longue et trop onéreuse. Le client peut cependant demander qu'un organisme extérieur indépendant fasse un rapport d'évaluation (audit) par rapport à des critères définis d'un commun accord avec les concepteurs.

Environnement technologique

*Technologies concurrentes :

A l'heure actuelle la plupart des logiciels sont écrits avec des langages de programmation dits "classiques" : C, C++, Pascal ou Fortran entre autres. La moindre modification nécessite la réécrire de nombreuses lignes de codes, d'où des pertes de temps notables et des périodes de test longues et souvent fastidieuses.

Il existe cependant des technologies émergentes qui, même si elles ne peuvent pas prétendre répondre à tous les besoins, ouvrent la voie à des alternatives intéressantes et puissantes. En particulier les outils dits de "prototypage rapide" (Prolog par exemple) permettent de développer un logiciel spécifique dans des temps plus courts car ils vérifient tout au long du processus d'écriture que les contraintes sont respectées. Les étapes de tests sont alors nettement allégées et simplifiées, diminuant la charge dévolue aux périodes de tests proprement dit.

Prolog montre toute sa puissance dans les problèmes de respect de contrainte, cas par exemple du développement d'un planning d'une compagnie aérienne gérant des milliers de vols (les règles de l'aviation civile sont un impératif) et faisant travailler plusieurs centaines de personnes (prise en compte des accords d'entreprise, des congés, des remplacements notamment).

*Programmes de recherche :

En Europe, de nombreux programmes financés par la Communauté Européenne (ESPRIT, European Strategic Program for Research and Development in Information Technology) ou par les états membres touchent le test et la certification et, dans une plus large mesure, à l'amélioration de la qualité logicielle.

On peut par exemple citer :

retour

nous écrire