Précendente Suivante

TRAVAIL EFFECTUÉ : PORTAGE DE MAP EDV SOUS NT

Après la correction de MAP EDV, il a été décidé de traiter en priorité son portage sous Windows NTTM plutôt que Incohérence Bailey.

1) Résultats à obtenir

A partir de la version corrigée de MAP EDV, il fallait obtenir une version Windows du logiciel.

Les spécifications du logiciel étaient les mêmes que pour la version VMS de MAP EDV, mais avec des aspects supplémentaires : une interface visuelle, la possibilité d'ajouter une fonction permettant un calcul par le serveur CML plutôt que par le logiciel lui-même, une fonction d'impression autonome de tout programme externe pour pouvoir être utilisable sur n'importe quelle machine, une aide en ligne.

Pour développer ce programme, un PC équipé de Microsoft Visual C++ était à disposition en plate-forme de validation.

Une contrainte supplémentaire était ajoutée par la possible évolution vers le calcul à distance par le serveur CML : le code du calcul en lui-même se devait d'être portable sur une machine fonctionnant sous VMS.

2) Axes d'étude

Les axes d'étude étaient les suivants : porter les fonctions de calcul de la MAP EDV sous Windows, la modifier pour la rendre portable sur VMS, y greffer une interface, ajouter toutes les fonctions supplémentaires ayant rapport avec l'interface.

3) Déroulement

3.1) Le portage de la fonction de calcul

Tout d'abord, il a fallu adapter le code de la fonction afin de la faire fonctionner sous Windows, le travail ne se limitant pas à un vulgaire « Copier - Coller » du code VMS : un grand nombre de fonctions systèmes ne fonctionnant pas sous Windows (par exemple « lib$spaw ( dsc$descriptor_s , int, dsc$descriptor_s *, int, int, int, int *, int, int, int, int, int ) » qui sert à exécuter une commande (en l'occurrence copier des fichiers) ou bien « SYS$ASCTIME (int, $DESCRIPTOR *, int, int ) » servant à récupérer la date actuelle). Pour des raisons de portabilité, la fonction de calcul ne s'occupe plus de charger elle-même les fichiers, et ne crée plus de fichier d'échange. A la place, elle prend en entrée le contenu de ces fichiers et renvoie une structure contenant la MAP EDV calculée complète. La fonction d'origine écrivait les deux à cinq structures contenant la MAP EDV dans un fichier pour les recharger ensuite lors de l'impression, la fonction portée renvoie les structures au programme principal pour qu'il « imprime » le résultat dans un fichier.

De même la date est calculée (et mise en forme de façon française) hors du calcul, ce qui permet de s'affranchir de cette fonction système propre à Windows.

Toujours dans un souci de portabilité, cette partie du logiciel est entièrement codée en C « de base » sans utilisation de classes ou d'autres particularités du C++.

Cette partie du travail a pris environ quatre jours.

3.2) L'interface

Après le recodage de la fonction de calcul, il a fallu créer une interface graphique. Cette interface, codée en C++ devait respecter les particularités suivantes :

Cette partie du travail a pris une grosse semaine.

3.3) Les améliorations diverses

Diverses améliorations ont été rajoutées en plus de ce que le cahier des charges avait prévu : un utilitaire de visualisation des MAP EDV pour permettre de travailler dessus sans les imprimer, l'affichage de la version sur les MAP EDV, l'utilisation d'un fichier listant les automates connus disposant d'une MAP EDV pour extraire le concentrateur et l'atelier « en clair » plutôt que de l'extraire du nom.

3.4) Chronogramme

Chronogramme du portage de MAP EDV

Sur ce chronogramme, on peut voir :

Résultats

4.1) L'Interface Homme Machine

IHM de MAP EDV pour Windows

On y retrouve les éléments suivants :

(I) Choix du calcul local.
(II) Choix du calcul à distance, sur le serveur CML.
(III) Les zones de textes pour le choix des répertoires et leurs boutons « parcourir » associés.
(IV) La liste de tous les automates sélectionnables pour le calcul CML.
(V) Le bouton d'exécution.
(VI) Le bouton lançant le module de visualisation des MAP EDV.
(VII) Le bouton d'aide.
(VIII) Une barre de progression visualisant d'état d'avancement du calcul.
(IX) Barre de statut affichant l'état du calcul et les erreurs éventuelles.
(X) Barre de statut donnant le nom de l'automate du répertoire en cours, s'il y en a un, ou juste « Automate ... » s'il n'y en a pas.

Aide Le bouton d'aide (VII) permet d'afficher le fichier d'aide généré à partir de la documentation technique de MAP EDV, mise à jour de nouveau pour prendre en compte les spécificités de MAP EDV pour Windows.

L'aide contient également un « tutorial » pour expliquer le fonctionnement du programme.

Les boutons radio (I) et (II) activent (ou désactivent) l'option de calcul associée ainsi que les contrôles (boutons, liste, zones de texte) qu'ils utilisent.

Les boutons « parcourir » font appel à un « common dialog » (boite de dialogue standard de Microsoft®) de gestion des fichiers pour choisir le répertoire.

Le bouton « Exécuter » lance le calcul et, s'il est réussi, un « Message Box » (boite de message standard de Microsoft®) apparaît demandant à l'utilisateur s'il veut visualiser la MAP EDV.

Le bouton « Editer » (VI) fait appel à un « common dialog » d'ouverture de fichier permettant de sélectionner une MAP EDV à visualiser avant de faire appel au module de visualisation des MAP EDV détaillé ci-dessous

4.2) Module de visualisation

IHM du module de visualisation

On y retrouve les éléments suivants :

(I) La zone de texte (en lecture seule) ou s'affichent les pages des MAP EDV.
(II) Le bouton d'impression.
(III) Les boutons de défilement des pages.
(IV) Le retour au calcul.

Le module affiche dans la zone de texte (I) les différentes pages de la MAP EDV (les pages sont séparées par des sauts de pages pour l'impression). Cette zone de texte fait juste la taille nécessaire pour afficher un tableau d'EDV en entier.

Le bouton imprimer fait appel à un « common dialog » d'impression qui permet de choisir l'imprimante, puis envoie la MAP EDV page par page à l'imprimante sélectionnée.

4.3) Conclusion

Le cahier des charges est satisfait car : le programme est capable de calculer localement des MAP EDV, l'interface est pleinement fonctionnelle.

Bien sûr le calcul CML reste à réaliser, mais il n'était pas prévu de le traiter dans le cadre de ce stage.

Pour ce qui est du calcul local, la fonction de calcul avait déjà été debuggée, et peu de bugs nouveau sont apparus. Tous les problèmes relevés ont été corrigés, et le programme a été capable de calculer la MAP EDV de la centaine d'automates présents actuellement sur le site.

L'interface n'a jamais connu de problèmes majeurs et toutes les erreurs relevées par M. LEBLANC ont été corrigées.

A priori, la seule modification restant à réaliser sera la mise en place du calcul CML.


Précendente Suivante


Retour à l'accueil.