WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Stratégie de test au sein du processus d'évolution d'architecture de Sodifrance

( Télécharger le fichier original )
par Laurent GARNIER
CNAM Nantes - Ingénieur informatique 2011
  

précédent sommaire suivant

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

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 sous-types 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

CNAM de Nantes - 2010 / 2011 - Mémoire d'ingénieur

 
 

7.4 MIA Generation

L'outil MIA Generation est le complément idéal de MIA Transformation. Dans le cadre de nos évolutions d'architecture, c'est sur lui que repose la phase de génération à partir des modèles issus des phases de transformation. Même si le principe se rapproche de MIA Transformation, des scripts positionnés sur des objets du métamodèle, MIA Generation est plus simple à appréhender, car beaucoup plus concret. A l'issue d'une génération, on obtient immédiatement du code. Si on modifie un script, on peut tout de suite vérifier si le résultat convient. La Figure 50 détaille l'environnement de développement de MIA Generation. Sur la partie gauche de l'écran, on trouve l'ensemble des Packages, ils contiennent les scripts qui sont de quatre types :

· File template : ce sont les scripts qui produisent les fichiers

· Text template : scripts qui renvoient du texte. Ils peuvent appeler d'autres « Text template » ou « Macro ».

· Macro : scripts java qui renvoient la plupart du temps du texte.

· Service : scripts java qui renvoient des collections d'objets.

Le script de l'exemple traite les classes stéréotypées « BusinessObject ». Donc pour toutes les occurrences d'objets de ce type dans le modèle, le « File Template » « BusinessObjectJavaClass » sera appelé. Il produira un fichier qui respectera le format du script. Dans la partie en bas à droite de l'écran, on voit le contenu du script. Les portions écrites en noir seront générées à l'identique dans le fichier. Les portions entre double crochets sont des appels soit à des « Text Template », soit à des Macros, qui produisent eux-mêmes du texte qui sera aussi généré dans le fichier cible. La Figure 51 illustre ce propos. Il s'agit du résultat de la génération du File template BusinessObjectJavaClass sur la classe « TestItem » du modèle. La partie en haut à droite reprend le « File Template » responsable de la génération. Dans la partie en bas à droite, on a le résultat de la génération.

On voit que le texte package est repris tel quel, alors que le Text Template « shortenedCodingPackageQualifiedName » renvoi le texte suivant : « com.migrationplatform.data.testing.architecture » qui est construit à partir des informations du modèle.

CNAM de Nantes - 2010 / 2011 - Mémoire d'ingénieur

 

Figure 52 : Processus de constitution du Jar à partir d'un flux XML.

CNAM de Nantes - 2010 / 2011 - Mémoire d'ingénieur

 

précédent sommaire suivant






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Entre deux mots il faut choisir le moindre"   Paul Valery