Eclipse Modeling Framework - Génie Logiciel SI5

Transcription

Eclipse Modeling Framework - Génie Logiciel SI5
Découverte EMF
Un environnement
Alban Gaignard
Eclipse Modeling Framework
Génie Logiciel SI5
Alban Gaignard
[email protected]
Alban Gaignard
Survol
Survol
Ce qu’est EMF
Pourquoi EMF
Outils proposés
Standardisation
Cycles de
développement
Méta-modèle
Ecore
Origine
Eléments d’Ecore
Modeling framework
Un environnement intégré, dédié à la modélisation :
I
Définition de modèles
I
Création d’instances pour un modèle donné
(réification)
Création du
modèle Ecore
Laboratoire I3S (UMR 6070) - Equipe Rainbow
Importation
Edition
Modèle de génération
Code généré
Un environnement de développement avec génération
automatique de patrons de classes à partir de modèles.
EMF à l’exécution
Persistance
Réflexivité
Dynamicité
Notification
Validation
Méta-modèle
Ecore
Origine
Eléments d’Ecore
Importation
Edition
Génération EMF
Modèle de génération
Code généré
EMF à l’exécution
Public ciblé
A l’origine destiné aux développeurs Java pour faciliter la
construction d’applications à base de modèles structurés.
Résumé
Ce qu’est EMF
Pourquoi EMF
Outils proposés
Standardisation
Cycles de
développement
Création du
modèle Ecore
Code generation facility
Génération EMF
12 novembre 2007
Découverte EMF
Persistance
Réflexivité
Dynamicité
Notification
Validation
Résumé
1 / 39
Pour définir des modèles
Découverte EMF
3 / 39
“Should I model or should I program ?”
Alban Gaignard
Alban Gaignard
Survol
Orientés données
I
I
Spécification des données d’une application sous forme
de modèle conceptuel “objet”.
Manipulation des packages, classes, opérations,
attributs, et relations entre ces entités.
Survol
Ce qu’est EMF
Pourquoi EMF
Outils proposés
Standardisation
Cycles de
développement
Méta-modèle
Ecore
Origine
Eléments d’Ecore
Création du
modèle Ecore
Importation
Edition
Orientés prototypage
Lors de l’ébauche d’une application, à l’aide de diagrammes
de classes “UML”, EMF est vu comme un atelier de génie
logiciel (CASE Tool).
Découverte EMF
Génération EMF
Modèle de génération
Code généré
EMF à l’exécution
Persistance
Réflexivité
Dynamicité
Notification
Validation
Compromis entre modélisation et programmation.
I
Sous ensemble d’UML.
I
Passage automatique modèles vers code Java. (et
réciproquement via annotations).
I
Utiliser des modèles “opérationnels” dans le processus
de développement logiciel.
Ce qu’est EMF
Pourquoi EMF
Outils proposés
Standardisation
Cycles de
développement
Méta-modèle
Ecore
Origine
Eléments d’Ecore
Création du
modèle Ecore
Importation
Edition
Génération EMF
Modèle de génération
Code généré
EMF à l’exécution
Persistance
Réflexivité
Dynamicité
Notification
Validation
Résumé
Résumé
4 / 39
5 / 39
EMF peut être vu comme un pont entre plusieurs mondes
“(très) proches”.
Découverte EMF
Découverte EMF
Alban Gaignard
Alban Gaignard
Survol
System
- name : String
+ isValid() : Boolean
1..*
Component
- name : String
+ run()
Survol
Ce qu’est EMF
Pourquoi EMF
Outils proposés
Standardisation
Cycles de
développement
apparents
1..*
Port
1..*
- name : String
inners
- exposed : Boolean
Méta-modèle
Ecore
XML
UML
Origine
Eléments d’Ecore
Création du
modèle Ecore
EMF
Importation
Edition
Un environnement “Low-cost” :
I
Libre et Open Source
I
Pas d’éditeur graphique
I
Intégré à Eclipse
I
Ancienneté : utilisation industrielle depuis 2002
Génération EMF
Java
Ce qu’est EMF
Pourquoi EMF
Outils proposés
Standardisation
Cycles de
développement
Méta-modèle
Ecore
Origine
Eléments d’Ecore
Création du
modèle Ecore
Importation
Edition
Génération EMF
Modèle de génération
Code généré
Modèle de génération
Code généré
EMF à l’exécution
EMF à l’exécution
Persistance
Réflexivité
Dynamicité
Notification
Validation
Persistance
Réflexivité
Dynamicité
Notification
Validation
Résumé
Résumé
Fig.: Unification entre Uml, les technologies XML, et Java
6 / 39
Un ensemble d’outils pour :
Découverte EMF
7 / 39
Quelques acronymes ...
Alban Gaignard
Spécifier des modèles
I
Gérer l’inter-opérabilité entre interfaces Java, UML et
schémas XML (i.e. conversion de modèles)
I
Générer du code correcte, efficace, adaptable
I
I
Générer un éditeur d’instances de modèles
Faciliter le développement d’applications utilisant des
modèles :
I
I
I
I
réflexivité
dynamicité
persistance
notification
Tous ces outils sont intégrés à la plate-forme Eclipse (sous
la forme de Plugins).
Alban Gaignard
OMG
Survol
I
Ce qu’est EMF
Pourquoi EMF
Outils proposés
Standardisation
Cycles de
développement
Méta-modèle
Ecore
Origine
Eléments d’Ecore
Création du
modèle Ecore
Importation
Edition
Génération EMF
Modèle de génération
Code généré
EMF à l’exécution
Persistance
Réflexivité
Dynamicité
Notification
Validation
Résumé
8 / 39
Découverte EMF
Object Management Group, association nord-américaine
pour la standardisation et la promotion du paradigme
“Objet”.
UML
Unified Modeling Language, très populaire pour les
spécifications et la conception de logiciels. Vues multiples sur
un système. EMF est une restriction à la vue statique
“diagrammes de classes”.
MDA
démarche de réalisation de réalisation de logiciels proposée
par l’OMG. Une partie de l’Ingénierie Dirigée par les Modèles
(MDE). Raffinements successifs de modèles pour passer de
modèles indépendants aux plate-formes (PIM) vers des
modèles spécifiques (PSM).
Survol
Ce qu’est EMF
Pourquoi EMF
Outils proposés
Standardisation
Cycles de
développement
Méta-modèle
Ecore
Origine
Eléments d’Ecore
Création du
modèle Ecore
Importation
Edition
Génération EMF
Modèle de génération
Code généré
EMF à l’exécution
Persistance
Réflexivité
Dynamicité
Notification
Validation
Résumé
9 / 39
Découverte EMF
Découverte EMF
Cycles de développement
Alban Gaignard
MOF
Meta Object Facility, langage de méta-modélisation qui
s’auto-définit.
M3
M2
M1
MOF (E-MOF)
Méta-Modèle Ecore
Modèle EMF
Ecore
Méta-Modèle Ecore
Ecore est un (méta-)méta-modèle très proche
d’Essential-MOF (sous-ensemble dérivé de MOF avec
quelques différences de nommage)
XMI
Alban Gaignard
Survol
Survol
Ce qu’est EMF
Pourquoi EMF
Outils proposés
Standardisation
Cycles de
développement
Méta-modèle
Ecore
Méta-Modèle
Ecore
Import
Création
M2
Modélisation
(UML, Java, XML Schemas)
Méta-modèle
Ecore
JMerge
Modèle de
génération
Origine
Eléments d’Ecore
M1
JET
Importation
Edition
JET
Génération EMF
Persistance
Réflexivité
Dynamicité
Notification
Validation
Création du
modèle Ecore
Importation
Edition
Génération EMF
Editeur d'instances
Modèle de génération
Code généré
Modèle de génération
Code généré
M0
EMF à l’exécution
Xml Metadata Interchange, pour la représentation de
modèles objets en XML. Côté EMF, sérialisation de
méta-modèles ECore en XMI.
Origine
Eléments d’Ecore
Code Java Généré
Création du
modèle Ecore
Ce qu’est EMF
Pourquoi EMF
Outils proposés
Standardisation
Cycles de
développement
Fig.: Itération sur un cycle de développement
Résumé
EMF à l’exécution
Persistance
Réflexivité
Dynamicité
Notification
Validation
Résumé
11 / 39
10 / 39
Origine d’Ecore
Découverte EMF
Découverte EMF
Eléments du méta-modèle 1/3
Alban Gaignard
Basé sur MOF 2.0 et presque équivalent à Essential-MOF.
Similarités
I
I
Concepts communs : package, classes, opérations,
attributs, références, annotations, datatypes . . .
Sérialisation XMI
Différences
I
I
Pas d’associations au sens UML (pas de notions de
navigabilité, rôle, directionnalité)
Pas de contraintes
I
Ajout du concept Factory
I
Pas d’héritage entre packages
Alban Gaignard
Survol
Survol
EObject
Ce qu’est EMF
Pourquoi EMF
Outils proposés
Standardisation
Cycles de
développement
Ce qu’est EMF
Pourquoi EMF
Outils proposés
Standardisation
Cycles de
développement
EModelElement
Méta-modèle
Ecore
EFactory
Méta-modèle
Ecore
EAnnotation
EModelElement
Origine
Eléments d’Ecore
Création du
modèle Ecore
Importation
Edition
Origine
Eléments d’Ecore
EPackage
EClassifier
EEnumLiteral
Création du
modèle Ecore
ETypedElement
Importation
Edition
Génération EMF
Modèle de génération
Code généré
Génération EMF
EClass
EDataType
EOperation
EStructuralFeature
EParameter
EMF à l’exécution
Persistance
Réflexivité
Dynamicité
Notification
Validation
EMF à l’exécution
EEnum
Résumé
EAttribute
EReference
L’éditeur intégré à Eclipse permet de réifier les éléments de
cet arbre.
13 / 39
Modèle de génération
Code généré
Persistance
Réflexivité
Dynamicité
Notification
Validation
Résumé
14 / 39
Découverte EMF
Eléments du méta-modèle 2/3
Découverte EMF
Eléments du méta-modèle 3/3
Alban Gaignard
1
eReferences
0..*
eReferenceType
EAttribute
- name :String
EDataType
- name :String
eAttributeType
1
EReference
- name :String
- containment : boolean
- lowerBound : int
- upperBound : int
0..1
eOpposite
Survol
Survol
Ce qu’est EMF
Pourquoi EMF
Outils proposés
Standardisation
Cycles de
développement
Méta-modèle
Ecore
components
EClass
name = ?
Origine
Eléments d’Ecore
Création du
modèle Ecore
EAttribute
name = ?
System
- name : String
+ isValid() : Boolean
EPackage
EOperation
Modèle de génération
Code généré
1..*
Component
- name : String
+ run()
1..*
Link
- name : String
apparents
1..*
Port <<abstract>>
1..*
- name : String
inners
- exposed : Boolean
EReference
containment = ?
eOpposite = ?
Persistance
Réflexivité
Dynamicité
Notification
Validation
InputPort
Création du
modèle Ecore
Importation
Edition
Génération EMF
Modèle de génération
Code généré
Type
1
- name : String
EMF à l’exécution
Quelques propriétés intéressantes pour les références :
I Cardinalité : attributs lowerBound, upperBound.
I Contenance : relations “tout-partie” (lié au
comportements de l’éditeur et de la sérialisation).
I Opposition : associations bi-directionnelles.
Méta-modèle
Ecore
Origine
Eléments d’Ecore
Importation
Edition
Génération EMF
Fig.: Extrait simplifié du méta-modèle Ecore
Ce qu’est EMF
Pourquoi EMF
Outils proposés
Standardisation
Cycles de
développement
EClass
abstract = ?
interface = ?
end
0..*
EClass
- name : String
- abstract : boolean
- interface : boolean
eAttributes
0..*
start
eSuperType
Alban Gaignard
Illustration sur un méta-modèle support :
OutputPort
Résumé
EMF à l’exécution
Persistance
Réflexivité
Dynamicité
Notification
Validation
Résumé
15 / 39
Ecore : importation de modèles 1/2
Découverte EMF
16 / 39
Ecore : importation de modèles 2/2
Alban Gaignard
Découverte EMF
Alban Gaignard
Eclipse propose des assistants d’importation pour :
Survol
UML
I
Rationnal Rose : fichiers .mdl
I
Eclipse UML2 : fichiers .uml2
XML
XML Schema moins expressif que Ecore.
Conversion des schémas XML en méta-modèles Ecore.
Mapping simple et direct :
I
Un schema → EPackage
I
Un type complexe → EClass
Survol
Ce qu’est EMF
Pourquoi EMF
Outils proposés
Standardisation
Cycles de
développement
Méta-modèle
Ecore
Java
Création d’un méta-modèle Ecore à partir d’un modèle
constitué d’interfaces Java annotées :
Hiérarchie des packages Java contenant les interfaces
→ hiérarchie de EPackage.
Méta-modèle
Ecore
I
Interface Java taguée @model → EClass.
Création du
modèle Ecore
I
Les EReference, EAttributes sont générés pour
chaque get*() d’une interface.
I
Origine
Eléments d’Ecore
Création du
modèle Ecore
Importation
Edition
Génération EMF
Modèle de génération
Code généré
I
EMF à l’exécution
I
Un type simple → EDataType
I
Un attribut → EAttribut si son type correspondant
est EDataType, EReference si EClass
Persistance
Réflexivité
Dynamicité
Notification
Validation
I
Résumé
Ce qu’est EMF
Pourquoi EMF
Outils proposés
Standardisation
Cycles de
développement
Les EOperation sont générés pour n’importe qu’elle
autre méthode.
Ajout de propriétés @model [<property>=‘value’]
(abstractness, interface, multiplicity . . . )
Origine
Eléments d’Ecore
Importation
Edition
Génération EMF
Modèle de génération
Code généré
EMF à l’exécution
Persistance
Réflexivité
Dynamicité
Notification
Validation
Résumé
18 / 39
19 / 39
Ecore : édition de (méta-)modèles 1/2
Découverte EMF
ECore : édition de (méta-)modèles 2/2
Alban Gaignard
Editeur intégré
Créer des éléments sous une forme arborescente :
I
I
Menu contextuel pour la création de “fils/frères” d’une
entité (packages, classes, . . . ).
Vue properties pour l’édition des propriétés d’un
élément (abstractness . . . ).
Editeur graphique externe
Alban Gaignard
Survol
Survol
Ce qu’est EMF
Pourquoi EMF
Outils proposés
Standardisation
Cycles de
développement
Ce qu’est EMF
Pourquoi EMF
Outils proposés
Standardisation
Cycles de
développement
Méta-modèle
Ecore
Méta-modèle
Ecore
Origine
Eléments d’Ecore
Origine
Eléments d’Ecore
Création du
modèle Ecore
Création du
modèle Ecore
Importation
Edition
Importation
Edition
Génération EMF
I
Omondo UML
I
TopCaseD
I
Rationnal Rose
I
ArgoUML, Poseidon (car sérialisation XMI)
I
...
Découverte EMF
Génération EMF
Modèle de génération
Code généré
Modèle de génération
Code généré
EMF à l’exécution
EMF à l’exécution
Persistance
Réflexivité
Dynamicité
Notification
Validation
Persistance
Réflexivité
Dynamicité
Notification
Validation
Résumé
Fig.: Editeur intégré
Résumé
21 / 39
20 / 39
Modèle de génération 1/3
Découverte EMF
Modèle de génération 2/3
Alban Gaignard
Survol
Ce qu’est EMF
Pourquoi EMF
Outils proposés
Standardisation
Cycles de
développement
1. Par le menu New→Other ...
2. On crée un nouveau modèle EMF
3. A partir d’un méta-modèle Ecore (ou autre via
importation)
Fichier .genmodel similaire au .ecore avec synchronisation
automatique. On configure la phase de génération.
Découverte EMF
Alban Gaignard
Menu contextuel pour génération du code Java :
Méta-modèle
Ecore
Survol
Ce qu’est EMF
Pourquoi EMF
Outils proposés
Standardisation
Cycles de
développement
Méta-modèle
Ecore
Origine
Eléments d’Ecore
Origine
Eléments d’Ecore
Création du
modèle Ecore
Création du
modèle Ecore
Importation
Edition
Importation
Edition
Génération EMF
Génération EMF
Modèle de génération
Code généré
Modèle de génération
Code généré
EMF à l’exécution
EMF à l’exécution
Persistance
Réflexivité
Dynamicité
Notification
Validation
Fig.: Génération de code pour l’entité Component
Résumé
Persistance
Réflexivité
Dynamicité
Notification
Validation
Résumé
23 / 39
24 / 39
Modèle de génération 3/3
Découverte EMF
Code généré 1/3 : des plugins éclipse
Alban Gaignard
Découverte EMF
Alban Gaignard
Les propriétés sont éditables dans la vue Properties
Survol
Ce qu’est EMF
Pourquoi EMF
Outils proposés
Standardisation
Cycles de
développement
Méta-modèle
Ecore
Origine
Eléments d’Ecore
Création du
modèle Ecore
Importation
Edition
Génération EMF
Modèle de génération
Code généré
EMF à l’exécution
Fig.: Propriétés globales du .genmodel
Persistance
Réflexivité
Dynamicité
Notification
Validation
.model
Patrons de classes du modèle et factories permettant de
construire des instances d’éléments de modèle dans du code
Java.
.edit
Ce qu’est EMF
Pourquoi EMF
Outils proposés
Standardisation
Cycles de
développement
Méta-modèle
Ecore
Origine
Eléments d’Ecore
Framework pour le développement d’éditeurs d’instances de
modèle.
Création du
modèle Ecore
.editor
Génération EMF
Exemple d’implémentation d’un éditeur d’instances pour le
modèle générateur.
.test
Framework de tests unitaires (JUnit) pour permettre au
développeur de tester ses éléments de modèle.
Résumé
Survol
Importation
Edition
Modèle de génération
Code généré
EMF à l’exécution
Persistance
Réflexivité
Dynamicité
Notification
Validation
Résumé
“En général, on les laisse à leur valeur par défaut !”
26 / 39
25 / 39
Code généré 2/3 : patrons de classes
Découverte EMF
Code généré 3/3
Alban Gaignard
Génération
Ensemble de packages contenant classes et interfaces Java
avec support de l’héritage multiple. Génération réalisée avec
JET (Java Emitter Templates ) et configurable.
Re-Génération
I
I
Une nouvelle itération sur le modèle amène la fusion du
code déjà généré avec les modifications du modèle de
génération.
Que se passe-t-il si le corps d’une opération a déjà été
enrichi ? Annotation @generated NOT.
I
Si on supprime des entités dans le genModel ?
I
Attention : “bijection” modèle ECore ⇔ code .model
augmenté “fragile” ! !.
Découverte EMF
Alban Gaignard
Survol
Survol
Ce qu’est EMF
Pourquoi EMF
Outils proposés
Standardisation
Cycles de
développement
Méta-modèle
Ecore
Origine
Eléments d’Ecore
Création du
modèle Ecore
Importation
Edition
Génération EMF
Modèle de génération
Code généré
EMF à l’exécution
Persistance
Réflexivité
Dynamicité
Notification
Validation
Fonctionnalités additionnelles
I
Notification (patron de conception Observer)
I
Persistance (sérialisation XMI avec résolution des
références)
I
Réflexivité
I
Contraintes de cardinalité
Ce qu’est EMF
Pourquoi EMF
Outils proposés
Standardisation
Cycles de
développement
Méta-modèle
Ecore
Origine
Eléments d’Ecore
Création du
modèle Ecore
Importation
Edition
Génération EMF
Modèle de génération
Code généré
EMF à l’exécution
Persistance
Réflexivité
Dynamicité
Notification
Validation
Résumé
Résumé
27 / 39
28 / 39
Découverte EMF
Persistance 1/3
Persistance 2/3
Alban Gaignard
I
I
I
I
Une donnée sérialisée = Resource.
Les Resources sont enregistrées dans un ResourceSet.
Chargement explicite d’une resource par le “client”.
Chargement “à la demande” des autres resources lors
de la résolution des références.
Survol
Ce qu’est EMF
Pourquoi EMF
Outils proposés
Standardisation
Cycles de
développement
Méta-modèle
Ecore
Création du
modèle Ecore
ResourceSet
uri 1
Resource 1
uri 2
Resource 2
Alban Gaignard
Survol
Origine
Eléments d’Ecore
Load
Resource 1
Importation
Edition
ResourceSet
Contexte commun pour différentes ressources se référençant.
Factory pour la création de ressources (+ autres utilitaires).
ResourceSet rs = new ResourceSetImpl() ;
URI uri = URI.createFileURI("/data/example.xmi") ;
Resource resource = rs.createResource(uri) ;
Génération EMF
Modèle de génération
Code généré
Demand-load
Resource 2
EMF à l’exécution
Persistance
Réflexivité
Dynamicité
Notification
Validation
Ce qu’est EMF
Pourquoi EMF
Outils proposés
Standardisation
Cycles de
développement
Méta-modèle
Ecore
Origine
Eléments d’Ecore
Création du
modèle Ecore
Importation
Edition
Génération EMF
Resource
Conteneur pour les objets persistés (save() et load()).
Accès au contenu via getContents().
Sérialisation possible en Xml, Xmi, Ecore, Emof.
Résumé
Resource 1
Découverte EMF
Modèle de génération
Code généré
EMF à l’exécution
Persistance
Réflexivité
Dynamicité
Notification
Validation
Résumé
Resource 2
31 / 39
30 / 39
Persistance 3/3
Découverte EMF
Réflexivité
Alban Gaignard
Sauvegarde
URI fComp = URI.createFileURI("/data/MyNew.structure") ;
Resource r = resourceSet.createResource(fComp) ;
r.getContents().add(systeme) ;
try {
r.save(null) ;
} catch (IOException e) {
e.printStackTrace() ;
}
Survol
Ce qu’est EMF
Pourquoi EMF
Outils proposés
Standardisation
Cycles de
développement
Création du
modèle Ecore
Chargement
Alban Gaignard
Similaire à l’introspection Java. Toutes les classes générées
sont héritières d’EObject.
Par exemple :
avec l’API générée
Méta-modèle
Ecore
Origine
Eléments d’Ecore
Survol
Ce qu’est EMF
Pourquoi EMF
Outils proposés
Standardisation
Cycles de
développement
Méta-modèle
Ecore
StructureFactory fact = new StructureFactoryImpl() ;
Component component = fact.createComponent() ;
c.setName("NouveauComposant") ;
Importation
Edition
Origine
Eléments d’Ecore
Création du
modèle Ecore
Importation
Edition
Génération EMF
URI fComp = URI.createFileURI("/data/MyNew.structure") ;
Resource r = resourceSet.createResource(fComp) ;
try {
r.load(null) ;
} catch (IOException e) {
e.printStackTrace() ;
}
if (resource.isLoaded() && resource.getContents().size() > 0) {
systeme = (structure.System) resource.getContents().get(0) ;
}
Découverte EMF
Modèle de génération
Code généré
Génération EMF
avec l’API réflexive
EMF à l’exécution
EMF à l’exécution
EObject component = ... ;
EClass componentClass = component.eClass() ;
componentClass.eSet(componentClass.
getEStructuralFeature("name"),"NouveauComposant") ;
Persistance
Réflexivité
Dynamicité
Notification
Validation
Résumé
32 / 39
Modèle de génération
Code généré
Persistance
Réflexivité
Dynamicité
Notification
Validation
Résumé
33 / 39
Dynamicité
Découverte EMF
Notification
Alban Gaignard
Création dynamique de modèles Ecore
//création du modèle
EPackage poPackage = EcoreFactory.eINSTANCE.createEPackage() ;
poPackage.setName("po") ;
poPackage.setNsURI("http ://www.example.com/PurchaseOrder") ;
EClass poClass = EcoreFactory.eINSTANCE.createEClass() ;
poClass.setName("PurchaseOrder") ;
poPackage.getEClassifiers().add(poClass) ;
EAttribute billTo = EcoreFactory.eINSTANCE.createEAttribute() ;
billTo.setName("billTo") ;
billTo.setEType(EcorePackage.eINSTANCE.getEString()) ;
poClass.getEStructuralFeatures().add(billTo) ;
Alban Gaignard
Survol
Survol
Ce qu’est EMF
Pourquoi EMF
Outils proposés
Standardisation
Cycles de
développement
I
Un EObject est un sujet qui peut être observé par un
Adapter.
I
Le code généré (getters, setters) contient les
instruction de notification.
Méta-modèle
Ecore
Origine
Eléments d’Ecore
I
Création du
modèle Ecore
Importation
Edition
Modèle de génération
Code généré
En connaissant le modèle Ecore sans avoir l’API générée.
//réification du modèle
EObject po = EcoreUtil.create(poClass) ;
po.eSet(billTo,"123 Elm St.") ;
EMF à l’exécution
Persistance
Réflexivité
Dynamicité
Notification
Validation
Possibilité d’enregistrer les changements d’états par
l’objet ChangeRecorder
ChangeRecorder recorder = new ChangeRecorder() ;
recorder.beginRecording(Collections.singleton(order)) ;
order.setBillTo("456 Cherry St.") ;
ChangeDescription change = recorder.endRecording() ;
Génération EMF
Instanciation dynamique
Découverte EMF
I
I
Do/Undo : ChangeDescription.apply() et
ChangeDescription.applyAndReverse()
Transactions sur des instances/modèles ?
Résumé
Ce qu’est EMF
Pourquoi EMF
Outils proposés
Standardisation
Cycles de
développement
Méta-modèle
Ecore
Origine
Eléments d’Ecore
Création du
modèle Ecore
Importation
Edition
Génération EMF
Modèle de génération
Code généré
EMF à l’exécution
Persistance
Réflexivité
Dynamicité
Notification
Validation
Résumé
34 / 39
Validation
Découverte EMF
35 / 39
Résumé
Alban Gaignard
Alban Gaignard
Survol
I
Génération d’interfaces : code de validation à la charge
du programmeur.
public interface SystemValidator {
boolean validate() ;
boolean validateComponents(EList<Component> value) ;
boolean validateConnections(EList<Link> value) ;
boolean validateApparentPorts(EList<Port> value) ;
}
I
EMF Validation Framework : sous-projet d’EMF
permettant la définition de contraintes et offrant des
services de vérification.
Découverte EMF
Survol
Ce qu’est EMF
Pourquoi EMF
Outils proposés
Standardisation
Cycles de
développement
Méta-modèle
Ecore
Origine
Eléments d’Ecore
Création du
modèle Ecore
Ce qu’est EMF
Pourquoi EMF
Outils proposés
Standardisation
Cycles de
développement
1. Tour d’horizon de l’environnement
2. Méta-modèle Ecore
3. Edition Ecore
4. Génération EMF
Importation
Edition
Génération EMF
5. Lors de l’exécution, et quelques fonctionnalités avancées
Méta-modèle
Ecore
Origine
Eléments d’Ecore
Création du
modèle Ecore
Importation
Edition
Génération EMF
Modèle de génération
Code généré
Modèle de génération
Code généré
EMF à l’exécution
EMF à l’exécution
Persistance
Réflexivité
Dynamicité
Notification
Validation
Persistance
Réflexivité
Dynamicité
Notification
Validation
Résumé
Résumé
36 / 39
38 / 39
Pointeurs
Découverte EMF
Alban Gaignard
Survol
Web :
I
http ://www.eclipse.org/modeling/emf/
I
http ://wiki.eclipse.org/EMF
I
http ://www.eclipse.org/modeling/emf/docs
Livre :
Eclipse Modeling Framework , aux éditions Addison Wesley
Ce qu’est EMF
Pourquoi EMF
Outils proposés
Standardisation
Cycles de
développement
Méta-modèle
Ecore
Origine
Eléments d’Ecore
Création du
modèle Ecore
Importation
Edition
Génération EMF
Modèle de génération
Code généré
EMF à l’exécution
Des questions avant de passer à la pratique ?
Persistance
Réflexivité
Dynamicité
Notification
Validation
Résumé
39 / 39