• Aucun résultat trouvé

Pour faciliter l’utilisation de notre bibliothèque par l’utilisateur nous avons décidé de renvoyer les résultats de la conversion dans une classe Resultat qui a pour but de cacher l’implémentation de la conversion. Cette classe propose une méthode qui permet de transformer une valeur en utilisant la conversion qu’elle représente. Cette classe est simplement constitué de deux objets de type Conversion qui permette de faire la conversion vers les unités de bases puis de faire la conversion vers l’unité cible.

Nous allons maintenant vous présenter comment nous avons implémenté l’algorithme qui permet de fournir à l’utilisateur ce résultat. Nous expliquerons ensuite comment nous évaluons une valeur avec la classe Resultat.

i – Calculer la conversion

À partir du moment où notre classe ConvertisseurINRA était capable de créer et d’avoir accès au conteneur associatif d’unité et qu’elle était capable d’extraire une unité depuis une chaîne de caractère, nous avons pu commencer à rédiger l’algorithme de conversion.

L’algorithme consiste à extraire les deux unités associées aux deux chaînes de caractères passé en paramètres. S’il y a une erreur dans une des deux chaînes de caractère alors une exception de type ChaineInvalideException est levé. Si l’extraction des unités c’est passée sans problème on alors on vérifie que la conversion est homogène en comparant les dimensions des deux unités entre elles. S’il ce test retourne faux alors on essaye de comprendre pourquoi. Si on remarque qu’il y a une erreur dans l’homogénéité des dimensions de base alors on lève une exception de type HomogeneiteException. Si le test renvoie faux car il y a une erreur d’homogénéité dans les dimensions qui ne sont pas des dimensions de bases, alors on lève une exception de type InvalidDimensionException. Enfin, si les deux unités sont homogènes, alors on génère un objet de type Resultat avec la conversion de l’unité source vers les unités de bases et avec la conversion des unités de bases vers l’unité cible. On renvoi ensuite ce résultat.

L’utilisateur peut donc facilement avoir un retour sur le résultat de la conversion qu’il a demandé. En effet, si une exception est générée il peut traiter les différents cas vu qu’il existe différents types d’exception. Si un résultat est généré il ne lui reste plus qu’à utiliser la méthode « evaluer » sur celui-ci avec les valeurs qu’il veut convertir. La partie qui suit détail le fonctionnement de cette méthode.

Mise en place de la conversion automatisée des entrées au sein d'une plateforme de simulations

Extraction des Unite

source et cible Conversion source vers SI

Conversion SI vers

cible Création du Resultat Vérification de faisabilité

de la conversion

Figure 7 : Diagramme récapitulatif de la conversion

ii – Utiliser les résultats

Grâce à la classe Resultat l’utilisateur peux simplement convertir un grand nombre de valeur en appelant simplement la méthode « évaluer » de celle-ci avec en paramètre la valeur qu’il veut convertir. Si l’utilisation de cette méthode est très simple en apparence, il y a quand même un traitement particulier qui est fait derrière.

Évaluer une valeur depuis la classe Resultat consiste à effectuer la conversion vers les unités de bases puis vers l’unité cible. On effectue donc deux fois le même traitement qui consiste à convertir une valeur avec l’aide d’un objet de type Conversion.

Pour effectuer cette conversion, on récupère les facteurs contenus dans la classe Conversion et on évalue le polynôme qu’ils représentent en utilisant notre valeur à convertir comme inconnue. On effectue donc ainsi les deux conversions d’affiler pour obtenir une valeur que l’on retourne à l’utilisateur.

Mise en place de la conversion automatisée des entrées au sein d'une plateforme de simulations

V – Résultats

Au terme de ce projet, nous avons une bibliothèque développée en C++/Qt permettant de convertir des unités plus ou moins complexes et que l’on peut configurer à l’aide d’un fichier XML. Elle a été testée de façon concluante au sein de la plateforme à laquelle elle est destinée et n’a pas posé de problèmes d’intégration particuliers.

A l’heure où ce rapport est écrit, quelques ajustements restent à faire pour prendre en compte certains cas complexes, mais cela sera fait avant la soutenance. Certaines conversions peu ordinaires restent problématiques et ne seront pas gérées par la bibliothèque cependant, ces conversions ne seront, en théorie, jamais nécessaires.

Mise en place de la conversion automatisée des entrées au sein d'une plateforme de simulations

VI – Perspectives

Bien qu’une grande partie du projet soit fonctionnelle, certains points resteraient selon nous à parfaire ou à continuer :

• La gestion d’unités personnalisées au sein du XML n’est pour l’instant pas implémenter mais dans nos choix structurels et algorithmiques nous avons pris en compte cette possibilité. Cela ne remet donc pas en doute la structure du projet. • Tenter de trouver une solution au problème des conversions peu ordinaires qui ne

sont pas fonctionnelles.

• Développer un logiciel afin de gérer les fichiers de configuration XML pour faciliter l’édition, la vérification et la création de ces fichiers.

Mise en place de la conversion automatisée des entrées au sein d'une plateforme de simulations

Conclusion

Le but de notre projet était de réaliser une bibliothèque de conversion d’unité automatisée intégrable au sein d’une plateforme d’analyse développée par l’UREP. Cette bibliothèque devait être capable de charger des unités définies dans un fichier XML et de vérifier l’homogénéité des conversions demandées.

À ce jour nous avons fourni une solution capable de faire la conversion entre des unités tant que celles-ci ne sont pas trop complexes. La solution produite correspond cependant aux besoins formulés lors des entretiens car elle permet la conversion des unités utilisées par la plateforme de simulation. De plus elle permet de charger des fichiers au format XML contenant les définitions des unités que nous utilisons.

Il faut encore régler le problème des unités trop complexes. De plus il nous reste à ajouter la possibilité de définir des unités dans le fichier XML qui n’ont pas de rapport avec les dimensions de bases.

Nous sommes très heureux d’avoir pu participer à ce projet car il nous a permis de travailler avec une entreprise et d’apporter notre contribution à un projet de plus grosse envergure. Nous espérons que le travail que nous avons réalisé pourra réellement aider les gens qui travaillent sur cette plateforme de simulation en leur faisant gagner du temps pour la conversion de leurs données.

Mise en place de la conversion automatisée des entrées au sein d'une plateforme de simulations

Table des figures

Figure 1 : Diagramme du fonctionnement de base du projet ... 3

Figure 2 : Lien Unite / ConvertisseurINRA ... 4

Figure 3 : La classe Unite et ses nombreux opérateurs ... 13

Figure 4 : Diagramme résummant l'initialisation du Convertisseur ... 16

Figure 5: Diagramme d'activité de l'extraction d'une unité... 18

Figure 6 : Processus de lecture d'une unité ... 19

Mise en place de la conversion automatisée des entrées au sein d'une plateforme de simulations

Lexique

Bibliothèque (logicielle) : En informatique, une bibliothèque logicielle est une collection de

fonctions, qui peut être déjà compilée et prête à être utilisée par des programmes

Classe : En programmation orientée objet, une classe déclare des propriétés communes à un

ensemble d'objets. La classe déclare des attributs représentant l'état des objets et des méthodes représentant leur comportement. Une classe représente donc une catégorie d'objets. Elle apparaît aussi comme un moule ou une usine à partir de laquelle il est possible de créer des objets.

Conteneur associatif : les conteneurs associatifs sont capables d'identifier leurs éléments à l'aide de

la valeur de leur clef. Grâce à ces clefs, les conteneurs associatifs sont capables d'effectuer des recherches d'éléments de manière extrêmement performante.

Dimension : La dimension d'une grandeur physique est sa dimension exprimée par rapport aux

dimensions des sept unités de base du Système International. On exprime la valeur d'une grandeur avec une unité. Par exemple, la vitesse a la dimension d'une longueur divisée par un temps.

Framework : En programmation informatique, un framework ou structure logicielle est un ensemble

cohérent de composants logiciels structurels, qui sert à créer les fondations ainsi que les grandes lignes de tout ou d’une partie d'un logiciel

Gestion de Version : La gestion des versions consiste à maintenir l'ensemble des versions d'un ou

plusieurs fichiers (généralement en texte). Essentiellement utilisée dans le domaine de la création de logiciels, elle concerne surtout la gestion des codes source.

Méthode : En programmation orientée objet (POO), une méthode est une fonction membre d'une

classe. Une méthode peut être:

- une méthode d'instance, n'agissant que sur un seul objet (instance de la classe) à la fois; - une méthode statique (ou méthode de classe), indépendant de toute instance de la classe

(objet).

Qt : une API orientée objet et développée en C++. Elle offre des composants d'interface graphique

(widgets), d'accès aux données, de connexions réseaux, de gestion des fils d'exécution, d'analyse XML, etc. Qt permet la portabilité des applications qui n'utilisent que ses composants par simple recompilation du code source.

Surcharge d'opérateur : le fait de pouvoir redéfinir le comportement des opérateurs du langage. XML : L'Extensible Markup Languag est un langage informatique de balisage générique. Cette syntaxe

est dite « extensible » car elle permet de définir différents espaces de noms, c'est-à-dire des langages avec chacun leur vocabulaire et leur grammaire, comme XHTML, XSLT, RSS, SVG… Elle est

reconnaissable par son usage des chevrons (< >) encadrant les balises. L'objectif initial est de faciliter l'échange automatisé de contenus complexes (arbres, texte riche…) entre systèmes d'informations hétérogènes.

Mise en place de la conversion automatisée des entrées au sein d'une plateforme de simulations

Bibliographie

Wikpédia l’encyclopédie libre

[en ligne] : http://fr.wikipedia.org/

Documentation Qt Framework [en ligne] : http://doc.qt.io/

Unité de Recherche sur l’Ecosystème Prairial

[en ligne] : https://www1.clermont.inra.fr/urep/

Standard C++ Library reference

Documents relatifs