Métamodéliser avec Eclipse Modeling Framework



Documents pareils
Ingénierie des Modèles. Méta-modélisation

Générer du code à partir d une description de haut niveau

Ingénierie Dirigée par les Modèles. Editeurs de modèles. (Eclipse Modeling Tools) Jean-Philippe Babau

openarchitectureware & transformation de modèle Yannick Lizzi Architecte Logiciel itemis France Mail: lizzi@itemis.de

Ingénierie Dirigée par les Modèles

Extensions à la formation. Laurent Pérochon, avril 2008, RMT Modelia, modélisation conceptuelle, formation UML, INRA Castanet Tolosan

Etat de l art sur le développement logiciel dirigé par les modèles.

Eclipse et ses plugins de modélisation (EMF GEF GMF). Entrée en matière. par. Jacques Barzic. Avertissement

Architecture Orientée Service, JSON et API REST

La démarche MDA. Auteur : Projet ACCORD (Assemblage de composants par contrats en environnement ouvert et réparti)*

4. SERVICES WEB REST 46

DSL. Domain Specific Language. À l'aide des technologies Eclipse Modeling. Goulwen Le Fur Le 23 novembre 2012

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

THÈSE. présentée. devant l'université de Bordeaux 1. pour obtenir. le grade de : Docteur de l'université de Bordeaux 1 Mention Informatique.

Information utiles. webpage : Google+ : digiusto/

Développement d un interpréteur OCL pour une machine virtuelle UML.

Analyse,, Conception des Systèmes Informatiques

Programmer en JAVA. par Tama

Environnement logiciel basé sur les modèles pour la conception collaborative de produit

TP1 : Initiation à Java et Eclipse

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Composants Logiciels. Le modèle de composant de CORBA. Plan

Introduction du test dans la modélisation par aspects

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Cours en ligne Développement Java pour le web

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Cours Composant 2. Qualité logicielle et spécications algébriques

1. Plan. 1. Plan Information essentielles...2

27/11/12 Nature. SDK Python et Java pour le développement de services ACCORD Module(s)

Chapitre VI- La validation de la composition.

ECLIPSE ET PDT (Php development tools)

UML est-il soluble dans les méthodes agiles?

UML et les Bases de Données

Conception de circuits numériques et architecture des ordinateurs

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN

MDA (Model Driven Architecture) principes et états de l art.

Création d un service web avec NetBeans 5.5 et SJAS 9

Architecture Reconfigurable Hétérogène à Gestion Hiérarchique Distribuée pour la Reconfiguration et la Prise de Décision

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Serveur d'archivage 2007 Installation et utilisation de la BD exist

Université de Bangui. Modélisons en UML

Alfstore workflow framework Spécification technique

Développement Logiciel

Visual Paradigm Contraintes inter-associations

Synergies entre Artisan Studio et outils PLM

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

MEMOIRE. Présenté à L École Nationale d Ingénieurs de Sfax. en vue de l obtention du MASTÈRE INFORMATIQUE NTSID. Par.

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

CORBA. (Common Request Broker Architecture)

Projet de développement

ACTIVITÉ DE PROGRAMMATION

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Projet de développement. Introduction à Eclipse. Application à votre projet. Philippe Collet. Organisation. Cours 1 : principes généraux - svn

Héritage presque multiple en Java (1/2)

Bases Java - Eclipse / Netbeans

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Initiation à JAVA et à la programmation objet.

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

Élasticité des applications à base de services dans le Cloud

LES TECHNOLOGIES DU WEB APPLIQUÉES AUX DONNÉES STRUCTURÉES

Modélisation des processus métiers et standardisation

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Traduction des Langages : Le Compilateur Micro Java

Une architecture pour les transformations de modèles et la restructuration de modèles uml

INGÉNIERIE DIRIGÉE PAR LES MODÈLES ET COMPOSANTS SENSIBLES AU CONTEXTE

Bases de données et environnements distribués Chapitre I : Architecture logicielle technologies de developpement en environnement

ÉCOLE DE TECHNOLOGIE SUPÉRIEURE UNIVERSITÉ DU QUÉBEC THÈSE PRÉSENTÉE À L ÉCOLE DE TECHNOLOGIE SUPÉRIEURE

Démarches d urbanisation : réorganiser le Système d Information en structurant ses fonctions dans des blocs fonctionnels communicants.

OASIS Date de publication

Les Lignes de Produits Logiciels (Software Product Lines) Tewfik Ziadi UPMC/LIP6

IFT2255 : Génie logiciel

Problématiques de recherche. Figure Research Agenda for service-oriented computing

Présentation. Au programme. Fonctionnement. A l issue de ce module vous devriez...

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB Olivier Augereau Formation UML

Gérer ses environnements de développement avec Vagrant RMLL 2012

as Architecture des Systèmes d Information

Description de la formation

RapidMiner. Data Mining. 1 Introduction. 2 Prise en main. Master Maths Finances 2010/ Présentation. 1.2 Ressources

DSLs pour le Développement Agile de Transformations

Evolution et architecture des systèmes d'information, de l'internet. Impact sur les IDS. IDS2014, Nailloux 26-28/05/2014

Programmation en Java IUT GEII (MC-II1) 1

Présentation générale du projet data.bnf.fr

Programmation Objet Java Correction

Intégration de l interface graphique de Ptidej dans Eclipse

NOVA BPM. «Première solution BPM intégr. Pierre Vignéras Bull R&D

Refonte front-office / back-office - Architecture & Conception -

[Projet S9] Rédacteurs & Contributeurs Entité Rédacteurs Contributeurs Imededdine HOSNI Olivier MARTY. Validation du document Nom Date Visa

D E S C R I P T I O N D E S É L É M E N T S C L E F S D ' U I M A

BIRT (Business Intelligence and Reporting Tools)

Vérifier la qualité de vos applications logicielle de manière continue

Généralités sur le Langage Java et éléments syntaxiques.

L approche Model-Driven Architecture, crédible pour développer un progiciel de

XML, PMML, SOAP. Rapport. EPITA SCIA Promo janvier Julien Lemoine Alexandre Thibault Nicolas Wiest-Million

Cours STIM P8 TD 1 Génie Logiciel

Diagramme de classes

- Couches - Éléments - Domaines - ArchiMate et les techniques du BABOK

OCL - Object Constraint Language

Introduction aux concepts d ez Publish

Environnements de développement (intégrés)

Transcription:

Génie Logiciel & Ingénierie Des Modèles mosser@polytech.unice.fr Université de Nice Sophia Antipolis Équipe Modalis, Laboratoire I3S, CNRS http://rainbow.i3s.unice.fr/~mosser Année universitaire 2009 2010 Sciences Informatique 5ème année EPU Polytech'Nice Sophia Antipolis

Organisation des interventions Cette semaine... Un Cours / TP ( 2 heures) : Cours : Présentation du canevas logiciel EMF TP : Mise en uvre via TurtleGrapher Application au projet (2 heures) : Opérationalisation du projet Dans 2 semaines... Un Cours / TP ( 2 heures) : Cours : Transformations de modèles avec Kermeta TP : Représentation graphique des TurtleGraphs Application au projet (2 heures) : Identication des transformations utiles

Objects have failed! [R. Gabriel, OOPSLA'02] The object-oriented approach does not adequately address the computing requirements of the future. Object-oriented languages have lost the simplicity -some would say puritythat made them special and which were the source of their expressive and development power. Objects promised reuse, and we have not seen much success.

Agenda 1 Modèles, Métamodèles... 2 Exemple : Graph Management 3 Eclipse Modeling Framework 4 Outil de Modélisation & Spécicités EMF 5 EMF : Un canevas logiciel 6 Prenons un peu de recul... 7 Conclusions 4

MDE Model Driven Engineering Why do we model? Grady Booch To abstract Abstraction are not reality, but intentionaly incomplete To reason about Compare, synthetize, analyze, generate abstractions,... To document The code is the truth, but not the whole truth To transform Abstractions made manifest as the exec. system itself 5

Métamodèles & Prols : deux approches diérentes! Approche Prols dans UML Une adaptation / spécialisation d'uml Avantage : repose sur la grande puissance d'uml Inconvénient : repose sur la grande puissance d'uml The UML is reasonably welldened Grady Booch et pourtant, il fait partie des 3 auteurs initiaux. Approche Modèles & Métamodèles Construction d'outils spécique à un domaine Avantage : expression de concepts centrés sur le métier Inconvénient : une nième roue carrée à réinventer? Mais modéliser, c'est un domaine comme un autre non? Justement, l'astuce est là! 6

L'IDM : une (méta) façon de penser Méta : du grec µɛτα Au delà de... (Métaphysique, Métalinguistique,... ) Métadonnées Systèmes de chiers, ID3/MP3, Web Sémantique... Métalangage Grammaires ebnf, UML, XML,... Modèles, Métamodèles & Transformations Un modèle est une représentation du domaine d'application Un modèle est conforme à un métamodèle Un métamodèle est un modèle (métamétamodèles) On passe d'un modèle à un autre par transformation 7

Mon premier métamodèle... (niveau CE1) Une phrase contient un sujet, un verbe et un complément 8

Mon premier métamodèle... (niveau CE1) Une phrase Lien { }} { contient un sujet, }{{} un verbe et un Cardinalité Concept { }} { complément 8

Mon premier métamétamodèle... (niveau CM1) Sujet { }} { Une phrase Verbe { }} { contient Complément { }} { un sujet, un verbe et un complément } {{ } Phrase 8

L'approche OMG (Object Management Group) OMG instance of conform to conform to MOF ebnf instance of conform to a XML Schema conform to UML MM instance of The Pascal Grammar conform to an XML File a UML Model instance of a Pascal Program conform to a Software System a Running Program Franck Chauvel

Conformité syntaxique conformité sémantique Pierre Alain Muller (quoting Magritte)

Conformité syntaxique conformité sémantique Larry L. Constantine (MODELS'09 Keynote)

Agenda 1 Modèles, Métamodèles... 2 Exemple : Graph Management 3 Eclipse Modeling Framework 4 Outil de Modélisation & Spécicités EMF 5 EMF : Un canevas logiciel 6 Prenons un peu de recul... 7 Conclusions 11

Notre métier : Graph Management Qu'est-ce qu'un graphe orienté (en bref)? Un ensemble de sommet, reliés par des arêtes Possède des propriétés : ordre,... Clients potentiels Réseaux routiers Grilles de calculs Bases de donnés Systèmes discrets Réseaux sociaux... 12

Pourquoi métamodéliser? (Avantages) Une expressivité centrée sur le métier Le raisonnement porte directement sur les concepts métiers L'ordre d'un graphe est le nombre de ses sommets Et non pas sur des concepts issus d'un autre métier L'ordre d'une instance de la classe Graphe est le nombre d'instances de la classe Sommet référencés depuis la liste sommets, attribut de la classe Graphe. Exemples de domaines atteignables Langage de description : Représentation (GraphViz,... ) Algèbre de processus : Vérication (π calcul,... )... 13

Pourquoi métamodéliser? (Avantages) Une expressivité centrée sur le métier Le raisonnement porte directement sur les concepts métiers L'ordre d'un graphe est le nombre de ses sommets Et non pas sur des concepts issus d'un autre métier L'ordre d'une instance de la classe Graphe est le nombre d'instances de la classe Sommet référencés depuis la liste sommets, attribut de la classe Graphe. Instance? Classe? Attribut? Référence? Exemples de domaines atteignables Langage de description : Représentation (GraphViz,... ) Algèbre de processus : Vérication (π calcul,... )... 13

Expressivité métier : Vérier un suivant de s En tant qu'expert Théorie des Graphes : On manipule les arêtes A entre les n uds n du graphe G Et on exprime une propriété valable g G : n Suivants(n) a A a(n n ) En tant que qu'expert Développement Objet : On raisonne sur des Instances de Classes On dénit une Méthode faisant la vérication public bool estsuivant(graph g, Node n, Node nprime) 15

Expressivité métier : Vérier un suivant de s En tant qu'expert Théorie des Graphes : On manipule les arêtes A entre les n uds n du graphe G Et on exprime une propriété valable g G : n Suivants(n) a A a(n n ) En tant que qu'expert Développement Objet : On raisonne sur des Instances de Classes On dénit une Méthode faisant la vérication public bool estsuivant(graph g, Node n, Node nprime) Il s'agit simplement de deux métamodèles diérents! 15

Agenda 1 Modèles, Métamodèles... 2 Exemple : Graph Management 3 Eclipse Modeling Framework 4 Outil de Modélisation & Spécicités EMF 5 EMF : Un canevas logiciel 6 Prenons un peu de recul... 7 Conclusions 16

Acronymes & Vocabulaire MOF : Meta Object Facility BNF Grammaires, MOF Métamodèles Il existe diérentes variantes du MOF : emof, cmof, smof Standard ISO/IEC19502:2005 (OMG) EMF : Eclipse Modeling Framework Totalement intégré dans Eclipse Plus ou moins aligné sur EMOF (IBM) XMI, format standard interopérable Échange de modèles : Encodage XMI Sérialisation XML conforme au métamodèle. 17

Acronymes & Vocabulaire MOF : Meta Object Facility BNF Grammaires, MOF Métamodèles Il existe diérentes variantes du MOF : emof, cmof, smof Standard ISO/IEC19502:2005 (OMG) EMF : Eclipse Modeling Framework Totalement intégré dans Eclipse Plus ou moins aligné sur EMOF (IBM) XMI, format standard interopérable Échange de métamodèles : Encodage XMI Sérialisation XML conforme au métamétamodèle. 17

EMF & UML [F. Chauvel] emof (alignement vis à vis d'emf) Construit sur un noyau reexif Un ensemble de concepts pour décrire des métamodèles C'est un métamodèle de métamodèle (métamétamodèle)! Il en existe implémentations (ECore, RubyMOF,... ) Et le diagramme de classe UML dans tout ça? On en réutilise la syntaxe graphique Restriction sémantique Moins expressif (visibilité absente,... ) Trop limité? (small is beautiful) 18

Concepts manipulés dans EMF 19

Implantation d'ecore... en ECore! Expression du métamodèle ECore dans un métamodèle Rappel : ECore est un métamodèle de métamodèle... On l'implante au même titre qu'un autre métamodèle $ECLIPSE/plugins/org.eclipse.emf.ecore_XXX.jar Dans le sous-répertoire models : Ecore.ecore L'approche est dénitivement méta : On considère la modélisation comme un domaine métier Dénition des métaoutils pour travailler sur ce domaine Validation naturelle des concepts Conséquence : Si EMF l'a fait, on peut aussi le faire! Tout dans EMF utilise une approche dirigée par les modèles! 20

Agenda 1 Modèles, Métamodèles... 2 Exemple : Graph Management 3 Eclipse Modeling Framework 4 Outil de Modélisation & Spécicités EMF 5 EMF : Un canevas logiciel 6 Prenons un peu de recul... 7 Conclusions 21

Fichier ecore : Éditeur arborescent de métamodèles

Fichier ecorediag : Éditeur graphique de métamodèles

Dénition d'attributs : Nom, Multiplicité & Type

Dénition de références : Contenance & Opposition

Dénition d'opération : Paramètres

Fichier xmi : Éditeur graphique de modèle

EMF : Trucs & Astuces [ 1/2 ] Attributs : Vérier les types utilisés (EMachin??) Multiplicités : Dans ECore, * se lit -1! Références : Faire attention à la contenance! Au risque de se retrouver avec des DanglingException! Pour dénir une relation opposée : Dénir la référence et sa réciproque Spécier pour l'une qu'elle est l'eopposite de l'autre. Création de modèles xmi conforme à un métamodèle ecore : Create Dynamic Instance sur le concept dans le.ecore Load Resource pour charger un modèle dans un autre EMF est un adepte du chargement paresseux.

EMF : Trucs & Astuces [ 2/2 ] Prise de position sur les EOperations : Dans une approche implémentation On déclare les opérations dans les métaclasses On implémente leur comportement dans le langage cible Dans une approche modélisation Les métamodèles sont des structures supports au raisonnement On ne se soucie pas de leur exécution au design Mais on s'en occupera plus tard,... Et peut-être avec d'autres outils (e.g. Kermeta) Quoi qu'il en soit... La multiplicité d'une EOperation concerne son type de retour Les paramètres se dénissent dans un sousonglet.

Agenda 1 Modèles, Métamodèles... 2 Exemple : Graph Management 3 Eclipse Modeling Framework 4 Outil de Modélisation & Spécicités EMF 5 EMF : Un canevas logiciel 6 Prenons un peu de recul... 7 Conclusions 30

Intégration d'ecore dans EMF : Manipulation & Génération EMF est un (E)canevas logiciel... Dirigé par les modèles, mais implémenté dans un langage Processus de réication IDM Java : Les métamodèles sont représentées par des EClass Les modèles sont représentés par des EObject Génération du code des métamodèles via un... modèle! Les outils de génération ne travaillent pas sur le.ecore Eclipse dénit un chier.genmodel en parallèle : New/ Other/ Eclipse Modeling Framework/ EMF Model On peut customiser le générateur de code! L'IDE se charge du maintien de la cohérence (ou pas) 31

Générateurs de code Action disponibles sur le métamodèle : 1 Generate Model Code : Classes Java reposant sur EMF 2 Generate Edit Code : Plugin supportant l'édition 3 Generate Editor Code : Plugin d'édition arborescente 4 Generate Test Code : Plugin de test unitaire Actions disponibles à partir du.genmodel, et dans un EMF Project. 32

Génération de code : Opening the box [A. Gaignard] JET : Java Emiter Template Congurable (cf. vue Properties du.genmodel) Approche template : dénition de patrons de classe Vers Java : Support de l'héritage multiple (injection) Vers X : implantation des templates ad'hoc. Remarques sur les codes générés automatiquement Fonctionnalités EMF intégrée dans les codes : Persistance, Notication, Réexivité, Contraintes Re-génération Fusion avec le code existant Éviter l'écrasement : @generated NOT (Javadoc) Tips&Tricks : Bijection ECore Code augmenté fragile 33

Chargement d'un modèle XMI dans un EObject Java public Graph load ( File f) { ResourceSet rs = new ResourceSetImpl (); Resource. Factory. Registry registry = rs. getresourcefactoryregistry (); Map < String, Object > m = registry. getextensiontofactorymap (); m. put (" xmi ", new XMIResourceFactoryImpl ()); rs. getpackageregistry (). put ( GraphPackage. ens_uri, GraphPackage. einstance ); URI uri = URI. createfileuri ( f. getabsolutepath ()); Resource resource = rs. getresource ( uri, true ); if ( resource. isloaded () && resource. getcontents (). size () > 0) { return ( Graph ) resource. getcontents (). get (0); } return null ; } 35

Stockage d'un EObject Java dans un modèle XMI public void save ( Graph g, File f) { ResourceSet rs = new ResourceSetImpl (); Resource. Factory. Registry registry = rs. getresourcefactoryregistry (); Map < String, Object > m = registry. getextensiontofactorymap (); m. put (" xmi ", new XMIResourceFactoryImpl ()); m. put (" ecore ", new EcoreResourceFactoryImpl ()); rs. getpackageregistry (). put ( GraphPackage. ens_uri, GraphPackage. einstance ); Resource packageresource = rs. createresource ( URI. createfileuri (" model / Graph. ecore " )); packageresource. getcontents (). add ( GraphPackage. einstance ); try { packageresource. load (null );} catch ( IOException e1 ) { e1. printstacktrace (); } URI uri = URI. createfileuri ( f. getabsolutepath ()); Resource resource = rs. createresource ( uri ); resource. getcontents (). add (g ); try { HashMap < String, Boolean > options = new HashMap < String, Boolean >(); options. put ( XMIResource. OPTION_SCHEMA_LOCATION, Boolean. TRUE ); resource. save ( options ); } catch ( IOException e) { e. printstacktrace (); } }

Génération de modèle : une approche factory public Graph generatecompletegraph ( String name, int n) { Graph g = GraphFactory. einstance. creategraph (); g. setname ( name ); for ( int i = 0; i < n; i ++) { Node node = GraphFactory. einstance. createnode (); node. setcontent (" node_ "+i ); g. getnodes (). add ( node ); } for ( Node source : g. getnodes ()) { for ( Node target : g. getnodes ()) { Edge e = GraphFactory. einstance. createedge (); e. setlabel ( source. getcontent () + " -> " + target. getcontent ()); e. setsource ( source ); e. settarget ( target ); g. getedges (). add (e ); } } return g; } 39

Implémentation des EOperation : Localisation des méthodes dans le codé généré 1 Dans le souspackage graph.impl 2 Dans la classe GraphImpl 3 Noyée dans le code automagique généré par EMF... /* * * @generated NOT */ public int order () { return this. getedges (). size (); } Ne pas oublier de marquer pour empêcher l'écrasement! 41

Un exemple d'avantage du canevas : Observer/Observable Dans le code Java : Graph g2 = GraphFactory. einstance. creategraph (); g2. eadapters (). add (new EContentAdapter () { public void notifychanged ( Notification notification ) { super. notifychanged ( notification ); System. out. println ( notification ); }}); g2. setname (" New Name!" ); Dans le terminal : org.eclipse.emf.ecore.impl.enotificationimpl@2297d7 ( eventtype: SET, position: -1, notifier: graph.impl.graphimpl@1ecfeb ( name: New Name!), feature:... 43

Un canevas adaptable : spécialisation des entités // The Usual XMI peristence factory m. put (" xmi ", new XMIResourceFactoryImpl ()); // Can be Specialized to encrypt models m. put (" xmi ", new XMIResourceFactoryImpl () { public Resource createresource ( URI uri ) { XMIResourceFactoryImpl resfactory = new XMIResourceFactoryImpl (); XMIResource resource = ( XMIResource ) resfactory. createresource ( uri ); try { resource. getdefaultloadoptions (). put ( Resource. OPTION_CIPHER, new AESCipherImpl (" foo " )); resource. getdefaultsaveoptions (). put ( Resource. OPTION_CIPHER, new AESCipherImpl (" foo " )); } catch ( Exception e) { e. printstacktrace (); } return resource ; } }); 45

Agenda 1 Modèles, Métamodèles... 2 Exemple : Graph Management 3 Eclipse Modeling Framework 4 Outil de Modélisation & Spécicités EMF 5 EMF : Un canevas logiciel 6 Prenons un peu de recul... 7 Conclusions 46

Questions ouverte : Multiplicité technologique? 47

Questions ouverte : Interopérabilité des outils? 48

Questions ouverte : Pragmatisme de la démarche? 49

Questions ouverte : Coût d'un développement IDM? 50

Agenda 1 Modèles, Métamodèles... 2 Exemple : Graph Management 3 Eclipse Modeling Framework 4 Outil de Modélisation & Spécicités EMF 5 EMF : Un canevas logiciel 6 Prenons un peu de recul... 7 Conclusions 51

Conclusions L'approche métamodèle...... est nalement naturelle... permet de se focaliser sur son métier EMF est un canevas logiciel Basé sur emof (standard ISO), Open Source, intégré à Eclipse De nombreux outils l'utilisent, pas si complexe qu'il en à l'air! Fournit de nombreuses fonctionnalités out of the box.... mais... Un manque de maturité peut rester visible L'approche tout modèle laisse parfois perplexe 52

Références Le Web ociel d'emf : http://www.eclipse.org/modeling/emf http://wiki.eclipse.org/emf http://www.eclipse.org/modeling/emf/docs Livres (très) intéressants Eclipse Modeling Framework, Budinsky et al, Addison Wesley MDA en action, Xavier Blanc, Eyrolles Tutoriels intéressants disponibles sur le Web : http://chie.uniandes.edu.co/~isis4712/wiki/ http://www.eclipse.org/articles http://wiki.eclipse.org/index.php/gmf_tutorial http://www.kermeta.org/documents/emftutorial/ 53

Remerciements Pour leurs compétences sur EMF : Alban Gaignard Franck Chauvel Pour leurs diérents points de vues sur l'idm (Modalis, Sophia) (HCST, Pékin) Mireille BlayFornarino (Modalis, Sophia) Xavier Blanc (MoVe, Paris 6) PierreAlain Muller (Triskell, Mulhouse) Robert France (CSU, Fort Collins) Geri Georg (CSU, Fort Collins) et tous les membres de la communautés MODELS... :) Aucun modèle n'a été maltraité durant la préparation de cet exposé. 54

Lab Session : TurtleGrapher