tp1_mde_mgi

3

Upload: samir2010

Post on 14-Jul-2016

214 views

Category:

Documents


0 download

DESCRIPTION

Model driven engineering

TRANSCRIPT

1 2014-2015

UNIVERSITE IBN TOFAIL

Faculté des Sciences

Département d’Informatique

KENITRA

Ingénierie Dirigée par les Modèles (MDE) MGI, Semestre 3

TP n°1 : Modèles et Méta-modèles Ecore

A. Réalisation d’un méta-modèle Ecore en tant que diagramme de type ecorediag

Dans cette partie, on vous demande de réaliser un méta-modèle UML simple du nom ″cdm″

(Class Diagram Model). Le diagramme doit être créé dans l’éditeur Ecore Diagramme, en

ajoutant dans votre projet un élément de type ecorediag. Le méta-modèle UML est celui de

diagramme de classes :

- La classe de base est ModelElement. C’est une classe abstraite qui possède par un

name et un kind.

- Un ModelElement peut être un Package, un PackageElement ou un Attribute.

- Un PackageElement est soit un Classifier soit une Association.

- Un package contient 0 ou plusieurs éléments de type Classifier.

- Il existe deux types de Classifier : les classes et les types de données (DataType).

- Une classe peut posséder 0 ou plusieurs attributs (Attribute).

- Un attribut a un nom et son type est défini par un Classifier.

D’autres informations doivent être représentées comme l’association binaire, la

généralisation-spécialisation. Le fichier XMI suivant représente le méta-modèle en question.

Vous devez le lire, comprendre son contenu afin de pouvoir élaborer votre méta-modèle dans

l’éditeur Ecore Diagram.

<?xml version="1.0" encoding="UTF-8"?>

<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="cdmm" nsURI="http://cdmm/1.0"

nsPrefix="cdmm">

<eClassifiers xsi:type="ecore:EClass" name="ModelElement" abstract="true">

<eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1"

eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

<eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" eType="ecore:EDataType

http://www.eclipse.org/emf/2002/Ecore#//EString"/>

</eClassifiers>

<eClassifiers xsi:type="ecore:EClass" name="PackageElement" abstract="true"

eSuperTypes="#//ModelElement">

<eStructuralFeatures xsi:type="ecore:EReference" name="namespace" eType="#//Package"

eOpposite="#//Package/elements"/>

</eClassifiers>

<eClassifiers xsi:type="ecore:EClass" name="Package" eSuperTypes="#//ModelElement">

<eStructuralFeatures xsi:type="ecore:EReference" name="elements" upperBound="-1"

eType="#//PackageElement" containment="true" eOpposite="#//PackageElement/namespace"/>

</eClassifiers>

<eClassifiers xsi:type="ecore:EClass" name="Classifier" abstract="true"

eSuperTypes="#//PackageElement"/>

2 2014-2015

<eClassifiers xsi:type="ecore:EClass" name="Class" eSuperTypes="#//Classifier">

<eStructuralFeatures xsi:type="ecore:EReference" name="forward" upperBound="-1"

eType="#//Association" eOpposite="#//Association/destination"/>

<eStructuralFeatures xsi:type="ecore:EReference" name="reverse" upperBound="-1"

eType="#//Association" eOpposite="#//Association/source"/>

<eStructuralFeatures xsi:type="ecore:EReference" name="attributes" upperBound="-1"

eType="#//Attribute" containment="true" eOpposite="#//Attribute/owner"/>

<eStructuralFeatures xsi:type="ecore:EReference" name="general" upperBound="-1"

eType="#//Class" eOpposite="#//Class/specific"/>

<eStructuralFeatures xsi:type="ecore:EReference" name="specific" upperBound="-1"

eType="#//Class" eOpposite="#//Class/general"/>

</eClassifiers>

<eClassifiers xsi:type="ecore:EClass" name="Attribute" eSuperTypes="#//ModelElement">

<eStructuralFeatures xsi:type="ecore:EReference" name="owner" eType="#//Class"

eOpposite="#//Class/attributes"/>

<eStructuralFeatures xsi:type="ecore:EReference" name="type" eType="#//Classifier"/>

</eClassifiers>

<eClassifiers xsi:type="ecore:EClass" name="Association" eSuperTypes="#//PackageElement">

<eStructuralFeatures xsi:type="ecore:EReference" name="destination" lowerBound="1"

eType="#//Class" eOpposite="#//Class/forward"/>

<eStructuralFeatures xsi:type="ecore:EReference" name="source" lowerBound="1"

eType="#//Class" eOpposite="#//Class/reverse"/>

</eClassifiers>

<eClassifiers xsi:type="ecore:EClass" name="DataType" eSuperTypes="#//Classifier"/>

</ecore:EPackage>

B. Réalisation d’un méta-modèle Ecore dans un éditeur de texte

Dans cette partie, vous devez réaliser un autre méta-modèle Ecore mais cette fois dans

l’éditeur de texte d’eclipse. Ce méta-modèle est celui d’une base de données relationnelle

qu’on appellera rdbm (Relational DataBase Model) et qui est représenté dans le diagramme

Ecore ci-dessous :

3 2014-2015

C. Création d’une instance de méta-modèle Ecore

Créer le genmodel de votre méta-modèle cdm, puis générer le code Java du méta-modèle

ainsi que celui de l’éditeur. Après utiliser cet éditeur pour créer un diagramme de classe dans

l’éditeur hiérarchique que vous venez de créer.

D. Création d’une instance de méta-modèle Ecore dans un éditeur de texte

Vous allez maintenant refaire l’étape précédente mais cette fois le modèle du diagramme de

classes ci-dessous doit être créé dans un éditeur de texte.