16/09/2010 Modèles et Métamodèles Cedric Dumoulin Plan Définition Comment faire un métamodèles Papyrus les éléments de base Comment générer les classes Java Tester le métamodèle Créer un modèle de façon programmatique 1 16/09/2010 Définitions Modèlisation Modèles activité qui permet d’appréhender un système complexe en vue d’en déduire ses caractéristiques en tenant compte de différents points de vue. conduit à un ensemble de modèles c’ est une simplification de la réalité c’ est une abstraction de la réalité Peut prendre différentes formes: schéma, texte, ... Métamodèles Définit les concepts utilisables dans le modèle Définit le vocabulaire ou la grammaire Exemples de modèles et métamodèles fichier XML – DTD ou schema carte routière – légende modèle UML – métamodèle UML modèle Java – métamodèle Java 2 16/09/2010 Model and Metamodel OMG view Meta-metamodel Available modeling elements Construction rules (Ecore, MOF) metamodel M2 (UML description) model M1 Model (UML example) application M0 meta metamodel M3 Metamodel Can be seen as a “language” definition: Language to describe languages Ex : ECore, MOF Follow the rules expressed in the language Describe an application Application (a program) Concrete realization of a model Example : generated code Metametamodel Concevoir un métamodèle Les éléments structurants Les classes Les éléments de regroupement pour définir les concepts du MM Coordonnee telephone : undefined eM ail : undefined fax : undefined les paquetages PckFournisseur1 Les éléments de documentation Les notes <<comment>> Ceci est une note 3 16/09/2010 Concevoir un métamodèle Les relations d’association par référence par composition rôle1 nomAssociation 1..* rôle2 0..1 de généralisation Langages pour la conception de MM MOF ECore Meta Object Facilities Définit par l’OMG similaire a MOF définit par Eclipse permet de générer des classes Java UML + profile Pour concevoir un MM avec UML 4 16/09/2010 Exemple de MM En pratique : Générer les classes à partir du MM Dessiner le MM dans un éditeur UML (comme Papyrus) Importer le modèle UML dans un projet EMF Générer les classes à partir du .genmodel Editeur UML EMF -Eclipse importe édite .genmodel .uml .ecore generate src/*.java editor … 5 16/09/2010 Regénérer Si on modifie le MM il faut régénérer le .genmodel et les classes la génération détruit partiellement ce qui à déjà été généré si modification importante, il faut détruire au préalable à la main les src générées Tester l’éditeur arborescent Vous développez dans un Eclipse de développement Vous testez dans un Eclipse de test (un autre Eclipse) Pour créer des fichiers, il faut d’abord avoir un projet bonne pratique: avoir une projet « test » 6 16/09/2010 Exercices MM Library Une library contient des Book Un Book a un titre et un ou plusieurs auteurs MM Java Identifier les concepts nécessaire Package, classe, … Pour chaque concept, identifier les attributs Construire le MM 7