Vous êtes sur la page 1sur 42

Approche MDA pour la transformation dun modle UML en un schma CWM

Antoine Wiedemann, Jean-Yves Lafaye, Marie-Christine Lafaye, Georges Louis

Plan
Introduction Approche MDA (Model Driven Architecture) ATL (Atlas Transformation Language) Exprience dimplmentation Bilan

Plan
Introduction Approche MDA (Model Driven Architecture) ATL (Atlas Transformation Language) Exprience dimplmentation Bilan

Introduction

MDA

ATL

Implmentation

Bilan

Conception de base de donnes Les AGL existants prsentent des inconvnients:


Non respect de la forme normale Manque dergonomie

Une nouvelle mthode


Normalisation_L Un processus complet

Introduction

MDA

ATL

Implmentation

Bilan

Processus
Calculs Diagramme de classe

Choix Calculs Schma relationnel Gnration de code SQL BDD

Annotations Transformation
Manuel Automatique

Plan
Introduction Approche MDA (Model Driven Architecture) ATL (Atlas Transformation Language) Exprience dimplmentation Bilan

Introduction

MDA

ATL

Implmentation

Bilan

Model Driven Architecture (Standard OMG) - 2001 Model Driven Engineering 1980s Ingnierie Dirige par les Modles (IDM)

Introduction

MDA

ATL

Implmentation

Bilan

Modle: Abstraction, vue incomplte, simplification, description, reprsentation de quelque chose


Est reprsent par

Terrain volution de valeurs Suite doprations, de calculs

Carte Modle financier Programme informatique

Introduction

MDA

ATL

Implmentation

Bilan

Metamodle: Langage de dfinition dun modle


Est conforme

Carte Modle financier Programme informatique

Lgende Langage mathmatique Grammaire Java, C#, Smalltalk(documentation)

Introduction

MDA

ATL

Implmentation

Bilan

Meta-metamodle : description du langage utilis pour lexpression dun metamodle


Est conforme

Lgende, chelle Langage mathmatique Grammaire Java, C#, Smalltalk (documentation)

Langage naturel ou Langage spcifique la dfinition de mtamodles.

Introduction

MDA

ATL

Implmentation

Bilan


Est conforme

Meta-meta-metamodle M4
Est conforme

Meta-metamodle M3
Est conforme

Metamodle M2
Est conforme

modle M1
Est reprsent par

ralit M0

Introduction

MDA

ATL

Implmentation

Bilan

Est conforme Meta-metamodle Est conforme Metamodle Est conforme modle Est reprsent par ralit

M3 M2 M1 M0

MOF UML 2.0 Diagramme de classes Systme

Introduction

MDA

ATL

Implmentation

Bilan

Sparer les rflexions de conception des tches dimplantation. Avec des modles:
CIM Transfo PIM

CIM: Computation Independant Model PIM: Platform Independant Model

Introduction

MDA

ATL

Implmentation

Bilan

Sparer les rflexions de conception des tches dimplantation. Avec des modles:
PIM Transfo Transfo1 Transfo 2 Transfo 3 PSM PSM1 PSM 2 PSM 3

PIM: Platform Independant Model PSM: Platform Specific Model

Introduction

MDA

ATL

Implmentation

Bilan

Introduction

MDA

ATL

Implmentation

Bilan

Processus
Calculs Diagramme de classe

Choix Calculs Schma relationnel Gnration de code SQL BDD

Annotations Transformation
Manuel Automatique

Introduction

MDA

ATL

Implmentation

Bilan

Debut:Attribut
:UniqueConstraint

name=Debut attribut

/uniqueKey /ownedElement

/uniqueKey

S tage
/feature :Column

Stage
/feature

Id_STG : integer Id_STG:Attribut name=Sujet Sujet : string name=Id_STG attribut attribut Dbut : char propritaire propritaire propritaire Fin [0..1] : char
Sujet:Attribut Stage:Classe_persistante name=Stage Alias=STG propritaire attribut Fin:Attribut upperValue Un:Expression symbol=1 lowerValue name=Fin

Id_STG : integer :Column Name=Numro Name=Dbut Sujet : string col Name=Fin col col isNullable=columnNullable Debut : char {Unique} :PrimaryKey Numro : integer :Column /uniqueKey /ownedElement ID_PROPName=Tuteur : integer /namespace {Unique} /feature col isNullable=columnNullable SOUT.ID_STG : integer /namespace {Unique} :Column :Table :Column Tuteur :col string Name=ID_STG col Name=Sujet Name=Stage Fin : char col
:Column col :Column Name=ID_PROP /feature /namespace /namespace :Column Name=SOUT.ID_STG isNullable=columnNullable /feature

+ Cl trangres
/uniqueKey /ownedElement /ownedElement :UniqueConstraint

/uniqueKey :UniqueConstraint

Zro:Expression symbol=0

Introduction

MDA

ATL

Implmentation

Bilan

M3
Conforme

MOF
Conforme

M2

UML
Conforme

Spcification transformation

CWM
Conforme

M1

Diagramme de classe

Transformation

Schma relationnel

Plan
Contexte Approche MDA (Model Driven Architecture) ATL (Atlas Transformation Language) Exprience dimplmentation Bilan

Introduction

MDA

ATL

Implmentation

Bilan

Langage de programmation de transformation de modle Dvelopp lINRIA de Nantes sur la plateforme eclipse Rponse la proposition RFP QVT (Query View Transformation) De gros effort de promotion, une foule dexemples disponibles En exploitation dans lindustrie (France Telecom, Thales)

Introduction

MDA

ATL

Implmentation

Bilan

M3
Conforme

MOF
Conforme

M2

UML
Conforme

Spcification transformation

CWM
Conforme

M1

Diagramme de classe

Transformation

Schma relationnel

Introduction

MDA

ATL

Implmentation

Bilan

M3

Ecore (intgr eclipse MOF travers EMF)


Conforme Conforme

M2

fichier xmi UML .ecore


Conforme

Spcification Fichier .atl transformation

fichier xmi CWM .ecore


Conforme

M1

fichier xmi Diagramme .ecore de classe

Transformation Excution

fichier Schma xmi relationnel .ecore

Introduction

MDA

ATL

Implmentation

Bilan

M3

Ecore (intgr eclipse MOF travers EMF)


Conforme Conforme

M2

fichier xmi UML .ecore


Conforme

Spcification Fichier .atl transformation

fichier xmi CWM .ecore


Conforme

M1

fichier xmi Diagramme .ecore de classe

Transformation Excution

fichier Schma xmi relationnel .ecore

Introduction

MDA

ATL

Implmentation

Bilan

Fichier texte .km3

Spcification des mtamodles (niveau M2)

Inject dans eclipse Fichier xmi .ecore

Interprt par lditeur eclipse

Introduction

MDA

ATL

Implmentation

Bilan

Spcification des modles (niveau M1)

Fichier xmi .ecore

Introduction

MDA

ATL

Implmentation

Bilan

Spcification des modles (niveau M1)

Interprt et ditable dans eclipse

Introduction

MDA

ATL

Implmentation

Bilan

--Cre une table pour chaque classe persistante.

rule Classe_Table { from classe : MDC!ClassePersistante to t : MLRnL!Table ( name <- classe.name, isTemporary <- false Formulation dclarative ) Ce que je cherche }
Ce que je cre en correspondance

Introduction

MDA

ATL

Implmentation

Bilan

--Cre une table pour chaque classe persistante.

rule Classe_Table { from classe : MDC!ClassePersistante to t : MLRnL!Table ( name <- classe.name, isTemporary <- false Nomsdes Type de variable variables ) }

Introduction

MDA

ATL

Implmentation

Bilan

--Cre une table pour chaque classe persistante.

rule Classe_Table { from classe : MDC!ClassePersistante to t : MLRnL!Table ( name <- classe.name, Element du isTemporary <- false Metamodle source metamodle source ) Metamodle cible } Element du metamodle
cible

Introduction

MDA

ATL

Implmentation

Bilan

--Cre une table pour chaque classe persistante.

rule Classe_Table { from classe : MDC!ClassePersistante to t : MLRnL!Table ( name <- classe.name, isTemporary <- false Attributs de t Affectation dune ) valeur }

Introduction

MDA

ATL

Implmentation

Bilan

--Cre une table pour chaque classe persistante.

rule Classe_Table { from classe : MDC!ClassePersistante to t : MLRnL!Table ( name <- classe.name, isTemporary <- false Navigation vers lattribut ) name de la variable } classe (OCL)

Plan
Contexte Approche MDA ATL Exprience dimplmentation Bilan

Introduction

MDA

ATL

Implmentation
<<persistent_class>> Personne {Alias(PERS)}

Bilan

K1_PERS {Id_PERS}

Id_PERS : undefined Nom : undefined Adresse : undefined

K1_ETUD <<ID>> {Numro}

Un modle du domaine de dpart

<<persistent_class>> Enseignant {Alias(ENS)}

tuteur 0..1 * * <<persistent_class>> Stage {Alias(STG)} 1 Id_STG : undefined 0..1 Sujet : undefined Dbut : undefined Fin [0..1] : undefined 1 K1_PROP <<ID>> {ID_PROP} 0..1 K1_SOUT <<ID>> {K_STG} K1_ENT <<ID>> {Siret}

<<persistent_class>> Etudiant {Alias(ETUD)} 1 Numro : undefined

<<persistent_class>> Proposition {Alias(PROP)} Sujet : undefined Lieu : undefined Date : undefined * 1 entreprise <<persistent_class>> Entreprise {Alias(ENT)} Siret : undefined Raison_sociale : undefined Adresse : undefined

K1_STG <<ID>> {Id_STG}

Niveau M1

K2_STG <<ID>> {K_ETUD, Dbut}

<<persistent_class>> Soutenance {Alias(SOUT)} Date : undefined Salle : undefined

Introduction Le mtamodle source

MDA
<<metaclass>> DirectedRelationship

ATL

Implmentation
<<metaclass>> Element

Bilan
* constrainedElement

<<metaclass>> Relationship

<<metaclass>> Generalization * generalization

<<metaclass>> Namespace

<<metaclass>> NamedElement name : string

<<metaclass>> PackageableElement

MultiplicityElement

Niveau M2
1 general

1 specific <<metaclass>> Classifier

<<metaclass>> type Type 0..1

<<metaclass>> TypedElement

isOrdered : boolean isUnique : boolean

<<metaclass>> StructuralFeature

lowerValue 1 1 upperValue <<metaclass>> ValueS pecification * operand 0..1 specification

UML

<<metaclass>> Class

0..1 class

<<metaclass>> Association 0..1 association

<<metaclass>> AssociationClass 2..* memberEnd

* ownedAttribute <<metaclass>> Property

0..1 expression <<metaclass>> Expression symbol : string

<<metaclass>> Constraint

Introduction Le mtamodle source

MDA
<<metaclass>> Constraint

ATL
<<metaclass>> Generalization

Implmentation
<<metaclass>> Association <<metaclass>> Class

Bilan
<<metaclass>> Property

Generalisation_persistante 1 Association_persistante 1 1 propritaire Classe_persistante extrmit 1 Alias : string * * CalculerEspace() 1 1 origine 1

1..* attribut

Attribut

Niveau M2

{xor}

Symb_ID_exportable 1 /Nom : string

1 Espace_de_recherche 1 1..*

UML
*

Arc_de_composition * {disjoin} 1..* * ID * id_ci expression implicite 1..*

Extension

composant

1..*

Composant_identifiant

ID_exportable

Introduction

MDA
feature *

ATL

Implmentation
0..1 owner

Bilan

Feature

1 type * typedFeature keyRelationship feature 1..* * KeyRelationship keyRelationship * uniqueKey 1 * * /ownedElement /namespace 0..1

Classifier

StructuralFeature 1..* feature

Class

0..1 /namespace 1 ColumnSet

Attribute

UniqueKey

/ownedElement *

1..* /feature Column col * * /uniqueKey UniqueConstraint

ForeignKey

/ownedElement *

Le mtamodle cible (CWM) Niveau M2

/ownedElement 1..*

/namespace 1 0..1 /namespace

NamedColumnSet

/ownedElement PrimaryKey 1

0..1 Table /namespace

Introduction

MDA

ATL

Implmentation

Bilan

Classe

Table

Attribut

Colonne

Colonne Gnralisation Cl trangre Contrainte dunicit

Colonne Symbole ID exportable


lment du mtamodle source lment du mtamodle cible

Cl trangre Colonne Colonne Colonne Contrainte dunicit

Introduction

MDA

ATL

Implmentation

Bilan

En fonction des multiplicits des extrmits de lassociation

cas 1 Colonne Cl trangre Contrainte dunicit Colonne Colonne Cl trangre Contrainte dunicit Cl trangre Contrainte dunicit

cas 2 Association

lment du mtamodle source lment du mtamodle cible

Introduction

MDA

ATL

Implmentation

Bilan

Plan
Contexte Approche MDA ATL Exprience dimplmentation Bilan

Introduction

MDA

ATL

Implmentation

Bilan

Avantages dATL
Formulation dclarative Expression from to intuitive Adquation pour notre application

Inconvnients dATL
Mise en uvre technique Pour notre application, ergonomie faible Limitation de la forme dclarative

Introduction

MDA

ATL

Implmentation

Bilan

Sur lapproche MDA


Grande richesse et complexit de la mtamodlisation Chanage de transformations