Вы находитесь на странице: 1из 24

11/03/2009

www.lisyc.univ-brest.fr/pages_perso/babau/

Ingnierie Dirige par les Modles

Modlisation EMF
(Eclipse Modeling Tools)
Jean-Philippe Babau
Dpartement Informatique, UFR Sciences, UBO
Laboratoire LISyC

UBO

jean-philippe.babau@univ-brest.fr

11/03/2009

UBO

Modles et mta-modles

Introduction aux modles


Cest quoi un modle ?
Ca sert quoi de faire des modles ?
Comment on fait des modles ?

Modlisation UML
Diagrammes
cas dutilisation, classe, squence, comportement, dploiement

Outils de modlisation et de mta-modlisation


Editeurs de modles (EMF, GMF)
Expression et valuation de contraintes (OCL)
Transformation de modles (M2M, M2T)

Mthodes, processus et gestion de projet


jean-philippe.babau@univ-brest.fr

UBO

Les mta-mta-modles

Outils pour la dfinition de


Mta-modles
Langages spcifiques du domaine

Plusieurs solutions
MOF
Standardis par lOMG

ECore
Outill sous Eclipse-EMT (EMF, GMF, OCL, ATL, Kermeta, )

EMOF (Essential MOF)


Version rduite du MOF
Proche de ECore

XMI
Notions de balises,
Adapt aux fichiers textuels

jean-philippe.babau@univ-brest.fr

11/03/2009

UBO

Eclipse Modeling Tools


Mta-modlisation et dition de modles avec EMF

Bas sur ECore

Installation sous Eclipse

http://www.eclipse.org/downloads -> Eclipse Modeling Tools


Version Ganymede

Prrequis : Java 5 JRE

Vrifications

Intgration de contraintes OCL

Accs la modlisation graphique

GEF et GMF

Transformation et analyse de modles

M2M : ATL, Kermeta, java


M2T : Acceleo, java

jean-philippe.babau@univ-brest.fr

UBO

Ecore

Ecore mta-modle
Dfinition des outils de modlisation pour construire des mta-modles

Modlisation oriente objet


Les concepts de base sont des EClass
Les caractristiques lies aux concepts de base sont des EAttribute
Les oprations lies aux concepts de base sont des EOperation
Les relations entre concepts de base sont des EReference

Modlisation structure
Elments de structuration avec les EPackage
Elements de commentaires avec les EAnnotation

jean-philippe.babau@univ-brest.fr

11/03/2009

UBO

ECore meta-model
Racine : tout est EObject
La structure
Les caractristiques des concepts

Les commentaires

Les concepts

Les liens entre concepts

Les types de base

jean-philippe.babau@univ-brest.fr

UBO

Modlisation en EMF

Mta-mta modle : ecore


ecore.ecore

Mta-modle ou langage abstrait


robotNXT.ecore
Vue graphique : robotNXT.ecorediag

Reprsentations ou langages concrets


Fichier XML : monModele.robotNXT
Vue graphique (GMF)

<?xml version="1.0" encoding="ASCII"?>


<robot:Robot xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:robot="http://robot/1.0" xsi:schemaLocation="http://robot/1.0
robot.ecore">
<sensesThrew Position="1" Role="touch"/>
<sensesThrew Position="2" Role="light"/>
</robot:Robot>
jean-philippe.babau@univ-brest.fr

11/03/2009

UBO

Utilisations des modles


Analyse de modles et transformations de modles

Vrifications
<?xml version="1.0" encoding="ASCII"?>
Raffinement
<robot:Robot xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"
Gnration de code xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

// generated program

xmlns:robot="http://robot/1.0" xsi:schemaLocation="http://robot/1.0
robot.ecore">
<sensesThrew Position="1" Role="touch"/>
<sensesThrew Position="2" Role="light"/>
</robot:Robot>

/* touch sensor on S1 port */


#define TouchSensorNumber S1
/* light sensor on S2 port */
#define LightSensorNumber S2
task main ()
{
/* touch sensor configuration */
SetSensorTouch(TouchSensorNumber);
/* light sensor configuration */
SetSensorLight(LightSensorNumber);
}

// model analysis
2 sensors
// verification status
No more 1 light sensor : ok

jean-philippe.babau@univ-brest.fr

UBO

EMF tool

Crer un projet

File/New/Other/Eclipse Modeling Framework/Empty EMF project


Nom du projet
Emplacement des rpertoires lis au projet
Rpertoire des projets par dfaut dEclipse
dfinir au lancement dEclipse

Cration des rpertoires et fichiers


META-INF
MANIFEST.MF
model
Rpertoire des meta-modles et modles
src
Rpertoire pour le code Java

Nommage
Pas despace, de lettre accentue dans les noms de fichier et de rpertoire
Problme lors de lexport
jean-philippe.babau@univ-brest.fr

10

11/03/2009

UBO

EMF tool

Crer un mtamodle ecore


Modle textuel

Fichier filename.ecore
Slectionner model puis : New/Other/Eclipse Modeling Framework/Ecore Model
Cration du nom de fichier : modelName.ecore
Cration dun EPackage par dfaut
EPackage root
Pour chaque EPackage
Name modelName
Ns Prefix fr.ubo.mde.babau.modelName
Ns URI http://fr.ubo.mde.babau.modelName

Cration du mtamodle

Ajout dentits
Slection de lentit racine puis New Child

Remplissage des proprits

Champ properties
Window / Show View / other -> General / Properties

jean-philippe.babau@univ-brest.fr

11

UBO

EMF tool

Gestion de Vues graphique du mtamodle


Cration d un modle graphique
Fichier modelName.ecorediag
Slection modelName.ecore puis Initialize Ecore Diagram File (attention)
Cration de modelName.ecorediag
diteur graphique diffrent (non conseill)
Initialize ecore_diagram Diagram File

Cest une vue du mta-modle


Certains lments du modle peuvent ne pas tre dans la vue
ATTENTION : On peut supprimer de la vue et non du modle
On peut avoir plusieurs rfrences graphiques dun mme lment du
modle

Sauvegarde dans un fichier au format graphique


File / Save As Image File
jean-philippe.babau@univ-brest.fr

12

11/03/2009

UBO

EMF tool

Mise jour suite modification du mta-modle textuel


Suppression dlments : ok
Ajout d lments : mise jour de la vue graphique la main
Prendre les lments cr de la fentre outline et les insrer dans la vue graphique

Changement de nom dans le modle textuel


Suppression de lentit dans lancien modle
Absent de la vue !

Modification du modle graphique


intgr dans le modle textuel

Principes ddition du mta-modle


Un seul diteur ouvert la fois
Travail sur le fichier modelName.ecore ou le fichier modelName.diagecore
Un seul diteur pour les modifications
Privilgier le textuel pour ldition et le graphique pour la documentation
jean-philippe.babau@univ-brest.fr

13

UBO

EClass

Modlise un concept de base


Modlisation selon le paradigme objet des entits
Caractrise par des EAttribute, des EReference et des EOperations

jean-philippe.babau@univ-brest.fr

14

11/03/2009

UBO

EClass

EClass
Une EClass par concept manipul
Caractris par Name et des EAttribute, des EReference et des EOperations

Une EClass root


La premire du EPackage

Peut hriter
Dun concept ECore
Dun autre concept dfini au niveau du mta-modle
ESuper Types

Ajout dune EClass


Slection dun EPackage puis New Child EClass

Concepts abstraits
Non manipuls ldition
EClass avec lattribut Abstract true
jean-philippe.babau@univ-brest.fr

15

UBO

EReference

Lien entre concepts


Slection de la EClass, puis New Child EReference

16

jean-philippe.babau@univ-brest.fr

11/03/2009

UBO

EReference
EReference pour une association contient

Ajout dune EReference avec comme attribut Containment true

Toute EClass concrte de concepts manipulables au niveau modle


doit tre contenue dans une EClass

Concept abstraits

A
A

Peuvent ne pas tre contenu

OK

OK

N
N

B
NOK
C

A
C

B
OK

EClass abstraite

jean-philippe.babau@univ-brest.fr

17

UBO

EReference

Arit et nommage des associations


LowerBound

contientDesB

suprieur ou gal 0

0..*

UpperBound
EstLieaB

Suprieur ou gal 0
-1 pour n
Reprsent graphiquement par *

0..1

Reprsentation la UML

estDansA

Aide la navigation au niveau du modle

A
estDansA

Si A possde une EReference vers B


Ajout dune EReference de B vers A
Property EOpposite true
Une seule ligne dans la reprsentation graphique

contientDesB 0..*

B
EstLieaB
EstLieaC

0..1
1

C
jean-philippe.babau@univ-brest.fr

18

11/03/2009

UBO

EAttribute

Caractristiques du concept

Slection de la EClass, puis New Child EAttribute

Type simple uniquement

Valeur par dfaut

EType est un EDataType

Initialisation de lattribut
Default Value Literal de type String

Arit de 0 n (-1)
LowerBound
UpperBound

jean-philippe.babau@univ-brest.fr

UBO

19

Proprits

Proprits des EAttribute et EReference


lments lis une EClass
Unsettable (par dfaut false)
Si true, llment peut avoir la valeur unset
boolean : si Unsettable false {true, false}, si Unsettable true {true, false, unset}

Unique (par dfaut true)


deux lments ne peuvent tre identiques (Concerne les arits > 1 )

Changeable (par dfaut true)


Llment peut tre modifi (gnration dune mthode SetElement() )
Si false : modification de llment via lditeur, ou suite une valuation du modle
(lment Derived, rfrence EOpposite)

Volatile (par dfaut false)


Pas de sauvegarde, ni de gnration de mthode daccs cet lment

Derived (par dfaut false)


Llment est obtenu par valuation dautres lments du modle (sur-spcification)

Transient (par dfaut false)


Llment nest pas persistant et nest donc pas sauvegard
jean-philippe.babau@univ-brest.fr

20

10

11/03/2009

UBO

EDataType

Types primitifs

EBoolean, EChar, EByte


EShort, EInt, ELong, EFloat, EDouble
EString, EDAte
EtypeObject ( EBooleanObject, ELongObject, )

Types structurs

EByteArray
EMAp<K,V>
EEList<E>
ETreeIterator<E>

jean-philippe.babau@univ-brest.fr

21

UBO

EEnum

Sorte de EDataType

Liste de valeurs prdfinies


Dfinie dans un Epackage
Slection de la EClass, puis New Child EEnum

Enumration de liste de valeurs prdfinies


Slection de lEEnum, puis New Child EEnumLiteral
Puis, pour chaque valeur
Intitul Literal
Nom Name
Numro Value

Attention la premire valeur de la liste (valeur par dfaut) nest pas dite
dans le fichier xml li au modle
La srialisation dun modle (le fichier xml) est une vue du modle
Le fichier ne peut tre interprt quavec le mta-modle
jean-philippe.babau@univ-brest.fr

22

11

11/03/2009

UBO

EEnum

A viter pour sparer deux concepts

OK
NOK

jean-philippe.babau@univ-brest.fr

23

UBO

Caractristiques drives

Evaluable partir dautres caractristiques


EAttribute ou EReference

Changeable false : non modifiable


Derived true
Transient true : non persistant
Volatile true : non mmoris

Formule de calcul en OCL (cf. cours OCL)

jean-philippe.babau@univ-brest.fr

24

12

11/03/2009

UBO

EOperation

Oprations lies un concept


Nom Name
Type de retour EType
Paramtres
Slection de la EOperation, puis New Child EParameter
Nom Name
Type EType

Contraintes exprimables en OCL sur les oprations


Pr/post
Comportement body

Utilisation
Modlisation oriente services
Smantique oprationnelle du modle

jean-philippe.babau@univ-brest.fr

25

UBO

EPackage

Entit de structuration

jean-philippe.babau@univ-brest.fr

26

13

11/03/2009

UBO

EMF tool : EPackage

EPackage
Utile la structuration du mta-modle
Visibilit complte entre EClass au sein du projet
Respect dun pattern EPackage/Eclass pour lditeur gnr
Structure : arbre de EPackage
Dans chaque EPackage nud de larbre: placer une EClass root qui contient des
EClass des EPackage fils
Et donc une EClass root dans le EPackage root

Mise jour de MANIFEST.MF


Ajout dun package
Slectionner plugin.xml , puis Overview/Organize Manifest Wizard
Ensure That all packages
Next/Finish

jean-philippe.babau@univ-brest.fr

UBO

27

Commentaires du mta-modle

Un mta-modle reste un fichier ECore


Difficile interprter par une simple lecture
Doit tre comment en langage naturel

Procdure respecter (champs, casse, )

Slection de lentit commenter


Ajout dune EAnnotation
New Child / EAnnotation
References
Source http://www.eclipse.org/emf/2002/GenModel
Slection de la EAnnotation
New Child / Details Entry
Key documentation
Value commentaire de lentit

jean-philippe.babau@univ-brest.fr

28

14

11/03/2009

UBO

EMOF

Diagramme issu de la norme OMG 2.0, January 2006

jean-philippe.babau@univ-brest.fr

UBO

29

EMOF

Diagrammes issu de la norme OMG 2.0, January 2006

jean-philippe.babau@univ-brest.fr

30

15

11/03/2009

UBO

EMF tool : mise au point

Validation
faire toujours avant la gnration de lditeur
Slection dans lditeur du EPackage root
Sample Ecore Editor/Validate

Mise au point par cration rapide de modles


Slection de la EClass root
Click droit et Create Dynamic Instance

Cration dun modle


Cration dun fichier filename.xmi
Ajout dun lment
Ouverture du fichier (dj ouvert par dfaut)
Slection de la EClass root cre par dfaut
RootEClassName
Ajout dlments
New Child

jean-philippe.babau@univ-brest.fr

31

UBO

EMF tool : gnration de code

Principes
Outils de manipulation de modles via des classes Java
Constructeurs, setter et getter pour les lments
Rpertoire /src

Editeur de modles intgr Eclipse


Cration de projets modelName.edit modelName.editor modelName.tests

Prparation de la gnration de code

Slectionner model puis : New/Other/Eclipse Modeling Framework/EMF Model


Choix dun nom de fichier : filename.genmodel
Slection du fichier filename.ecore puis load

Gnration de code

Slection du EPackage root


Generator/Generate Model code
Generator/Generate Edit code
Generator/Generate Editor code
Generator/Generate Test code
Generator/Generate All

/src
projet modelName.edit
projet modelName.editor
projet modelName.tests
jean-philippe.babau@univ-brest.fr

32

16

11/03/2009

UBO

EMF tool : lditeur gnr

Test de lditeur Eclipse de modles


Slectionner le projet
Run As / Eclipse Application
Relance une nouvelle instance dEclipse

Editeur
Crer un projet vide
File/New/Project ->General->Project

Crer un modle dans ce projet


Slectionner le projet cr
File/New/Other -> Example EMF Model Creation Wizards-> modelName Model
FileName test. modelName
On peut crer un modle pour tout EPackage
viter : un EPackage reste un lment de structuration

jean-philippe.babau@univ-brest.fr

33

UBO

EMF tool : utilitaires ddition

Rutilisation de mta-modles existants


Copier/coller
Au sein de Project Explorer : copy / paste

Crer un modle en lien avec un autre modle


Suivi des modifications
partir dun fichier .ecore existant
New /File (Advanced : link to file in the file system)
partir dun modle
New /Ecore Diagram Create from an existing model

Copier/coller de parties de modles


Au sein dun modle (ou mta-modle)
Slection de lentit copier, puis copy
Slection de lentit pouvant englober une copie, puis paste

Entres modles (ou mta-modles)


Sample Ecore Editor / Load Resource
Browse File system
Slection du fichier contenant le modle o sont les entits copier
puis idem prcdemment : copy/ paste

jean-philippe.babau@univ-brest.fr

34

17

11/03/2009

UBO

Export de Plugin

Intgration dans les plug-in dEclipse


Pour lactivation des plug-in au dmarrage dEclipse
diteur intgr dans Eclipse (sans

Procdure dexport
File / Export
Plug-In Development / Deployable plug-ins and fragments
Slection des plugins dployer
Le projet EMF et les projets gnrs
modelName, modelName.edit, modelName.editor, modelName.tests
Directory
Rpertoire dinstallation dEclipse (celui qui contient le rpertoire plugins)
Avoir les droits en criture dans le rpertoire plugins

Relancer Eclipse
Pour charger les plug-in

jean-philippe.babau@univ-brest.fr

35

UBO

EMF tool : erreurs de modlisation

Une EClass nest pas contenue dans une autre EClass


Sauf la EClass root

Utilisation du mme nom pour le EPackage root et la EClass root

Utilisation dun mot cl Java pour un EObject


Par exemple case
Pas de cases

jean-philippe.babau@univ-brest.fr

36

18

11/03/2009

UBO

EMF tool : problmes

Modifications
Ce qui marche souvent
Lajout de classes, de mthodes ou d'attributs

Ce qui ne marche pas en gnral


La modification de quelque chose d'existant (modifier le type d'un attribut par
exemple)
La suppression de classes ou de mthodes ou d'attributs

Mise jour et problmes


supprimer les fichiers plugin.xml, MANIFEST.MF
Supprimer le rpertoire src
Supprimer les rpertoires .edit, .editor, .tests
Y compris sur le disque

filename.genmodel puis click droit et Reload


Et puis re-gnrer tout

jean-philippe.babau@univ-brest.fr

UBO

Principes des modifications

Project Data

Project Data

Save

file

37

Delete

Eclipse
Meta-data

file

Option delete project content on disk


- conservation des fichiers

Eclipse
Meta-data

Project Data

Delete

file

Suppression de EPackage
- conservation des liens

Eclipse
Meta-data
jean-philippe.babau@univ-brest.fr

38

19

11/03/2009

UBO

Principes des modifications

Project Data
Project Data
Save

file

Modify

Eclipse
Meta-data
file

Eclipse
Meta-data

Export dun nouveau plugin avec un nom de mta-modle existant


- conservation de lancien URI !
- attention la rcupration de mta-modles existants

jean-philippe.babau@univ-brest.fr

39

UBO

EMF tool : problmes

EMF sauvegardes des mta-donnes sur les projets


Pas toujours supprims lors de la suppression/modification dun projet
Problmes de mise jour

Suppression des mtadonnes


supprimer le rpertoire .metadata dans le rpertoire des projets (workspace)

R-importer tous les projets


File / Import -> General / Existing Projects into Workspace

Autres points
Problme despace disque insuffisant : pas de message dalerte
Faites le mnage

jean-philippe.babau@univ-brest.fr

40

20

11/03/2009

UBO

Utilisation dEMF : modle du domaine

Phase danalyse du mtier


Identifier et organiser (structurer) les concepts
Identifier les contraintes (OCL)

jean-philippe.babau@univ-brest.fr

UBO

41

Utilisation dEMF : outillage de langages

UML 2
Mta-modle dUML2 : UML.ecore
diteur UML2 Papyrus bas sur EMF (et aussi GEF/GMF)
Exemple : les commentaires UML2 sont dfinis par le concept Comment

A comment is a textual annotation that can be attached to a set of elements


Generalizations : Element (from Kernel)
Description A comment gives the ability to attach various remarks to elements. A comment carries no semantic
force, but may contain information that is useful to a modeler. A comment can be owned by any element.

Attributes multiplicitybody : String [0..1]Specifies a string that is the comment.


Associations annotatedElement: Element[*] References the Element(s) being commented.
Semantics A Comment adds no semantics to the annotated elements, but may represent information
useful to the reader of the model.
Notation A Comment is shown as a rectangle with the upper right corner bent
Presentation Options The dashed line connecting the note to the annotated element(s) may be suppressed if it is
clear from the context, or not important in this diagram.

jean-philippe.babau@univ-brest.fr

42

21

11/03/2009

UBO

Hritage dElement

UML2 Comment en ecore

EAttribute

EClass

EAnnotation
EReference
Properties de lentit slectionne, ici Comment

jean-philippe.babau@univ-brest.fr

UBO

43

UML2 Comment en ecore

Properties de lentit slectionne, ici body

Type de lEAttribute
Arit minimale
Nom de lEAttribute

Arit maximale
jean-philippe.babau@univ-brest.fr

44

22

11/03/2009

UBO

Type de rfrence

Type des lments


Arit rfrencs
minimale
Nom de la EReference

Arit maximale
jean-philippe.babau@univ-brest.fr

45

UBO

EMF exemple

Dmo

jean-philippe.babau@univ-brest.fr

46

23

11/03/2009

UBO

Rfrences utilises pour faire ce cours

OMG
http://www.omg.org/
Eclipse
http://www.eclipse.org/
Cours de Cdric Dumoulin
http://www2.lifl.fr/~dumoulin/enseign/

jean-philippe.babau@univ-brest.fr

47

24

Вам также может понравиться