Download - idm-utm-2010-be-05-sujet

Transcript

5/17/2018 idm-utm-2010-be-05-sujet - slidepdf.com

http://slidepdf.com/reader/full/idm-utm-2010-be-05-sujet 1/5

UTM M2 ICE 

INGÉNIERIE DIRIGÉE PAR LES MODÈLES

BE 5

17-18 mai 2011

Transformation de modèle à texte avec xPand

Nous avons déjà vu comment définir une syntaxe concrète textuelle (ou graphique) pour uneDSML. Ceci a permis de saisir ou modifier un modèle en utilisant cette syntaxe concrète.

Voyons maintenant le passage d’un modèle à un texte. On appelle cela une transformationmodèle à texte. Nous allons utiliser l’outil xPand du projet Eclipse M2T (Model2Text).

1 Transformation de modèle à texte avec xPand

Nous commençons par engendrer la syntaxe PDL1 à partir d’un modèle SimplePDL. Ensuite,nous engendrerons un fichier dot pour pouvoir visualiser graphiquement un modèle de procédé.

Exercice 1 : Comprendre la syntaxe de xText

Dans un premier temps, nous souhaitons pouvoir engendrer la syntaxe PDL1 à partir d’un modèleSimplePDL. C’est l’opération inverse de ce que nous avons fait avec xText qui nous permettaitd’obtenir un modèle SimplePDL en écrivant sa syntaxe textuelle.

Voici la syntaxe PDL1 du modèle de processus utilisé lors de la première séance.

process ExempleProcessus {wd RedactionDocwd Conceptionwd Developpementwd RedactionTestsws Conception f2f RedactionDocws Conception s2s RedactionDocws Conception f2s Developpementws Conception s2s RedactionTestsws Developpement f2f RedactionTests

}

Le principe de xPand est de s’appuyer sur des templates des fichiers à engendrer. Le template

qui correspond à la syntaxe PDL1 est donné au listing 1.1.1 Expliquer les différents éléments qui apparaissent sur le listing 1.

Exercice 2 : Créer et appliquer un template xPand

Pour créer et appliquer un template xPand, nous allons nous resservir du projet fr.enseeiht.pdl1,le projet xText que nous avions créé pour la syntaxe PDL1. En fait, tout va se passer dans le projetfr.enseeiht.pdl1.generator. Dans le dossier src, il y a trois sous-dossiers :

– model contient un exemple de SimplePDL (MyModel.pdl1). Ce modèle n’est pas bon caril correspond à la syntaxe concrète que xText utilise quand il crée un nouveau projet.

– templates : contient les fichiers de template pour xPand.

BE 5 1/5

5/17/2018 idm-utm-2010-be-05-sujet - slidepdf.com

http://slidepdf.com/reader/full/idm-utm-2010-be-05-sujet 2/5

INGÉNIERIE DIRIGÉE PAR LES MODÈLES Transformation de modèle à texte avec xPand

Listing 1 – Template xPand pour engendrer la syntaxe PDL1 à partir d’un modèle SimplePDL«IMPORT pDL1»

«REM»Génération de la syntaxe PDL1 à partir d’un modèle de processus.

«ENDREM»

«DEFINE main FOR Process»«FILE "process-" + this.name + ".pdl1"»

process «this.name» {«EXPAND wd FOREACH this.processElements.typeSelect(WorkDefinition)-»«EXPAND ws FOREACH this.processElements.typeSelect(WorkSequence)-»«EXPAND aide FOREACH this.processElements.typeSelect(Guidance)-»

}«ENDFILE»

«ENDDEFINE»

«DEFINE wd FOR WorkDefinition-»wd «this.name»

«ENDDEFINE»

«DEFINE ws FOR WorkSequence-»ws «this.predecessor.name-»

«EXPAND linkType FOR this.linkType-»«this.successor.name»

«ENDDEFINE»

«DEFINE linkType FOR WorkSequenceType-»«IF this == WorkSequenceType::start2start-»s2s«ELSEIF this == WorkSequenceType::start2finish-»s2f«ELSEIF this == WorkSequenceType::finish2start-»f2s«ELSEIF this == WorkSequenceType::finish2finish-»f2f«ENDIF-»

«ENDDEFINE»«DEFINE aide FOR Guidance-»

aide "«this.texte»-"«ENDDEFINE»

BE 5 2/5

5/17/2018 idm-utm-2010-be-05-sujet - slidepdf.com

http://slidepdf.com/reader/full/idm-utm-2010-be-05-sujet 3/5

INGÉNIERIE DIRIGÉE PAR LES MODÈLES Transformation de modèle à texte avec xPand

– workflow : contient le workflow qui permet d’appliquer le template sur un modèle pour

engendrer un ou plusieurs fichiers textes.2.1 Remplacer MyModel.pdl1 par celui fourni.

2.2 Pour créer un nouveau fichier de Template, faire New > Other > Xpand > Xpand Template

et donner le nom toPDL1.xpt au fichier. Remplacer son contenu par celui fourni.

2.3 Modifier le workflow. Il faut remplacer :– templates::Template::main FOR model par templates::toPDL1::main FOR model

– les « greetings » ou « greeting » par « process » (en respectant la casse).Dans le component, il faut ajouter la ligne suivante :

metaModel = org.eclipse.xtend.typesystem.emf.EmfRegistryMetaModel {}

2.4 Pour exécuter la transformation m2t, cliquer droit sur le fichier .mwe2 dans workflow, faire Run as > MWE2 Workflow. Le résultat doit apparaître dans le dossier src-gen.

Exercice 3 Écrire une transformation modèle à texte qui permet de traduire un modèle deprocédé en une syntaxe dot. Voici un exemple simple de fichier dot pour le même modèle deprocessus :

digraph ExempleProcessus {Conception->RedactionDocConception->RedactionDocConception->DeveloppementConception->RedactionTestsDeveloppement->RedactionTests

}

Une fois le fichier .dot obtenu, on obtient le graphe correspondant en PDF en faisant :dot ficher.dot -Tpdf -o fichier.pdf

3.1 Écrire et tester un template toDot.xpt pour engendrer un fichier .dot correspondant à unmodèle de processus. On pourra modifier le workflow (.mwe2) pour ajouter un nouveau compo-

nent . Le principe est de copier/coller le dernier composant et de remplacer toPDL1 par toDot.

2 Application aux réseaux de Petri

Exercice 4 : Transformations modèle à texte pour les réseaux de PetriNous allons maintenant définir une transformation modèle à texte pour les réseaux de Petri.L’objectif est d’engendrer la syntaxe textuelle utilisée par les outils Tina 1, en particulier nd (Net-Draw). La BNF de cette syntaxe est donnée au listing 2 et la figure 1(a) illustre les principauxconcepts présents des réseaux de Petri temporels que nous considérons. Le fichier textuel de ceréseau est donné au listing 1(b) au format Tina.

4.1 Écrire un template xPand pour transformer un modèle de réseau de Petri en un fichier .net

de Tina. On peut ensuite faire nd fichier.net. On peut ensuite faire edit > draw pour le visu-aliser graphiquement. Pour visualiser le réseau, faire nd fichier.net, puis edit > draw.

1. http ://www.laas.fr/tina/ 

BE 5 3/5

5/17/2018 idm-utm-2010-be-05-sujet - slidepdf.com

http://slidepdf.com/reader/full/idm-utm-2010-be-05-sujet 4/5

INGÉNIERIE DIRIGÉE PAR LES MODÈLES Transformation de modèle à texte avec xPand

Listing 2 – Syntaxe des fichiers d’entrée des outils de Tina1 .net ::= (<trdesc>|<pldesc>|<lbdesc>|<netdesc>)*2 netdesc ::= ’net’ <net>3 trdesc ::= ’tr’ <transition> {":" <label>} {<interval>}4 {<tinput> -> <toutput>}5 pldesc ::= ’pl’ <place> {":" <label>} {(<marking>)}6 {<pinput> -> <poutput>}7 lbdesc ::= ’lb’ [<place>|<transition>] <label>8 interval ::= (’[’|’]’)INT’,’INT(’[’|’]’) | (’[’|’]’)INT’,’w[’9 tinput ::= <place>{<arc>}

10 toutput ::= <place>{<normal_arc>}11 pinput ::= <transition>{<normal_arc>}12 poutput ::= <transition>{arc}13 arc ::= <normal_arc> | <test_arc> | <inhibitor_arc> |14 <stopwatch_arc> | <stopwatch-inhibitor_arc>15 normal_arc ::= ’*’<weight>16 test_arc ::= ’?’<weight>17 inhibitor_arc ::= ’?-’<weight>18 stopwatch_arc ::= ’!’<weight>19 stopwatch-inhibitor_arc ::= ’!-’<weight>20 weight, marking ::= INT{’K’|’M’}21 net, place, transition, label ::= ANAME | ’{’QNAME’}’22 INT ::= unsigned integer23 ANAME ::= alphanumeric name, see Notes below24 QNAME ::= arbitrary name, see Notes below

(a) syntaxe graphique

1 tr t1 [4,9] p1 p2*2 -> p3 p4 p52 tr t2 [0,2] p4 -> p23 tr t3 [1,w[ p5 -> p24

tr t4 [0,2] p3 p5?1 -> p35 tr t5 [0,3] p3 -> p16 pl p1 (1)7 pl p2 (2)8 net ifip

(b) syntaxe textuelle

FIGURE 1 – Exemple de réseau de Petri

BE 5 4/5

5/17/2018 idm-utm-2010-be-05-sujet - slidepdf.com

http://slidepdf.com/reader/full/idm-utm-2010-be-05-sujet 5/5

INGÉNIERIE DIRIGÉE PAR LES MODÈLES Transformation de modèle à texte avec xPand

4.2 Écrire un template xPand pour transformer un modèle de réseau de Petri en un fichier .dot

qui permettra de visualiser graphiquement le réseau.

BE 5 5/5