15.05.2015 Views

Approche de métamodélisation pour la simulation et la vérification ...

Approche de métamodélisation pour la simulation et la vérification ...

Approche de métamodélisation pour la simulation et la vérification ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

38 CHAPITRE 2. L’INGÉNIERIE DIRIGÉE PAR LES MODÈLES<br />

WorkDefinition<br />

WorkSequence<br />

<br />

<br />

Conception<br />

finishToFinish<br />

startToStart<br />

finishToStart<br />

startToStart<br />

RédactionDoc Développement RédactionTest<br />

finishToFinish<br />

FIGURE 2.7: Exemple <strong>de</strong> modèle SIMPLEPDL<br />

Pour exprimer ces règles, l’OMG préconise d’utiliser OCL (Object Constraint<br />

Language) [OMG06c, WK03]. Appliqué au niveau du métamodèle, il perm<strong>et</strong> d’ajouter<br />

<strong>de</strong>s propriétés, principalement structurelles, qui n’ont pas pu être capturées par<br />

les concepts fournis par le métamétamodèle. Il s’agit donc d’un moyen <strong>de</strong> préciser<br />

<strong>la</strong> sémantique du métamodèle en limitant les modèles conformes.<br />

Par exemple, <strong>pour</strong> SimplePDL, on peut utiliser <strong>la</strong> contrainte OCL suivante <strong>pour</strong><br />

imposer l’unicité du nom <strong>de</strong>s activités dans un processus.<br />

context Process inv :<br />

self . activities −>forAll(a1, a2 : Activity |<br />

a1 a2 implies a1.name a2.name)<br />

Pour vérifier qu’un modèle respecte ces contraintes, on peut utiliser <strong>de</strong>s vérificateurs<br />

OCL tels que Use [RG00], OSLO 8 , TOPCASED, <strong>et</strong>c.<br />

Syntaxe concrète<br />

Les syntaxes concrètes (CS) d’un <strong>la</strong>ngage fournissent à l’utilisateur un ou plusieurs<br />

formalismes, graphiques <strong>et</strong>/ou textuels, <strong>pour</strong> manipuler les concepts <strong>de</strong> <strong>la</strong><br />

syntaxe abstraite <strong>et</strong> ainsi en créer <strong>de</strong>s « instances ». Le modèle ainsi obtenu sera<br />

conforme à <strong>la</strong> structure définie par <strong>la</strong> syntaxe abstraite. La définition d’une syntaxe<br />

concrète consiste à définir un <strong>de</strong>s mappings <strong>de</strong> M ∗ ac (cf. figure 2.4), M ac : AS ↔<br />

CS, <strong>et</strong> perm<strong>et</strong> ainsi « d’annoter » chaque construction du <strong>la</strong>ngage <strong>de</strong> modélisation<br />

définie dans <strong>la</strong> syntaxe abstraite par une (ou plusieurs) décoration(s) <strong>de</strong> <strong>la</strong> syntaxe<br />

concrète <strong>et</strong> pouvant être manipulée(s) par l’utilisateur du <strong>la</strong>ngage.<br />

La définition du modèle d’une syntaxe concrète est à ce jour bien maîtrisée<br />

<strong>et</strong> outillée. Il existe en eff<strong>et</strong> <strong>de</strong> nombreux proj<strong>et</strong>s qui s’y consacrent, principalement<br />

basés sur EMF (Eclipse Mo<strong>de</strong>ling Framework) [EMF07] : GMF (Generic<br />

Mo<strong>de</strong>ling Framework) [GMF07], TOPCASED [Top07, FGC + 06], Merlin Generator<br />

[Mer07], GEMS [GEM07], TIGER [Tig07, EEHT05a], <strong>et</strong>c. Si ces <strong>de</strong>rniers sont<br />

8. Open Source Library for OCL, http://oslo-project.berlios.<strong>de</strong>.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!