Institut numerique

7.3 MIA Transformation

MIA Transformation est un environnement de développement permettant l’écriture de scripts et
l’exécution de ces scripts afin d’effectuer des transformations de modèles. Ces modèles doivent
respecter un métamodèle supporté par l’outil afin de pouvoir être lus. Ensuite, il faut définir des
règles de transformation par le biais de script écrits soit en Java, soit en MIA-TL, un langage
simplifiant l’écriture des scripts. La Figure 48 illustre l’écriture d’une règle nommée « rename
widgets ». Pour toutes les occurrences des objets de type « widget », ainsi que pour ses soustypes
dans le modèle, les scripts « camelCaseName » et « renameModelElement » seront
appliqués. La Figure 49 montre la trace résultant de l’exécution de cette règle. On peut observer la
valeur en entrée du script « camelCaseName », et la valeur retournée. Ce petit exemple démontre
de manière simple la façon dont on peut agir sur les éléments du ou des modèles traités. Bien
entendu, les scripts peuvent être bien plus élaborés, affinant les recherches selon plusieurs
propriétés, effectuant des actions plus complexes qu’une simple modification du nom, comme par
exemple l’ajout d’instructions.

Deux exemples de transformations qui peuvent être assez complexes à réaliser :

· Les fonctions sont mal typées et ne renvoient qu’un type « object ». Résolution du type de
la fonction et affectation au type de retour (« ReturnStatement »).

· Les requêtes SQL sont sous la forme de chaînes de caractères dans le code source, analyse
de la chaîne en question, extraction des paramètres en entrée et en sortie de la requête.

A partir de cette analyse, création d’une couche d’accès aux données « propre » avec par
exemple, une classe par table, une méthode par requête, et positionnement des paramètres
correspondant aux variables nécessaires.

Figure 50 : Copie d’écran du logiciel MIA Generation en mode développement

Figure 51 : Copie d’écran du logiciel MIA Generation en mode trace

Page suivante : 7.4 MIA Generation

Retour au menu : Stratégie de test au sein du processus d’évolution d’architecture de Sodifrance