• Aucun résultat trouvé

Etat de l’Art

3.3. ING ´ ENIERIE DIRIG ´ EE PAR LES MOD ` ELES

3.3.1.1 D´efinitions

Les mod`eles dans le g´enie logiciel ont de multiples utilisations. Ils servent `a exprimer les fonctionnalit´es, les exigences du syst`eme, `a ´etudier diff´erentes possibilit´es de conception du syst`eme, etc. Les informations contenus dans les mod`eles, au lieu d’ˆetre cantonn´ees `a leur fonction initiale, peuvent servir de base pour engendrer le syst`eme r´eel.

Les utilisations des mod`eles sont multiples : g´en´eration de code, construction de l’´electro-nique, cˆablage d’un syst`eme, etc. Il parait n´ecessaire de d´efinir le vocabulaire de l’ing´enierie dirig´ee par les mod`eles. Un syst`eme est repr´esent´e par un mod`ele selon le domaine d’applica-tion. Dans un mod`ele, un objet est conforme `a un langage de mod´elisation lorsque cet objet est d´ependant de celui-ci. Pour un mod`ele, on parle de m´eta-mod`ele du langage. Le m´eta-mod`ele repr´esente toutes les r`egles que doit respecter le mod`ele pour que ce dernier soit conforme au m´eta-mod`ele. Jambe Bras Corps Tˆete Composition H´eritage Relation ´ El´ement 1..1 0..2 0..2 M ´et a-M o d `el e M o d `el e M ´et a-M ´et a-Mo d `el e 1..1 1..2 0..*

Figure 3.2 – Concepts de Mod`ele et m´eta-mod`ele

Par exemple, la figure 3.2 pr´esente la mod´elisation simple d’un corps humain ainsi que les r`egles associ´ees. Le mod`ele repr´esente ici seulement les ´el´ements sp´ecifiques aux membres d’un corps humain. Le mod`ele est conforme au m´eta-mod`ele (sur la mˆeme figure), s’il compte au plus 2 bras, 2 jambes et poss`ede exactement 1 tˆete, tous rattach´es au corps. Ce m´eta-mod`ele est ensuite conforme `a un m´eta-m´eta-mod`ele, permettant ainsi de d´efinir les relations entre les objets dans le m´eta-mod`ele. Les objets ´etant ici, les membres du corps les relations entre les objets. Ensuite, non seulement le m´eta-m´eta-mod`ele d´efinit le m´eta-mod`ele, mais il se d´efinit par lui-mˆeme. L’OMG a normalis´e le m´eta-m´eta-mod`ele dans le Meta Object Facility (MOF) [OMG15]. Il peut ´egalement d´efinir d’autres m´eta-mod`eles comme le m´eta-mod`ele d’un animal par exemple.

3.3.1.2 Outillage de mod´elisation

Pour cr´eer des m´eta-mod`eles, des frameworks permettent de cr´eer des langages de mod´elisa-tion bas´es sur le m´eta-m´eta-mod`ele MOF. Le langage le plus connu est le langage Ecore, inclus dans Eclipse Modeling Framework (EMF) [SBPM08a]. Le framework EMF permet d’´etablir un m´eta-mod`ele bas´e sur Ecore et de g´en´erer le code Java pour construire un langage de mod´elisa-tion conforme au m´eta-mod`ele. Le m´eta-mod`ele Ecore est un m´eta-m´eta-mod`ele, comme MOF, propos´e par l’OMG.

Le langage Kermeta [JBF11], bas´e sur EMF et Ecore, permet la m´eta-mod´elisation avec une annotation du code pour sp´ecifier le comportement du m´eta-mod`ele lors de transformations de mod`eles par exemple.

Epsilon [KPP06] est aussi un ensemble de langages ind´ependants de EMF permettant la g´en´eration ainsi que la transformation de mod`eles entre autres. Le framework permet de cr´eer un m´eta-mod`ele `a partir d’un ensemble d’instructions.

3.3.1.3 Expression de contraintes structurelles

Les contraintes structurelles permettent d’assurer que le mod`ele est bien form´e et que les incoh´erences sont absentes du mod`ele. Par exemple, selon la classe r´ef´erenc´ee, les valeurs dis-ponibles `a la mod´elisation ne seront pas les mˆemes. Pour d´efinir ces r`egles, le langage Object Constraint Language (OCL) [OMG06a] permet `a l’expert m´eta-mod`ele de d´efinir des contraintes sur le m´eta-mod`ele. Ces contraintes doivent ˆetre v´erifi´ees par le mod`ele pour assurer une mod´e-lisation correcte selon les r`egles d´efinies par l’expert m´eta-mod`ele. Les r`egles OCL permettent ´egalement de d´eterminer si une contrainte structurelle est respect´ee par le mod`ele. Le langage Epsilon contient ´egalement Epsilon Validation Language (EVL) pour v´erifier les contraintes structurelles des mod`eles.

3.3.2 Transformations de mod`eles

On distingue deux grands types de transformations :

- les transformations Model-to-Model (M2M), c’est-`a-dire de mod`ele `a mod`ele

- les transformations Model-To-Text (M2T) qui engendrent un fichier sous forme de texte pour cr´eer du code ou bien de la documentation `a partir d’un mod`ele similaire `a Unified Modeling Language (UML).

Dans les transformations M2M, on distingue :

- les transformations exog`enes o`u les m´eta-mod`eles de d´epart et d’arriv´ee sont diff´erents, - les transformations endog`enes o`u les m´eta-mod`eles de d´epart et d’arriv´ee sont identiques.

Les transformations exog`enes n´ecessitent ainsi de faire correspondre chaque classe du m´eta-mod`ele de d´epart `a chaque classe du m´eta-mod`ele d’arriv´ee. Ce type de transformation est requis pour une migration de mod`eles par exemple. Par cons´equent, cela implique de connaˆıtre les deux m´eta-mod`eles pour ´eviter la perte d’informations au cours de la transformation. Par exemple, une transformation depuis UML vers un m´etamod`ele Ecore est exog`ene.

Les transformations endog`enes, r´esultent souvent d’une volont´e de raffinement du mod`ele ou bien de d´etailler ou abstraire certains concepts du mod`ele. Par exemple, une transformation de UML vers UML est endog`ene.

Outillage de transformation Query/View/Transformations (QVT) [OMG17b] est un stan-dard de l’OMG pour normaliser les transformations entre langages du MOF. Il est compos´e de requˆetes (Query) pour s´electionner des ´el´ements d’un mod`ele, de vues (Views) pour visualiser certains aspects et de transformations pour transformer les mod`eles.

Le langage Atlas Transformation Language (ATL) [JABK08] permet la transformation M2M `

3.3. ING ´ENIERIE DIRIG ´EE PAR LES MOD `ELES

Syst`eme

Point de vue logiciel

Point de vue m´ecanique Point de vue thermique Point de vue electrique

Figure 3.3 – Quelques points de vues existant

Acceleo [MJL+12] est un des outils qui permettent la transformation M2T pour g´en´erer du code HTML ou Java par exemple.

3.3.3 Langages d´edi´es de mod´elisation (DSML)

Dans cette section, le principe des langages sp´ecifiques de mod´elisation ou Domain-Specific Modeling Language (DSML) est pr´esent´e pour construire des langages sp´ecifiques aux domaines. Les DSML permettent de cr´eer des mod`eles et de les manipuler simplement en utilisant des concepts m´etier. Chacun de ces langages est sp´ecialis´e dans un domaine particulier des syst`emes, un langage pouvant ˆetre d´edi´e au g´enie ´electrique, un autre pour l’´electronique, ou encore `a la partie temporelle d’un logiciel.

Un langage sp´ecifique r´esulte souvent d’une grande r´eflexion sur les parties `a repr´esenter d’un syst`eme. Ce principe permet d’abstraire le syst`eme de fa¸con `a se focaliser sur un point de vue particulier. Comme pr´esent´e sur la figure 3.3, un syst`eme peut ˆetre vu selon diff´erents domaines. L’ensemble de tous les mod`eles d’un syst`eme donn´e peut ainsi repr´esenter le syst`eme dans sa globalit´e. Dans la figure 3.2, le corps humain n’est repr´esent´e que par des membres, il pourrait correspondre au m´eta-mod`ele sous-jacent `a un DSML du corps humain vu par un enfant. Il serait donc n´ecessaire d’avoir un autre m´eta-mod`ele bien plus complexe si l’on souhaite cr´eer un DSML `a destination d’un m´edecin, et un autre m´eta-mod`ele particuli`erement d´etaill´e au niveau du cœur, sans doute moins au niveau du reste, si l’on souhaite cr´eer un autre DSML `

a destination d’un chirurgien en cardiologie.

Les langages d´edi´es fournissent tous les ´el´ements de mod´elisation n´ecessaires pour r´epondre `

a une probl´ematique pr´ecise. Ces langages sont d´efinis autour de deux principales syntaxes : — la syntaxe abstraite : c’est la syntaxe utilis´ee pour d´efinir les ´el´ements ainsi que les

relations entre ces ´el´ements, c’est le m´eta-mod`ele.

— la syntaxe concr`ete: c’est une syntaxe, graphique ou textuelle, qui repr´esente le syst`eme, c’est le mod`ele.

Par la suite, le mod`ele peut servir de base pour une g´en´eration automatique de code ou bien pour l’analyse. Il est parfois difficile de cr´eer en entier un DSML et lorsque qu’un langage est cr´e´e, il faut, pour faciliter le processus, que toutes les parties prenantes utilisent le mˆeme langage. Des langages de conception sont donc apparus pour unifier la mod´elisation d’un domaine. Dans la suite, des langages orient´es temps r´eel sont pr´esent´es.