Vous êtes sur la page 1sur 38

www.289eme.

fr

Eclipse et ses plugins de modlisation


(EMF GEF GMF).
Entre en matire

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.

PDF cr le 12 janvier 2008

Jacques Barzic

Eclipse et EMF, GEF, GMF

01/2008 - eclipse_emf_gef_gmf_alpha1.0.0

Eclipse et EMF, GEF, GMF

Table des matires


Index des tableaux.................................................................................................................. 5
Index des illustrations............................................................................................................ 7
Liste des abrviations............................................................................................................ 9
Introduction........................................................................................................................... 11
1re Partie : la plate-forme d'accueil.................................................................................. 13

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

Eclipse et EMF, GEF, GMF

3me Partie : Graphical Editing Framework (GEF)........................................................... 29


4me Partie : Graphical Modeling Framework (GMF)....................................................... 29
5me Partie : EMF, GEF et GMF en action......................................................................... 29
Conclusion.............................................................................................................................29
Annexe 1 : le mta-mta-modle Ecore (simplifi)............................................................31
Bibliographie......................................................................................................................... 34
Index....................................................................................................................................... 36
Glossaire................................................................................................................................37

Jacques Barzic

01/2008 - eclipse_emf_gef_gmf_alpha1.0.0

Eclipse et EMF, GEF, GMF

Index des tableaux


Tableau I - Versions des logiciels utilises...............................................................................14
Tableau II - Les espaces techniques de modlisation fdrer............................................... 18
Tableau III - L'espace technique de modlisation fdrateur.................................................. 18

eclipse_emf_gef_gmf_alpha1.0.0 - 01/2008

Jacques Barzic

Jacques Barzic

Eclipse et EMF, GEF, GMF

01/2008 - eclipse_emf_gef_gmf_alpha1.0.0

Eclipse et EMF, GEF, GMF

Index des illustrations


Illustration 1 - Organisation gnrale de EMF ([BUDINSKY et al. 2004])............................16
Illustration 2 - Le modle de l'exemple.....................................................................................24
Illustration 3 - Arborescence du modle Ecore de notre projet Bibliothque ....................26
Illustration 4 - Mta-mta-modle Ecore : hirarchie des classes...........................................31
Illustration 5 - Mta-mta-modle Ecore : lments (1)...........................................................31
Illustration 6 - Mta-mta-modle Ecore : lments (2)...........................................................32
Illustration 7 - Mta-mta-modle Ecore : lments (3)...........................................................32
Illustration 8 - Mta-mta-modle Ecore : lments (4)...........................................................32

eclipse_emf_gef_gmf_alpha1.0.0 - 01/2008

Jacques Barzic

Jacques Barzic

Eclipse et EMF, GEF, GMF

01/2008 - eclipse_emf_gef_gmf_alpha1.0.0

Eclipse et EMF, GEF, GMF

Liste des abrviations


API : Application Programming Interface.
BI : Business Intelligence.
CWM : Commun Warehouse Metamodel.
DTD : Document Type Definition (super a marche aussi en franais ! Dfinition de Type de
Document).
EBNF : Extended Backus-Naur Form.
EMF : Eclipse Modeling Framework.
EPL : Eclipse Public Licence.
GEF : Graphical Editing Framework.
GMF : Graphical Modeling Framework.
MDA : Model Driven Architecture.
MOF : Meta Object Facility.
MVC : Model-Vue-Controler.
OMG : Object Management Group.
QVT : Query View Transformation.
UML : Unified Modeling Language.
W3C : World Wide Web Consortium.
XMI : XML Metadata Interchange.
XML : eXtensible Markup Language.
XSL : eXtensible Stylesheet Language.

eclipse_emf_gef_gmf_alpha1.0.0 - 01/2008

Jacques Barzic

10

Jacques Barzic

Eclipse et EMF, GEF, GMF

01/2008 - eclipse_emf_gef_gmf_alpha1.0.0

Eclipse et EMF, GEF, GMF

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

Eclipse et EMF, GEF, GMF

01/2008 - eclipse_emf_gef_gmf_alpha1.0.0

Eclipse et EMF, GEF, GMF

13

1re Partie : la plate-forme d'accueil


1. Eclipse : gnralits
Le prsent document n'a pas pour objet de dcrire la plate-forme Eclipse en elle mme. Les
lecteurs qui dsirent la dcouvrir pourront consulter le site francophone qui lui est consacr
[ECLIPSE TOTALE]. Il rsume bien ce qu'est Eclipse et d'o elle vient. Par ailleurs, ce site
tient diffrentes rubriques et revoie vers les pages Web officielles des projets que fdre la
Fondation Eclipse.
Un grand principe est retenir quant l'architecture de Eclipse : un noyau est diffus sous ce
nom qui offre les fonctionnalits de base. Ce noyau est conu (et c'est un principe) pour
pouvoir recevoir des extensions (les fameux plugins). Comme le noyau est diffus en Open
Source (sous licence Eclipse Public Licence EPL), chacun peut dvelopper de nouveaux
plugins : il en existe sous licence libre et gratuite et il existe aussi des projet commerciaux et
payants.
Depuis juin 2006, la version courante de Eclipse est la version 3.2 batise Callisto.
La nouveaut organisationnelle, cette anne, est que la livraison de nouvelles versions
majeures, annuelle depuis 2004, est couples la livraison de neuf sous projets importants.
Cela permet de se retrouver plus facilement dans les nombreux projets qui se basent sur
Eclipse.
Callisto est le nom de code donn la sortie simultane des 10 projets suivants :
Eclipse - Version 3.2,
BIRT - Business Intelligence and Reporting Tools - Version 2.1,
CDT - C/C++ Development Tools - Version 3.1,
DTP - Data Tools Project - Version 0.9,
EMF - Eclipse Modeling Framework - Version 2.2,
GEF - Graphical Editing Framework - Version 3.2,
GMF - Graphical Modeling Framework - Version 1.0,
TPTP - Test & Performance Tools Platform - Version 4.2,
VE - Visual Editor - Version 1.2,
WTP - Web Tools Project - Version 1.5,
Source [ECLIPSE TOTALE].
Les quatre projets qui nous intressent ici sont dans le lot.

2. Installation de Eclipse 3.2


2.1. Pralable
Eclipse tant dveloppe en Java, une machine virtuelle doit tre installe sur l'ordinateur
pour pouvoir l'utiliser. Vous pouvez tlcharger cette machine virtuelle sur [SUN JAVA a] et
ensuite l'installer.

eclipse_emf_gef_gmf_alpha1.0.0 - 01/2008

Jacques Barzic

14

Eclipse et EMF, GEF, GMF

2.2. Tlchargement - Installation


Aller la page http://www.eclipse.org/downloads/ pour tcharger Eclipse.
La version 3.2.1 est utilise pour ce rapport.
Ensuite il suffit de dcompresser l'archive dans le rpertoire de votre choix.
Il peut tre utile aussi de tlcharger et d'installer le pack de traduction pour avoir la version
franaise. Pour cela tlchargez le pack Nlpack1-eclipse-SDK-3.2.1-win32.zip sur la page
http://download.eclipse.org/eclipse/downloads/.
Pour l'installer il suffit de le dcompresser dans le rpertoire d'installation de Eclipse.
Lancer Eclipse et procder une mise jour :
1. menu Aide -> Mise jour de logiciels -> Rechercher et installer...,
2. choisir dans le boite de dialogue : Rechercher les mises jour des dispositifs dj
installs,
3. laisser l'opration se faire et rpondre aux questions et/ou slectionner les options
la demande.
2.3. Utilisation
Dans la suite nous considrons que le lecteur possde la connaissance des manipulations de
base de Eclipse : cration d'un espace de travail, cration et manipulation d'un projet,
affichage de vues et perspectives, mises jour de la configuration, tlchargment/installation
de plugins.

3. Les versions utilises


Tableau I - Versions des logiciels utilises

Logiciel

Version

Windows

2000 Pro

VM Java

J2SE Runtime Environment 5.0 Update 5

Eclipse

3.2.1
buildId=M20060921-0945

EMF

2.2.1 (septembre 2006)

GEF
GMF

Jacques Barzic

01/2008 - eclipse_emf_gef_gmf_alpha1.0.0

Eclipse et EMF, GEF, GMF

15

2me Partie : Eclipse Modeling Framework (EMF)


1. Introduction
Eclipse Modeling Framework est la partie Model du pattern MVC (Model-VueControler) ( noter que le framework ne propose pas de visuel pour reprsenter le
modle). Le modle peut tre persist sous diffrentes manires : XSL, fichiers java
avec annotations, XMI, puis donne la possibilit de rajouter son systme de
persistance. A noter que EMF gre la persistance sous forme de plusieurs fichiers
ressources relies, et qu'en implmentant son propre systme de persistance, vous ne
perdez pas cet atout [WIKIPEDIA-FR 2006].
Cette dfinition la Wikipdia, si elle souffre de quelques manques, permet une entre en
matire :
EMF est un framework qui traite des modles : cela peut s'entendre ici sous le
sens que EMF offre ces utilisateurs un cadre de travail pour la manipulation des
modles (sous entendu, propos des applications informatiques, credo de Eclipse),
EMF permet de stocker les modles sous forme de fichier pour en assurer la
persistance,
EMF permet de traiter diffrents types de fichiers : conformes des standards
reconnus (XML, XMI) et aussi sous des formes spcifiques (code Java) ou tout
simplement sur mesure (au bon gr du concepteur),
EMF ne propose pas d'outil graphique (de dessin) pour la modlisation.
Mais cette dfinition ne dit rien sur ce dont est capable EMF, sur la manire dont il y arrive et
sur sa mise en oeuvre travers Eclipse. C'est ce que nous allons tenter d'clairer dans ce
document.
J'ai choisi l'option (certes discutable) dans cette partie de ne pas placer les exemples en mme
temps que les explications plus thoriques. Le lecteur se reportera utilement au 8 Un peu
d'exercice.
Le paragraphe d'exercice peut tre utilis au fur et a mesure de la progression de la lecture des
autres paragraphes. Cette prsentation permet de diminuer le volume de la partie thorique et
de bien sparer les objectifs, tout en jalonnant la progression
Sauf indication contraire, la ressource utilise pour la rdaction de cette partie est
[BUDINSKY et al. 2004].

eclipse_emf_gef_gmf_alpha1.0.0 - 01/2008

Jacques Barzic

16

Eclipse et EMF, GEF, GMF

2. Objectif de EMF

Illustration 1 - Organisation gnrale de EMF ([BUDINSKY et al. 2004])

Comme le montre l'Illustration ci-dessus, l'objectif gnral de EMF est de proposer un


outillage qui permet de passer du modle au code Java automatiquement. Pour cela le
framework s'articule autour d'un modle (le Core Model).
EMF va proposer plusieurs services :
1. la transformation des modles d'entres ( gauche sur l'Illustration 1), prsents
sous diverse formes, en Core Model,
2. la gestion de la persistance du Core Model,
3. la transformation du Core Model en code Java.
Les doubles flches symbolisent que les transformations inverses (ou les imports/exports )
sont aussi gres par EMF.
En cela, certains considrent que EMF est la fois :
un outil de r-unification de divers standards de modles (XMI, UML, code Java si du moins on considre ce dernier comme un modle),
un pont entre deux mondes du gnie logiciel (celui des gourous de la modlisation
et celui des partisans du code avant tout) en prenant une position mdiane et en
prenant le meilleur de chaque monde,...
... et tout cela pour un cot minimum. Le rve en quelque sorte !

3. Les formats d'entre standards


EMF peut de base grer en entre des modles prsents sous trois formats : UML, XMI et en
code Java Annot.
3.1. UML
Pour cette option, il existe trois possibilits.

L'dition directe conformment au mta-modle Ecore3


Il s'agit l, d'diter des modles graphiques UML conformment au mta-modle Ecore. Cela
sous-entent l'utilisation d'un outil de modlisation qui en soit capable4. Par voie de
3 Ecore et le mta-modle EMF pour le Core Modele (Voir 4 : Le (mta ?)mta-modle pivot : Ecore)
4 [BUDINSKY et al. 2004] cite en exemple Omondo(free) Eclipse UML.

Jacques Barzic

01/2008 - eclipse_emf_gef_gmf_alpha1.0.0

Eclipse et EMF, GEF, GMF

17

consquence, la transformation d'entre du modle n'est plus : on dispose du Core Model sous
le bon format.

L'importation de modles UML


Il s'agit d'importer, laide de la fonction ad hoc de EMF, un modle dans son format natif (qui
dpend de l'outil de modlisation utilis). Seul le format IBM Rational (.mdl) permet de
profiter de cet avantage. En effet, la gamme Rational et Eclipse sont des projets frres
donc gntiquement compatibles.

L'exportation de modles UML


C'est peu prs le mme principe que l'option d'importation, sauf que la conversion du format
natif en Ecore ne se fait pas avec EMF, mais avec l'outil de modlisation d'origine.

Discussion propos des trois options


La premire option ci-dessus prsente l'avantage d'tre simple et directe, de ne pas ncessiter
d'opration d'importation ou d'exportation. Aucune synchronisation entre l'outil de
modlisation natif et EMF n'est ncessaire.
Les deux autres options (quivalentes du point de vue de la conversion) offre l'avantage que
l'outil de modlisation peut servir autre chose que la simple modlisation. Par exemple, il
peut proposer sa propre fonction de gnration de code. Il donne aussi la possibilit de crer
son propre Core Model, de le transformer en Ecore pour l'utiliser ainsi par la suite.
3.2. XMI
Ce format de fichier, standard de l'OMG (Object Managment Group), est utilis
conjointement UML :
UML se charge de dcrire les contenus des modles,
XMI se charge de formater ces contenus pour permettre de leur assurer une
persistance standardise.
Malgrs quelques problmes de maturit (en phase de rsolution) qui demandent une attention
particulire quant l'association de diffrentes versions de UML avec les diffrentes versions
de XMI [BLANC 2005], ce format tend devenir le standard pour l'change de donnes (et
notamment des modles) entre les diffrents outils du gnie logiciel.
L'Illustation 1 ne fait pas directement rfrence ce format, mais il est permit de penser que
ce choix est pertinent pour les quelques raisons suivantes :
comme nous l'avons vu ci-dessus, il tend devenir un standard, du moins pour le
dveloppement orient objet (aussi le credo de Java),
il est le standard utilis par Ecore pour sa propre persistance,
tout cela concoure combler le foss qui existe entre les modles UML et les
fichiers de code Java.
3.3. Java Annot
Une des solutions tentantes pour modliser les classes, qui vont tre concrtises par une
application Java, est d'utiliser les interfaces Java :
elles n'implmentent pas les mthodes : on s'abstrait donc de cette implmentation,
les mthodes get/set peuvent tre utilises pour modliser les attributs,

eclipse_emf_gef_gmf_alpha1.0.0 - 01/2008

Jacques Barzic

18

Eclipse et EMF, GEF, GMF

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.

4. Le (mta ?)mta-modle pivot : Ecore


Nous avons vu que le Core Model, pivot des transformations possibles avec EMF, doit
pouvoir modliser les correspondances entre plusieurs types de modles. On dirait, pour tre
puriste, que ces diffrents modles sont conformes autant de mta-modles.
Le tableau ci-dessous synthtise les cas en prsence pour EMF.
Tableau II - Les espaces techniques de modlisation fdrer.

Modles

Mta-modles

Mta-mta-modles

Diagramme de classes (entre)

UML

MOF

Fichier XML (entre)

XMI

MOF

Ensemble d'interfaces Java (entre)

Java Annot

EBNF6

Programme Java (sortie)

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

Eclipse et EMF, GEF, GMF

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

Eclipse et EMF, GEF, GMF

importants : une interface Factory et


d'implmentation.

une interface Package ainsi que leurs classes

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

Eclipse et EMF, GEF, GMF

21

6. Autres services proposs par EMF


En plus d'tre un outil d'amlioration de la productivit, EMF a d'autres apports, tels que : la
notification de modification du modle, la gestion de la persistance par une srialisation XMI,
une API rflective pour la manipulation gnrique des objets EMF, l'EMF dynamique. La
combinaison de tous ces services (et d'autres non cits) fait qu'EMF offre un socle pour l'interoperabilit avec d'autres outils et applications bass sur EMF.
Nous ferons ici une simple vocation de ces possibilits. Pour en savoir plus, je renvoie le
lecteur aux diffrentes documentations (voir bibliographie, et ailleurs aussi).
6.1. La notification et les Adaptateurs
Lors de l'observation du code des classes d'implmentation gnres par EMF, on trouve dans
les accesseurs de type set le code ci-dessous (extrait de la classe AuteurImpl.java de l'exemple
du 8) :
public void setNom(String newNom) {
String oldNom = nom;
nom = newNom;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET,
BiblothequePackage.AUTEUR__NOM, oldNom, nom));
}

Le test conditionnel permet de vrifier si une notification de modification a t demande sur


l'lment (ici un attribut) et, le cas chant, de l'oprer.
Cette possibilit de EMF est il intressante : l'on va pouvoir transmettre automatiquement aux
objets dpendants une modification faite sur un attribut ou une rfrence.
Dans EMF les observateurs de notification (les listener Java) son appels Adaptaters
(Adaptateurs). En effet, en plus de leur statut d'observateur, il peuvent modifier les
comportements des objets auxquels ils sont attachs.
6.2. La gestion de la persistance
EMF fourni un mcanisme simple, et nanmoins puissant, pour la gestion de la persistance
des objets.
Comme nous l'avons vu, le standard gnrique utilis par EMF pour stocker les modles est
XMI. EMF propose aussi un mcanisme pour utiliser cette possibilit, dj implmente, pour
srialiser les objets des applications. Cela dgage l'utilisateur de la mise en place d'une
srialisation propre.
Le principe gnral consiste crer des entits Ressources (classe RessourceSetImpl) et d'y
placer les objets que l'on veut srialiser. Il sont ainsi disposition par la suite.
6.3. L'API rflective
Comme tous les lments des modles EMF hritent de la classe EObject10 du mta-mtamodle Ecore, l'utilisateur peut se servir de l'API rflective pour manipuler leurs instances.
Il pourra, par exemple, accder directement la valeur d'un attribut d'objet sans faire appel
10 Voir Annexe 1.

eclipse_emf_gef_gmf_alpha1.0.0 - 01/2008

Jacques Barzic

22

Eclipse et EMF, GEF, GMF

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.

7. EMF et les standards OMG


Des discussions ont cours propos des relations qu'entretient EMF avec les diffrents
standards de l'OMG que sont UML, XMI, MOF et MDA.
Ce paragraphe est de pure culture, en faire l'impasse ne nuira pas la comprhension et
l'exprimentation de EMF.
7.1. Pour UML
UML est un mta-modle trs utilis pour modliser les applications du monde objet. Les
diffrents diagrammes conformes UML sont prvus pour permettre autant de reprsentations
d'une mme application. Entre autres :
la vue utilisateur : les cas d'utilisation,
la vue dynamique : le diagramme de squence,
la vue architecturale : le diagramme de composants,
la vue statique de conception : le diagramme de classes.
C'est sur cette dernire qu'intervient actuellement EMF : c'est le diagramme de classes qui sera
utilis pour gnrer le code (Java en l'occurrence).
7.2. Pour MOF
MOF (Meta Object Facility) est le mta-mta-modle standard de l'OMG. Il est utilis pour
dfinir les mta-modles promus par cette organisation. Citons les plus caractristiques de
l'IDM : UML, QVT, CWM (Commun Warehouse Metamodel)11.
Ecore et MOF ont de nombreuses similitudes. Les diffrences se situent au niveau de la
couverture des diffrents concepts tels que ceux de classes, de types de donnes, d'attributs, de
relations entre paquetages et classes (voir 4 de cette partie).
L'on peut aussi noter que le projet EMF, enfant du projet Eclipse, et son retour d'exprience
ont une influence non ngligeable sur les travaux de standardisation de MOF et/ou UML.
11 CWM est utilis pour dfinir des modlisations d'entrepts de donnes et plus largement d'applications de BI
(Business Intelligence).

Jacques Barzic

01/2008 - eclipse_emf_gef_gmf_alpha1.0.0

Eclipse et EMF, GEF, GMF

23

7.3. Pour XMI


XMI est un standard cr par l'OMG bas sur XML. Ce dernier est lui mme un standard port
par le W3C (World Wide Web Consortium)12.
Ce standard a t cr pour faciliter la srialisation et les changes de donnes, dans le cadre
de la modlisation, entre les diffrents outils qui interviennent dans le cycle de vie d'une
application informatique.
Il s'appuie sur les mcanisme de DTD (Document Type Definition) ou de schma XML pour
dfinir les structurations de balises ncessaires et suffisantes la reprsentation des modles
MOF au format XML [BLANC 2005].
XMI peut tre utilis pour srialiser toute sortes de modles utiliss par EMF, il est aussi
utilis pour le mta-mta-modle Ecore lui-mme et comme forme canonique des fichiers
Ecore (.ecore).
7.4. Pour MDA
Model Driven Architecture est une dmarche d'ingnierie promue par l'OMG. Elle est base
sur la manipulation de diffrents modles reprsentant l'application cible (indpendant de
l'informatisation, indpendant de la plate-forme d'excution, spcifique cette plate-forme, de
la plate-forme elle mme, le code) et, par voie de consquence, sur des transformations de
modles (voir [BARZIC 2006] et sa bibliographie).
EMF est bien dans la philosophie de cette dmarche et peut s'intgrer dans l'outillage
ncessaire comme gnrateur de code partir de modles (ce qui est l'objectif premier de
EMF).

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

Eclipse et EMF, GEF, GMF

tape 1 : tlcharger les archives ncessaires.


Aller l'adresse http://www.eclipse.org/emf/downloads/.
Choisir la version dsire : au moment de la rdaction c'est la version 2.2.x car c'est celle qui
est cohrente avec le Eclipse Calisto (voir 1re partie).
J'ai install la version 2.2.1 (du 21 septembre 2006).
Archive tlcharge :
emf-sdo-xsd-SDK-2.2.1.zip,
Nlpacks-emf-sdo-SDK-2.2.1.zip pour les langues.

tape 2 : dcompression - installation


Dcompresser les deux archives dans le rpertoire d'installation de Eclipse et redmarrer
ventuellement le logiciel.
8.2. Disposer d'un modle d'entre

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

Illustration 2 - Le modle de l'exemple

Jacques Barzic

01/2008 - eclipse_emf_gef_gmf_alpha1.0.0

Eclipse et EMF, GEF, GMF

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.

2. Crer les interfaces en Java Annot

Clic droit sur le rpertoire src du projet.


Menu : Nouveau->Interface.
Renseigner la bote de dialogue : le nom du paquetage et le nom de l'interface. Laisser les
autres options aux valeurs par dfaut, puis Terminer.
Coder les autres interfaces conformment au modle (attention Categorie est code comme
une classe).

ce stade, le projet bibliotheque est contenu dans : bibliotheque_2_8.2 de l'archive


eclipse_emf_gef_gmf_sources.zip.
8.3. Gnrer le modle ecore
Suivre la procdure ci-dessous.
Clic droit sur le rpertoire model du projet (bibliotheque/model pour l'exercice).
Menu : Nouveau->Autres...
Choisir : Eclipse Modeling Framework (EMF)->Modle EMF puis Suivant.
Donner un nom au modle (le nom doit avoir l'extension .genmodel), puis Suivant.
La bote de dialogue suivante propose de choisir le type de modle d'entre (Java annot,
Modle de classe Rose, Modle Ecore, XML Schma). Nous choisissons Java annot.
L'arborescence dans l'Explorateur de packages d'Eclipse est complt de deux fichiers dans le
rpertoire model (le nom bibliotheque est celui de l'exemple) :
bibliotheque.genmodel : c'est un modle qui contient les paramtres de gnration
du code de l'application. Ce fichier est nomm le gnrateur (generator en anglais).
bibliotheque.ecore : c'est le mta-modle de l'application, utilis ici comme modle,
conforme au mta-mta-modle Ecore.
ce stade, le projet bibliotheque est contenu dans : bibliotheque_2_8.3 de l'archive
eclipse_emf_gef_gmf_sources.zip
8.4. Descrire le modles .genmodel
Lors de la gnration du modle ecore (paragraphe prcdent), un onglet
blibliotheque.genmodel est ouvert automatiquement dans la fentre principale de Eclipse (voir
l'arborescence Illustration 3)
Cela tombe bien car nous allons nous en servir pour la gnration du code.

eclipse_emf_gef_gmf_alpha1.0.0 - 01/2008

Jacques Barzic

26

Eclipse et EMF, GEF, GMF

Le modle a un enfant qui reprsente le


paquetage,
ce dernier a des enfants qui sont les
classes, les types de donnes,...
les enfants des classes sont les attributs,
les rfrences, les oprations.

En bas de l'espace de travail Eclipse, un


onglet Proprt est normalement affich.
Dans le cas contraire :
clic droit sur la racine du modle,
choisir Afficher la vue proprits.
Les proprits permettent de contrler
compltement ce qui sera gnr Dans la
plupart des cas, les proprits par dfaut des
diffrents lments n'ont pas tre changes.
L'tude dtailles de ces proprits dpasse
largement le cadre de cette tude.

Illustration 3 - Arborescence du modle Ecore de


notre projet Bibliothque .

8.5. Gnrer le code (vu ici comme un modle)

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.

Que c'est il pass ?


1. Les interfaces dj existantes (en Java Annot, c'tait notre modle de dpart cr 8.2)
sont compltes. Elles auraient t cres si le modle original avait t import de
Rationnal Rose.
2. Deux nouvelles interfaces ont t cres :
une pour le paquetage lui mme (BiblothequePackage.java pour notre projet),
une pour la factory (BiblothequeFactory.java pour notre projet).
3. Deux nouveaux paquetages ont t crs (ils ont le mme nom que l'original avec
respectivement les suffixes .impl et .util.) :
.impl : contient les classes qui implmentent les interfaces dfinies dans le modle
de gnration,
.util : contient des classes utilitaires.
4. Diffrents fichiers manifest sont gnrs : plugin.xml,...

Jacques Barzic

01/2008 - eclipse_emf_gef_gmf_alpha1.0.0

Eclipse et EMF, GEF, GMF

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

Eclipse et EMF, GEF, GMF

01/2008 - eclipse_emf_gef_gmf_alpha1.0.0

Eclipse et EMF, GEF, GMF

29

3me Partie : Graphical Editing Framework (GEF)

4me Partie : Graphical Modeling Framework (GMF)

5me Partie : EMF, GEF et GMF en action

Conclusion
EntreIndex
EntreGlossaire

eclipse_emf_gef_gmf_alpha1.0.0 - 01/2008

Jacques Barzic

30

Jacques Barzic

Eclipse et EMF, GEF, GMF

01/2008 - eclipse_emf_gef_gmf_alpha1.0.0

Eclipse et EMF, GEF, GMF

31

Annexe 1 : le mta-mta-modle Ecore (simplifi)


Les digrammes ci-dessous sont issus de [VANWORMHOUDT 2004].

Illustration 4 - Mta-mta-modle Ecore : hirarchie des classes

Illustration 5 - Mta-mta-modle Ecore : lments (1)

eclipse_emf_gef_gmf_alpha1.0.0 - 01/2008

Jacques Barzic

32

Eclipse et EMF, GEF, GMF

Illustration 6 - Mta-mta-modle Ecore : lments (2)

Illustration 7 - Mta-mta-modle Ecore : lments (3)

Illustration 8 - Mta-mta-modle Ecore : lments (4)

Jacques Barzic

01/2008 - eclipse_emf_gef_gmf_alpha1.0.0

Eclipse et EMF, GEF, GMF

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

Eclipse et EMF, GEF, GMF

01/2008 - eclipse_emf_gef_gmf_alpha1.0.0

Eclipse et EMF, GEF, GMF

35

Index
EntreIndex

20

eclipse_emf_gef_gmf_alpha1.0.0 - 01/2008

Jacques Barzic

36

Eclipse et EMF, GEF, GMF

Glossaire
EntreGlossaire

Jacques Barzic

20

01/2008 - eclipse_emf_gef_gmf_alpha1.0.0

RESUME

Mots cls : France, Bretagne,

SUMMARY

Key words: France, Britanny,

Vous aimerez peut-être aussi