Novembre 1998 - n°32
Qualité du logiciel et qualité du système
d'information
par Claude Pinet, ingénieur conseil et expert qualité du GEQC
chez CPI Conseil,
Lorsque l'on évoque le mot magique de "qualité" la première idée qui vient à l'esprit aujourd'hui concerne la certification et son cortège de normes. Toutefois, la certification d'une entreprise n'implique pas obligatoirement un système d'information et des logiciels de bonne qualité. A l'inverse, un système d'information placé sous assurance qualité (même indépendamment d'une démarche de certification) constitue un moyen efficace d'amélioration de la gestion. C'est aussi une garantie de satisfaction du personnel utilisateur de ce système d'information et des clients extérieurs à l'entreprise.
Un système d'information se compose d'un assemblage de produits logiciels et/ou progiciels, de services et de prestations associées. Il sera nécessaire d'appliquer les méthodes qualité sur chacun des composants du système, c'est-à-dire de maîtriser le processus de fabrication et d'évaluer la qualité du produit/service livré. Sachant que les mesures portent sur des biens immatériels, donc plus difficiles à appréhender.
Un composant logiciel va passer par une succession d'étapes qui vont rythmer son existence. C'est la notion de cycle de vie. Il existe plusieurs modèles de cycle de vie qui sont fonction de la catégorie de logiciel. Le modèle en "V" est le plus couramment employé en gestion.
Ainsi, pendant une première période les utilisateurs vont exprimer leurs "exigences" ; ce qui va permettre au projet logiciel de prendre corps et de rédiger un dossier de cahier des charges.
Puis, c'est le développement qui va permettre de confectionner le produit logiciel et ses prestations associées (par exemple : mode d'emploi, formation...). Nous détaillerons ci-après les étapes de cette progression qui conduit à la fabrication du logiciel.
Après une phase de tests d'intégration, le logiciel est installé en production. Il est exploité. Cette période d'âge adulte va être ponctuée par des adaptations et des évolutions : c'est la maintenance du logiciel.
Enfin, l'âge aidant, il va arriver une échéance à laquelle le logiciel devra être retiré et remplacé.
Chacune de ces étapes citées devra être organisée afin d'en maîtriser le processus et d'en mesurer les résultats obtenus par rapport aux résultats attendus. Toutefois, l'étape de développement mérite que l'on s'y attarde et nous proposons de la décomposer en quatre parties que nous allons étudier séparément ).
Le développement du logiciel va conduire à produire non seulement le logiciel mais aussi un certain nombre de dossiers et documentations qui devront répondre à des critères de qualité. Tout d'abord, des dossiers de planification (plan de développement et plan d'assurance qualité) qui vont être rédigés initialement afin de maîtriser le déroulement du développement (ces dossiers n'ont d'intérêt que pendant le déroulement du projet, ensuite ils n'ont plus qu'une valeur historique) :
- le plan de développement : ce dossier indique comment le projet d'informatisation va être conduit, avec quels moyens, suivant quel planning et avec quel coût. En fait, il formalise le devis initial du projet et constitue le plan d'action du chef de projet. Son actualisation au cours de l'avancement des travaux représente le tableau de bord du projet. Le formalisme du plan de développement sera conforme à la recommandation AFNOR Z 67-130.
- le Plan d'Assurance Qualité du Logiciel (PAQL) : ce dossier indique les mesures que le chef de projet envisage de mettre en oeuvre pour assurer la qualité du projet et du logiciel confectionné. Développer avec qualité implique de se constituer un étalon : le "Référenciel". Puis, maîtriser la qualité c'est vérifier et mesurer que le développé est conforme au référenciel prévu. Le contrôle s'effectue par des revues (opérations planifiées de vérification) ou par des inspections (opérations non planifiées de vérification). Le formalisme du PAQL sera conforme à la recommandation AFNOR Z 67-130.
Les autres dossiers qui vont accompagner le logiciel seront des dossiers d'étude ou des dossiers techniques qui, à la différence des dossiers de planifications, vont vivre et conserver leur intérêt et leur usage tout le long de la vie du logiciel (maintenance). Ces dossiers d'études techniques vont ponctuer chacune des étapes du développement que nous allons étudier ci-après.
L'étape de spécifications
Le processus de fabrication des spécifications va comporter une phase de recueil des informations (besoins, contraintes) et une phase d'élaboration et de mise en forme. L'étape de spécifications produira un dossier de définition des besoins pour le futur système. Ce dossier contiendra notamment l'analyse du système existant, la définition du système cible à construire et un ou deux scénarios de solutions permettant de migrer à partir du système actuellement en place vers le futur système cible.
L'étape de conception
Le processus de conception se décompose en deux parties : la conception générale et la conception détaillée.
La conception générale a pour objectif l'architecture fonctionnelle du futur système. Fonction par fonction, le concepteur va étudier leur composition structurelle, les événements qui les déclenchent et les résultats produits. Le diagramme fonctionnel va matérialiser l'enchaînement des fonctions entre elles ainsi que les interfaces avec les autres systèmes d'information. La description fonctionnelle du futur système, ses modélisations conceptuelles des données (MCD) et des traitements (MCT), ses règles de gestion, seront formalisées dans un dossier de conception générale qui sera conforme au modèle type défini dans le référenciel.
La conception détaillée a pour objectif l'architecture technique de la solution retenue. Module par module (composant logiciel par composant logiciel), le concepteur va décrire les moyens techniques et technologiques à mettre en oeuvre pour réaliser les fonctions attendues du nouveau système logiciel. La description technique des sous ensembles logiciels, la modélisation organisationnelle des traitements (MOT), la modélisation logique des données (MLD), la représentation des objets suivant le cas, les algorithmes de calcul, les règles de déclenchement, seront formalisés dans un dossier de conception détaillée qui sera conforme au modèle type défini dans le référentiel.
L'étape de codage
Le processus de codage des instructions va permettre de faire passer le logiciel de l'état de plan à la réalité. Chaque module identifié lors de la conception va être confectionné. A un module ou composant logiciel va correspondre soit une transaction temps réel, soit un programme temps différé (batch), soit un sous-programme, soit une brique logicielle (objet).
La qualité s'appliquera tout d'abord en vue de maîtriser le processus de fabrication des composants : outils d'Atelier de Génie Logiciel, programmation structurée, documentation du code, règles de l'art. Ensuite, la qualité du produit fini logiciel s'évaluera par référence aux critères et sous-critères d'appréciation de la norme ISO/CEI 9126 : capacité fonctionnelle, fiabilité, facilité d'utilisation, rendement, maintenabilité portabilité...
Puis, le développeur devra tester unitairement chaque composant logiciel qu'il a réalisé. Ces essais se dérouleront suivant un plan de test préalablement établi lors de la conception détaillée.
Les essais unitaires, comme pour les essais de recette, seront structurés, c'est-à-dire construits avec la formalisation des cas de test à exécuter avec valorisation des données à utiliser et définition des résultats attendus.
L'étape de recette
L'étape de recette va conduire à vérifier que le produit logiciel confectionné répond bien aux exigences et spécifications établies. Pour cela, il est nécessaire dans un premier temps de confectionner un référentiel de recette. Ce référentiel doit contenir les plans des tests, les jeux d'essais, les données d'essais et les résultats attendus du futur système. Ce dossier des essais sera conforme à la recommandation Z 67-130 et devra être validé par une autorité compétente. Ensuite, dans un deuxième temps, on va exécuter les essais conformément au référentiel de recette. Les essais effectués seront soigneusement enregistrés dans un cahier de recette qui sera conforme à la recommandation Z 67-130. Les anomalies feront aussi l'objet d'une formalisation sur une fiche dont le circuit organisationnel de traitement est défini au référentiel.
Il y a trois niveaux d'essais pour qualifier un logiciel. Le niveau des tests unitaires qui va permettre de s'assurer que chaque composant élémentaire est conforme. Puis, le niveau des tests d'intégration qui permet au responsable du projet de vérifier la validité des échanges entre les composants logiciels garantissant la cohérence du système tout entier. A ce niveau, on vérifie aussi la conformité des communications avec les autres systèmes de l'entreprise et le bon fonctionnement des interfaces. Enfin, le troisième niveau permet aux utilisateurs de simuler leurs activités métier et de valider la conformité fonctionnelle.
Dans le cas d'un logiciel déjà existant et pour lequel de la maintenace s'applique, il importe de définir toute une série de procédures et de règles afin de constituer aussi un référentiel qualité. Ensuite, la mise en oeuvre des actions qualité conduiront à assurer la maîtrise de ce processus de maintenance et à garantir le maintien du niveau de qualité du logiciel modifié.