Académique Documents
Professionnel Documents
Culture Documents
fr
par
Jacques Barzic
Avertissement
Cette version incomplte du document (eclipse_emf_gef_gmf_alpha1.0.0, voir date
dition ci-dessous) comprend :
l'introdcution,
la 1re partie : prparation de la plate-forme d'exprimentation,
me
la 2
partie : Eclipse Modeling Framework (EMF),
un dbut de bibliographie non finalise.
Jacques Barzic
01/2008 - eclipse_emf_gef_gmf_alpha1.0.0
1. Eclipse : gnralits........................................................................................................ 13
2. Installation de Eclipse 3.2.............................................................................................. 13
2.1. Pralable................................................................................................................... 13
2.2. Tlchargement - Installation................................................................................... 14
2.3. Utilisation................................................................................................................. 14
3. Les versions utilises...................................................................................................... 14
2me Partie : Eclipse Modeling Framework (EMF)............................................................15
1. Introduction.................................................................................................................... 15
2. Objectif de EMF............................................................................................................. 16
3. Les formats d'entre standards.....................................................................................16
3.1. UML......................................................................................................................... 16
3.2. XMI...........................................................................................................................17
3.3. Java Annot.............................................................................................................. 17
4. Le (mta ?)mta-modle pivot : Ecore..........................................................................18
5. Gnration du code........................................................................................................ 19
5.1. Organisation du code gnr.....................................................................................19
5.2. La re-gnration et la fusion..................................................................................... 20
5.3. Le modle gnrateur................................................................................................20
6. Autres services proposs par EMF............................................................................... 21
6.1. La notification et les Adaptateurs............................................................................. 21
6.2. La gestion de la persistance...................................................................................... 21
6.3. L'API rflective.........................................................................................................21
6.4. L'EMF dynamique.................................................................................................... 22
7. EMF et les standards OMG...........................................................................................22
7.1. Pour UML.................................................................................................................22
7.2. Pour MOF................................................................................................................. 22
7.3. Pour XMI.................................................................................................................. 23
7.4. Pour MDA................................................................................................................ 23
8. Un peu d'exercice............................................................................................................23
8.1. Installer le plugin EMF............................................................................................. 23
8.2. Disposer d'un modle d'entre.................................................................................. 24
8.3. Gnrer le modle ecore........................................................................................... 25
8.4. Descrire le modles .genmodel.................................................................................25
8.5. Gnrer le code (vu ici comme un modle)..............................................................26
8.6. Autres gnrations possibles.....................................................................................27
9. Conclusion.......................................................................................................................27
eclipse_emf_gef_gmf_alpha1.0.0 - 01/2008
Jacques Barzic
Jacques Barzic
01/2008 - eclipse_emf_gef_gmf_alpha1.0.0
eclipse_emf_gef_gmf_alpha1.0.0 - 01/2008
Jacques Barzic
Jacques Barzic
01/2008 - eclipse_emf_gef_gmf_alpha1.0.0
eclipse_emf_gef_gmf_alpha1.0.0 - 01/2008
Jacques Barzic
Jacques Barzic
01/2008 - eclipse_emf_gef_gmf_alpha1.0.0
eclipse_emf_gef_gmf_alpha1.0.0 - 01/2008
Jacques Barzic
10
Jacques Barzic
01/2008 - eclipse_emf_gef_gmf_alpha1.0.0
11
Introduction
Lors d'un travail1 sur la mthode MDA (Model Driven Architecture), j'ai t amen
rechercher des outils logiciels existants pour la mettre en oeuvre.
Trs rapidement, une famille de solutions autour de la plate-forme Eclipse se dgage. Ces
solutions font rfrence de manire rcurrente aux plugins EMF (Eclipse Modeling
Framework) , GEF (Graphical Editing Framework) et GMF (Graphical Modeling
Framework).
Ayant, ce moment l, utilis Eclipse pour des dveloppement d'application Web en Java, je
dcide d'tudier plus en avant les possibilits de cet outil pour exprimenter MDA. J'tais
d'autant plus encourag d'aller dans cette voie que les projets d'outils lis MDA autour de
Eclipse sont nombreux et prometteurs.
Un des freins ce travail pour moi tait ma mconnaissance de ces plugins, phnomne
accentu par le manque de documentations synthtique (notamment en langue franaise 2) sur
le sujet.
Je me suis donc attel la rdaction du prsent document, que je fournis la communaut et
aussi sa critique. Il s'agit d'une introduction ces technologies, rdige par un nonspcialiste. Ce document n'a pas d'autre prtention que d'tre une entre en matire.
On trouvera donc dans ce document quatre parties.
La premire dcrira la plate-forme mise en place pour le reste de la dmonstration (Eclipse et
ses plugins) d'un point de vue pratique : installation, mise en oeuvre,...
Puis suivrons trois parties descriptives des trois plugins en question : objectifs, description,
exemples pratiques.
La dernire et cinquime partie portera un regard sur l'usage que font de cette configuration
les outils plus globaux se rclamant de l'Ingnierie Dirige par les Modles (IDM), dont MDA
est une implmentation.
Ce document ncessite quelques pr-requis pour tre lu avec profit :
une connaissance de base de Eclipse,
savoir ce que reprsentent les concepts de modles, mta-modles, mta-mtamodles (mon document dj cit sur MDA les reprend),
avoir une pratique, sans tre un expert, de UML (Unified Modeling Language) et de
Java.
Le lecteur trouvera les sources cres lors des exercices sur le site www.289eme.fr.
Nom de l'archive : eclipse_emf_gef_gmf_sources.zip.
L'archive contient des rpertoires dont le nom est cod de la manire suivante :
nom_x_y.z o :
nom = chemin du rpertoire dans le projet (celui dans l'explorateur Windows),
x = numro de la partie concerne du document,
y.x = numro de la section dans la partie.
Les archives contiennent aussi les lments des archives qui la prcdent dans le mme projet.
1 Voir document [BARZIC 2006].
2 Je n'ai rien contre l'anglais en soi, mais pour nous, francophones de naissance, le franais est plus
accessible !!
eclipse_emf_gef_gmf_alpha1.0.0 - 01/2008
Jacques Barzic
12
Jacques Barzic
01/2008 - eclipse_emf_gef_gmf_alpha1.0.0
13
eclipse_emf_gef_gmf_alpha1.0.0 - 01/2008
Jacques Barzic
14
Logiciel
Version
Windows
2000 Pro
VM Java
Eclipse
3.2.1
buildId=M20060921-0945
EMF
GEF
GMF
Jacques Barzic
01/2008 - eclipse_emf_gef_gmf_alpha1.0.0
15
eclipse_emf_gef_gmf_alpha1.0.0 - 01/2008
Jacques Barzic
16
2. Objectif de EMF
Jacques Barzic
01/2008 - eclipse_emf_gef_gmf_alpha1.0.0
17
consquence, la transformation d'entre du modle n'est plus : on dispose du Core Model sous
le bon format.
eclipse_emf_gef_gmf_alpha1.0.0 - 01/2008
Jacques Barzic
18
une classe pourra implmenter plusieurs interfaces, ce qui est une manire
dtourne d'autoriser l'hritage multiple (impossible en Java de classe classe et
possible en UML),
cela permet une volution douce vers la modlisation des plus irrductibles
codeurs.
Les annotations sont des tags @model placs dans la javadoc des interfaces. Ces tags, et leurs
attributs ventuels, sont dtects par EMF qui considre ainsi les entits concernes
(interfaces, mthodes) comme des lments de modlisation.
Modles
Mta-modles
Mta-mta-modles
UML
MOF
XMI
MOF
Java Annot
EBNF6
Java
EBNF
(M1)5
(M2)
(M3)
Pour tre fidle l'IDM, les transformations sont dfinies au niveau des mta-modles. Cette
stratgie permet de modliser les rgles de transformation (il faut l aussi un mta-modle7), et
ainsi de capitaliser les efforts faits pour leur dfinition.
La tableau ci-dessous reprsente l'espace technique standard de EMF.
Tableau III - L'espace technique de modlisation fdrateur.
Modle
Mta-modle
Mta-mta-modle
MEcore (pivot)
MMEcore
Ecore
(M1)
(M2)
(M3)
Il est hors de question de faire ici un expos dtaill sur Ecore, mais voici quelques lments
de comprhension.
Ecore est un mta-mta-modle trs proche de MOF. Il est en fait un sous ensemble de MOF :
il restreint celui-ci (l'Annexe 1 en donne quelques lments).
En effet, une des particularits de Ecore est qu'il accepte des mta-classes (dans le niveau M2)
5 Les niveaux M1, M2, M3 sont les niveaux d'une pile de modlisation dfinis par l'OMG. Le niveau M0 est la
ralit que l'on modlise : pour nous il s'agit de l'application informatique que l'on dveloppe.
6 EBNF : Extended Backus-Naur Form. Langage de dfinition de langages de programmation.
7 L'OMG en stadardise un : QVT (Query View Transformation).
Jacques Barzic
01/2008 - eclipse_emf_gef_gmf_alpha1.0.0
19
sans associations. Pour associer deux classes, il faudra strotyper un attribut comme tant
une association. Cette possibilit t mise au point car en langage Java le concept
d'association n'existe pas [BLANC 2005].
En Java, les associations d'un diagramme de classes UML s'implmentent par la cration d'un
attribut ayant pour type la classe partenaire. L'attribut doit tre cr dans l'une, dans l'autre ou
dans les deux classes partenaires (dans le cas d'une association binaire) selon la navigabilit
de l'association.
Au niveau du mta-modle l'on dfinira les caractristiques du modle de niveau M1. Par
exemple, on dfinira les concepts d'un diagramme de classes UML si c'est cela que l'on veut
traiter.
En l'occurrence, la seule entre UML possible est le diagramme de classe, mais on peut
imaginer de mta-modliser d'autres diagrammes (cas d'utilisation, squence,...) : cela
permettrait d'utiliser EMF d'autres stades du cycle de dveloppement (transformation CIM
vers PIM de MDA, par exemple Voir [BARZIC 2006]).
Le caractre fdrateur de EMF et de son mta-mta-modle Ecore tient dans le fait que les
diffrents modles d'entre et de sortie (voir tableau II) ont leur mta-modle Ecore (ceux
cits sont fournis en standard) et les transformations de l'un l'autre se feront en appuyant sur
un (ou quelques) bouton.
5. Gnration du code
Il est temps maintenant d'observer ce que va produire EMF : le code. C'est bien l son objectif
premier.
Comme l'illustre les exemples pratiques proposs 8, EMF rpond bien a son objectif
d'amliorer la productivit du dveloppement d'application. Il y arrive en automatisant la
gnration du code partir du modle. Effectivement, une fois le modle cr, quelques
clics suffisent cette gnration
Nous n'allons pas ici entrer dans une analyse dtaille du code contenu dans les lments
gnrs : nous nous contenterons, dans cette introduction EMF, d'une liste (non exhaustive)
de ce qui est gnr. Une analyse dtaille demanderais, au pralable, une tude plus
approfondie de EMF et de Ecore8.
5.1. Organisation du code gnr
Un choix de conception a t fait par ses concepteurs et est impos par EMF : la sparation
interface/implmentation dans le code gnr.
Cela va se concrtiser par la gnration de deux ensembles (issus du modle d'entre,
assimilable un diagramme de classes UML) :
1. un ensemble d'interfaces Java,
2. un ensemble de classes implmentant ces interfaces.
Les raisons principales qui justifient ce choix sont : la correspondance avec un pattern utilis
par de nombreuses API, la ncessit de pouvoir disposer d'un hritage multiple (impossible en
Java sans la notion d'interface).
En plus des classes correspondant au modle d'entre, EMF gnre deux autres lments
8 ce stade, l'auteur avoue ne pas avoir assez avanc dans l'tude du sujet pour cela.
eclipse_emf_gef_gmf_alpha1.0.0 - 01/2008
Jacques Barzic
20
La Factory
Cette interface comprend une mthode create pour chacune des classes du modle d'entre.
Cela va permettre de crer des instances (des objets) des classes de l'application.
Le modle de programmation EMF incite fortement utiliser ces mthodes pour crer les
objets lors de l'utilisation de l'application, en lieu et place de l'oprateur new.
Le Packetage
Cette classe apporte des facilits pour accder aux mta-donnes Ecore du modle. Il contient
des accesseurs aux EClasses, EAttributes et EReferences9 implmentes dans le modle, par
exemple.
5.2. La re-gnration et la fusion
Une des caractristiques avantageuses de EMF est qu'il va permettre de complter
manuellement le code obtenu automatiquement, de pouvoir re-gnrer le code partir du
modle modifi sans perdre les ajouts faits manuellement.
En effet, il est indispensable de pourvoir ajouter des mthodes et des attributs au code gnr
automatiquement. Celui-ci s'occupe uniquement (mais c'est dj pas mal !) de gnrer le
squelette des classes, les rfrences aux autres classes (les associations) et les accesseurs aux
attributs (les get et les set).
Les lments gnrs automatiquement seront reprs par le tag @generated dans la javadoc.
Lors d'une re-gnration, suite une modification du modle, seuls ces lments seront
retouchs. En cas de conflit avec une modification manuelle, c'est cette dernire qui prime.
5.3. Le modle gnrateur
En plus du modle conforme au mta-mta-modle Ecore, EMF utilise un modle dit
gnrateur (fichier d'extension .genmodel). Ce modle, comme le modle Ecore, est gnr
automatiquement (donc de manire transparente pour l'utilisateur) lors de la transformation du
modle d'entre en modle Ecore.
La plupart des informations ncessaires sont contenues dans le modle core : le nom des
classes les attributs, les rfrences,...
Mais un certain nombre d'informations n'y sont pas telles que : les rgles de prfixation du
nom des classes, o mettre le code gnr,...
Ces informations de paramtrage de la gnration seront stockes dans le modle gnrateur.
L'avantage de cette sparation (du gnrateur et du core ) est que le mta-mta-modle
Ecore reste indpendant de toutes informations relevant de la stricte gnration du code.
L'inconvnient est qu'il faut assurer une synchronisation des deux modles en cas de
modification (pour en garder la cohrence). EMF assure automatiquement cette
synchronisation.
9 Les lment Exxxx sont des lments du mta-mta-modle Ecore (voir annexe 1).
Jacques Barzic
01/2008 - eclipse_emf_gef_gmf_alpha1.0.0
21
eclipse_emf_gef_gmf_alpha1.0.0 - 01/2008
Jacques Barzic
22
aux accesseurs (get, set) de sa classe. Des mthodes d'accs plus gnriques existent.
Bien que cette technique d'accs est moins performante que l'accs direct par les accesseeurs
des classes, elle permet une ouverture vers l'extrieur des modles grce la gnricit des
mthodes de l'API rflective.
6.4. L'EMF dynamique
Jusqu' prsent nous avons utilis EMF pour gnrer une implmentation de nos modles.
Dans de nombreux cas, nous ne dsirerons pas implmenter le modle Ecore de notre
application. Il suffit pour une observation de l'architecture.
La particularit de l'API rflective (voir 6.3) est qu'elle peut gnrer dynamiquement les
classes ncessaires (et uniquement celles l) lors de l'utilisation d'une de ses mthodes.
En fait, le modle Ecore est le seul ncessaire pour pouvoir utiliser l'application : seul un
allongement du temps d'accs sera peru.
Jacques Barzic
01/2008 - eclipse_emf_gef_gmf_alpha1.0.0
23
8. Un peu d'exercice
Ce paragraphe pratique est inspir largement de [ECLIPSE-ORG-EMFa].
J'ai choisi, pour une question de longueur du document, de mettre ici le moins possible de
copie d'cran, et plutt d'utiliser les parcours dans les menus. Le lecteur pourra se rfrer au
document de rfrence ci-dessus, en anglais, pour une version illustre.
Le lecteur peut tlcharger les sources sur le site www.289eme.fr (voir introduction).
8.1. Installer le plugin EMF
Avec Eclipse, il y a deux faons de procder :
1. tlcharger directement l'archive du plugin et la dcompresser dans le rpertoire
d'installation de Eclipse,
2. utiliser la recherche et l'installation automatique du menu Aide->Mise jour de
logiciels->Rechercher et installer...
Bien que la deuxime solution apporte une productivit indniable, nous utiliserons ici la
premire : on y fait tout volontairement et par tape, cela permet une meilleure pdagogie
dans le cadre de ce type de document.
12 W3C est un consortium fond en octobre 1994 pour promouvoir la compatibilit des technologies du World
Wide Web telles que HTML, XHTML, XML, RDF, CSS, PNG, SVG et SOAP. Le W3C n'met pas des normes
au sens europen, mais des recommandations valeur de standards industriels [WIKIPEDIA-FR 2006].
eclipse_emf_gef_gmf_alpha1.0.0 - 01/2008
Jacques Barzic
24
Prliminaire
Comme nous l'avons vu EMF accepte diffrents formats de modles en entre (UML, XMI,
Java Annot). Pour simplifier cet exercice, et pour limiter le nombre d'outils en jeu, nous
allons prparer un modle en Java Annot : on peut le crer directement dans Eclipse.
Le modle ralis
Jacques Barzic
01/2008 - eclipse_emf_gef_gmf_alpha1.0.0
25
Les tapes
1. Crer un projet EMF vide
Menu : Fichier->Nouveau->Projet...
Choisir : Eclipse Modeling Framework (EMF)->Projet EMF vide et Suivant.
Nommer le projet et modifier ventuellement son emplacement et Terminer.
eclipse_emf_gef_gmf_alpha1.0.0 - 01/2008
Jacques Barzic
26
Procdure
Elle est toute simple :
faire un clic droit sur la racine du modle,
choisir Gnrer le code de modle,
l'opration se droule automatiquement.
Jacques Barzic
01/2008 - eclipse_emf_gef_gmf_alpha1.0.0
27
Un avantage de EMF
Si on modifie le modle, on eut le re-gnrer en suivant la mme procdure. Dans ce cas, les
changements sont fusionns avec les changements manuels que l'on pu faire sur le code
(sans perte de ces derniers).
On peut aussi gnrer uniquement une partie du code : il suffit, lors de la procdure ci-dessus,
de faire un clic droit sur l'lment que l'on souhaite (re)gnrer (paquetage, classe,...) et non
pas sur la racine du modle.
ce stade, le projet bibliotheque est contenu dans : bibliotheque_2_8.5 de l'archive
eclipse_emf_gef_gmf_sources.zip
8.6. Autres gnrations possibles
Le menu de gnration du modle propose, en plus de la gnration du code, quatre
possibilits :
Gnrer le code d'dition,
Gnrer le code de l'diteur,
Gnrer le code du test,
Gnrer tout : gnre en une seule commande le code et les trois modles ci-dessus.
Les deux premiers vont servir faire fonctionner l'application que l'on vient de dvelopper
comme un plugin d'Eclipse. On va ainsi, pouvoir crer une instance de l'application, telle que
le ferait un de ces futurs utilisateurs : on va, dans le cas de notre exemple, crr une
bibliothque et la remplir de livres (avec leurs auteurs, leurs catgories,...). et la faire
fonctionner.
Le dernier gnrera un plugin de test compatible JUnit.
9. Conclusion
travers cette tude thorique et introductive de EMF, ainsi que par l'exemple dcrit dans le
paragraphe prcdent , nous avons pu mieux cerner les buts et le fonctionnement du plugin.
Ce que l'on peut retenir :
1. EMF intervient au moment de la gnration du code partir d'un modle : son
domaine est le langage Java (donc aussi le monde objet) en standard,
2. EMF permet de prendre en entre plusieurs formats de modles (UML, Java
Annot, Schma XML, XMI) : il peut donc tre compatibles avec d'autres outils
utiliss en amont dans le cycle de vie du logiciel,
3. une fois que l'on dispose du modle d'entre, les transformations se passent trs
facilement : quelques clics suffisent,
4. le code gnr sera aussi prcis et complet que le sera le modle d'entre : EMF
pourra donc s'adapter l'volution des recherches (et donc des outils) qui
fabriquerons les modles du futur,
5. la gnration du code partir du modle n'empche pas son raffinage manuel : une
re-gnration aprs une modification du modle n'crase pas les complments.
eclipse_emf_gef_gmf_alpha1.0.0 - 01/2008
Jacques Barzic
28
Jacques Barzic
01/2008 - eclipse_emf_gef_gmf_alpha1.0.0
29
Conclusion
EntreIndex
EntreGlossaire
eclipse_emf_gef_gmf_alpha1.0.0 - 01/2008
Jacques Barzic
30
Jacques Barzic
01/2008 - eclipse_emf_gef_gmf_alpha1.0.0
31
eclipse_emf_gef_gmf_alpha1.0.0 - 01/2008
Jacques Barzic
32
Jacques Barzic
01/2008 - eclipse_emf_gef_gmf_alpha1.0.0
33
Bibliographie
[BARZIC 2006] BARZIC J., Model Driven Architecture (MDA), 2006. Disponible
l'adresse : http://www.289eme.fr/pdf/mda.pdf
[BLANC 2005] BLANC X., 2005. MDA en action. Ingnierie logicielle guide par les
modle. . Eyrolles, Architecte logiciel, PARIS. 269 p, .
[BUDINSKY et al. 2004] BUDINSKY F., STEINBERG D., MERKS E., ELLERSICK
R., GROSE T.J., 2004. Eclipse Modeling Framework. . Addison Wesley Professional, The
Eclipse series, Lebanon. 720 p, 2me chapitre disponible ici :
http://www.eclipse.org/emf/docs/.
[ECLIPSE TOTALE] , 2006. . http://www.eclipsetotale.com.
[ECLIPSE-ORG-EMFa] , 2006. Generating an EMF Model.
http://dev.eclipse.org/viewcvs/indextools.cgi/org.eclipse.emf.doc/tutorials/clibmod/clibmod.ht
ml.
[SUN JAVA a] , 2006. Page de tlchargment Java.
http://developers.sun.com/resources/downloads.html.
[VANWORMHOUDT 2004] VANWORMHOUDT G., Vrification de modles avec EMF
et OCL, Prsentation PPT, 2004. disponible ici :
http://www.enic.fr/people/Vanwormhoudt/siteEMFOCL/documents/EMFOCLpresentation.pd
f.
[WIKIPEDIA-FR 2006] Collectif, 2006. Divers documents. http://fr.wikipedia.org.
eclipse_emf_gef_gmf_alpha1.0.0 - 01/2008
Jacques Barzic
34
Jacques Barzic
01/2008 - eclipse_emf_gef_gmf_alpha1.0.0
35
Index
EntreIndex
20
eclipse_emf_gef_gmf_alpha1.0.0 - 01/2008
Jacques Barzic
36
Glossaire
EntreGlossaire
Jacques Barzic
20
01/2008 - eclipse_emf_gef_gmf_alpha1.0.0
RESUME
SUMMARY