A la fin du développement de MAP EDV pour Windows, M. LEBLANC m'a demandé de réaliser un petit utilitaire de vérification de cohérence état CML / Diff. plutôt que de corriger Incohérence Bailey. En effet il ne restait qu'un mois avant la date de rendu du rapport de stage (qui doit être validé par le chef de section deux semaines avant la fin du stage) ce qui paraissait trop court pour un aussi gros projet.
1.1) Objectif
Chaque nuit le CML lance une VLE sur tous les composants MZR et MZJ du site, cette vérification, effectuée par l'agent CML produit des fichiers de différenciation (ou fichiers de diff.) pour chaque composant. Après cela le serveur CML remonte toutes ces informations et génère un « état CML » dans sa base de donnée.
L'objectif est de valider la cohérence des informations d'état programme et RAM présentes de la base de données du serveur CML et le résultat de la différenciation Version Courante / Version embarquée1 réalisée par l'agent CML.
Il a parfois été constaté des incohérences dans l'état CML, incohérences qui, après vérification, n'apparaissaient pas dans les fichiers de différenciation de l'agent CML. La fonction demandée devra pouvoir vérifier que ces incohérences ne se reproduisent plus.
1.2) Informations présentes sur le serveur
Le serveur génère un fichier ETAT_COMP.TXT contenant l'état de chaque composant :
1.3) Informations présentes sur l'agent
L'agent CML génère, pour chaque composant, un fichier DIFFRES.DAT contenant les différences entre la Version Courante et la Version Embarquée (fichier de diff.).
1.4) Entrées de la fonction
La fonction utilise en entrée le fichier ETAT_COMP.TXT contenant la liste des cartes à vérifier, leur type, les états Programme et RAM et autres informations. Ce fichier est formaté à l'aide de séparateurs en point-virgule, de manière à pouvoir être exploité sous Excel.
Exemple : M542R007;T1;REF006.000;MZR;EXPL;DISC;RNDI;05-08-2001 21:59;;;;
Soit : Composant ; Atelier ; Version Courante ; Type ; Phase ; Etat Programme ; Etat RAM ; Date de Vérification ; Acquisition MC ; Acquisition MI ; Opération ; Détail Opération
Elle utilise aussi les fichiers DIFFRES.DAT de chaque composant dans une arborescence dont la racine est constituée par le nom logique AGTCML$DISK$MZR (pour les composants MZR, ou AGTCML$DISK$MZJ pour les composants MZJ). Le fichier DIFFRES.DAT du composant %COMPOSANT% de type %MZx% est présent dans le répertoire : AGTCML$DISK$%MZx%[%COMPOSANT%.VE.INFO] .
Ce fichier est constitué de trois parties : un tableau d'informations générales (nom, identificateur, ralentisseur et voie), deux tableaux de synthèse des différences (nombre de différences pour les : Entrées Analogique, Sorties Analogiques, Entrées logiques ...), le détail des différences.
Enfin, la fonction utilise les fichiers ETATVLE.DAT et ETATVLERAM.DAT contenus dans le répertoire AGTCML$DISK$%MZx%[%COMPOSANT%.CONFIG]. Ces fichiers contiennent les états calculés par l'agent pour êtres envoyés au serveur qui doit l'intégrer à la base de données.
1.5) Sortie de la fonction
La fonction devra générer un fichier texte à séparateur en points-virgules utilisable sous Excel comportant pour chaque composant :
1.6) Détails fonctionnels
La fonction est à développer en C sous Open VMS.
Elle ne doit pas avoir d'IHM, mais effectuer toutes les opérations automatiquement dès son exécution.
L'exécutable doit s'appeler COHE_ETAT_MZX.EXE.
Cette partie du travail devait s'effectuer en quatre semaines, conjointement avec le bouclage du rapport. En pratique la conception à proprement parler n'a duré que quatre jours, et ce sont les tests et la rédaction de la documentation technique qui ont pris le plus de temps.
Peu de difficultés ont été rencontrées, et la plupart ont pu se résoudre assez simplement (le plus souvent par des conditions d'échec).
Le logiciel, assez simple a été créé, et fonctionne correctement.
3.1) Algorithme simplifié
Au lancement du logiciel, le fichier d'entrée (ETAT_COMP.TXT) est chargé et les composants sont mis dans une liste. Puis tant que la liste n'est pas finie, pour l'élément en cours : les fichiers correspondants sont chargés (AGTCML$DISK$%TYPE%[%COMPOSANT%.VE.INFO]DIFFRES.DAT, AGTCML$DISK$%TYPE%<%COMPOSANT%.CONFIG>ETATVLE.DAT et AGTCML$DISK$%TYPE%<%COMPOSANT%.CONFIG>ETATVLERAM.DAT ), une structure contenant toutes les informations est calculée à partir du fichier, si les informations relevées dans le fichier d'entrée (ETAT_COMP.TXT) sont différentes, la structure est modifiée, la ligne générée est écrite à la suite dans le fichier. L'élément en cours devient le suivant dans la liste.
3.2) Fichier de sortie
Voici un exemple de fichier de sortie de l'utilitaire :
COMPOSANT;ETAT_PRG;ETAT_RAM;COHE_PRG;COHE_RAM;ETAT_VLE;ETAT_VLE_RAM;COHE_VLE;COHE_VLE_RAM;COHE_IDENTIF;COHE_RALENTIS;COHE_VOIE;EA_EQ;EA_SOM;SA_EQ;SA_SOM;EL_EQ;EL_SOM;SL_EQ;SL_SOM;O_EQ;O_SOM;SCONS_EQ;SCONS_SOM;SCOM_EQ;SCOM_SOM;EDV_EQ;EDV_SOM;PAR_EQ;PAR_SOM; M542R004;NCTL;RNDI;N;X;NCTL;RNDI;N;X;X;X; ;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;5;0; M542R005;NDIS;RDIS;X; ;NDIS;RNDI;X; ;X;X;X;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;2; M542R008;DISC;RDIS; ; ;DISC;RNDI;X; ; ;X; ;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;3; M542R014;NDIS;RNDI;PAS DE DIFFERENCE; M542R021;NDIS;RNDIS;-1;-1;NDIS;RNDI;-1;-1;-1;-1;-1;
Dans le cas d'un composant non contrôlé, le fichier DIFFRES.DAT n'est pas généré, et la fonction se base sur l'ancien fichier de diff. : le programme signale donc ce non-contrôle par un [N] dans la colonne cohérence.
Dans le cas ou le fichier de diff. ne contient que la phrase « Pas de difference entre la version courante et la version embarquee. », la ligne contient uniquement le nom, l'état et le message « PAS DE DIFFERENCE » ; dans le cas d'une erreur lors de la lecture du diff., la ligne ne contient que le nom, les états, et -1 dans les colonnes de cohérence.
3.3) Conclusion
Le cahier des charges a été satisfait.
L'utilitaire a été testé sur un atelier entier, soit 131 cartes Bailey, il y a relevé 7 discordances d'état programme, et, après vérification manuelle, ces discordances existent réellement. Un certain nombre de composants ne présentant pas de discordance ont aussi été vérifiés avec succès.