Approche MDA pour la transformation d’un modèle UML en un...

Post on 06-Mar-2021

2 views 0 download

Transcript of Approche MDA pour la transformation d’un modèle UML en un...

Approche MDA pour la transformation d’unmodèle UML en un

schéma CWM

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

Georges Louis

Plan

• Introduction• Approche MDA (Model Driven Architecture)

• ATL (Atlas Transformation Language)

• Expérience d’implémentation• Bilan

Plan

• Introduction• Approche MDA (Model Driven Architecture)

• ATL (Atlas Transformation Language)

• Expérience d’implémentation• Bilan

• Conception de base de données• Les AGL existants présentent des

inconvénients:– Non respect de la forme normale – Manque d’ergonomie

• Une nouvelle méthode– Normalisation_L– Un processus complet

Introduction MDA ATL Implémentation Bilan

CalculsAnnotations

Génération de code SQL

Calculs

Diagramme de classe

Schéma relationnelTransformation

BDD

Introduction MDA ATL Implémentation Bilan

Choix

Manuel

Automatique

Processus

Plan

• Introduction• Approche MDA (Model Driven Architecture)

• ATL (Atlas Transformation Language)

• Expérience d’implémentation• Bilan

• Model Driven Architecture (Standard OMG) - 2001

• Model Driven Engineering – 1980’s

• Ingénierie Dirigée par les Modèles (IDM)

Introduction ATL Implémentation BilanMDA

• Modèle: « Abstraction, vue incomplète, simplification, description, représentation de quelque chose »

Terrain Carte

Évolution de valeurs Modèle financier

Suite d’opérations, de calculs

Programme informatique

Est représenté par

Introduction ATL Implémentation BilanMDA

• Metamodèle: « Langage de définition d’un modèle »

Carte Légende

Modèle financier Langage mathématique

Programme informatique

Grammaire Java, C#, Smalltalk…(documentation)

Est conforme à

Introduction ATL Implémentation BilanMDA

• Meta-metamodèle : « description du langage utilisé pour l’expression d’un metamodèle »

Légende, échelle

Langage mathématique

Grammaire Java, C#, Smalltalk… (documentation)

Langage naturel ouLangage spécifique àla définition de méta-modèles.

Est conforme à

Introduction ATL Implémentation BilanMDA

… …

Meta-meta-metamodèle M4

Meta-metamodèle M3

Metamodèle M2

modèle M1

réalité M0

Est conforme à

Est conforme à

Est représenté par

Est conforme à

Est conforme à

Introduction ATL Implémentation BilanMDA

Meta-metamodèle M3 MOF

Metamodèle M2 UML 2.0

Diagramme de classes

Système

modèle M1

réalité M0

Est conforme à

Est conforme à

Est représenté par

Est conforme à

Introduction ATL Implémentation BilanMDA

Transfo PIM

• Séparer les réflexions de conception des tâches d’implantation.

• Avec des modèles:

CIM: Computation Independant Model

CIM

PIM: Platform Independant Model

Introduction ATL Implémentation BilanMDA

TransfoTransfo 1 PSMPSM 1

• Séparer les réflexions de conception des tâches d’implantation.

• Avec des modèles:

PIM: Platform Independant Model

PIM

PSM: Platform Specific Model

PSM 2Transfo 2

PSM 3Transfo 3

Introduction ATL Implémentation BilanMDA

Introduction ATL Implémentation BilanMDA

Manuel

CalculsAnnotations

Calculs

Génération de code SQL BDD

Choix

Introduction ATL Implémentation BilanMDA

Diagramme de classe

Schéma relationnelTransformation

Automatique

Processus

:Table :Column

:Column:Column

:Column

:Column

:Column

:Column

:Column

:PrimaryKey

:UniqueConstraint :UniqueConstraint

:UniqueConstraint

/ownedElement

/uniqueKey/uniqueKey

isNullable=columnNullable

isNullable=columnNullable

Name=SOUT.ID_STGisNullable=columnNullable

/uniqueKey

Name=Stage

/namespace

Name=Début

col

/feature

/uniqueKey /ownedElement

/namespace

/feature

Name=Tuteur

Name=Fin

col

colName=Numéro

col

/feature

Name=ID_PROP

col

/ownedElement/uniqueKey

/feature

Name=ID_STG col

/namespace

Name=Sujet

col

col/namespace

/ownedElement

/feature

Stage:Classe_persistante

Sujet:Attribut

Debut:Attribut

Fin:Attribut

Un:Expression

Zéro:Expression

Id_STG:Attribut

Alias=STG

name=Id_STG

propriétaire

attribut

name=Stage

name=Sujet

name=Debut

attribut

propriétaire

attribut

propriétaire

name=Fin

propriétaireattribut

symbol=1

upperValue

symbol=0

lowerValue

Introduction MDA ATL Implémentation Bilan

Stage

Id_STG : integerSujet : stringDébut : charFin [0..1] : char

Stage

Id_STG : integerSujet : stringDebut : charNuméro : integerID_PROP : integerSOUT.ID_STG : integerTuteur : stringFin : char

{Unique}

{Unique}

{Unique}

Id_STG : integerSujet : stringDebut : charNuméro : integerID_PROP : integerSOUT.ID_STG : integerTuteur : stringFin : char

+ Clé étrangères

Diagramme de classe

UML

Schéma relationnel

CWM

Conforme à

Conforme à

Spécificationtransformation

M1

M2

MOF

Conforme à

Conforme à

M3

Transformation

Introduction ATL Implémentation BilanMDA

Plan

• Contexte• Approche MDA (Model Driven Architecture)

• ATL (Atlas Transformation Language)

• Expérience d’implémentation• Bilan

• Langage de programmation de transformation de modèle

• Développé à l’INRIA de Nantes sur la plateforme eclipse

• Réponse à la proposition RFP QVT (Query ViewTransformation)

• De gros effort de promotion, une foule d’exemples disponibles

• En exploitation dans l’industrie (France Telecom, Thales…)

Introduction MDA Implémentation BilanATL

Diagramme de classe

UML

Schéma relationnel

CWM

Conforme à

Conforme à

Spécificationtransformation

M1

M2

MOF

Conforme à

Conforme à

M3

Transformation

Introduction MDA Implémentation BilanATL

Diagramme de classe

UML

Schéma relationnel

CWM

Conforme à

Conforme à

Spécificationtransformation

M1

M2

MOF

Conforme à

Conforme à

M3

Transformation

fichier xmi .ecore

fichier xmi .ecoreFichier .atl

Ecore (intégré à eclipse à travers EMF)

Exécution

Introduction MDA Implémentation BilanATL

fichier xmi .ecore

fichier xmi .ecore

Diagramme de classe

UML

Schéma relationnel

CWM

Conforme à

Conforme à

Spécificationtransformation

M1

M2

MOF

Conforme à

Conforme à

M3

Transformation

fichier xmi .ecore

fichier xmi .ecoreFichier .atl

Ecore (intégré à eclipse à travers EMF)

Exécution

Introduction MDA Implémentation BilanATL

fichier xmi .ecore

fichier xmi .ecore

Fichier xmi .ecore

Fichier texte .km3

Interprété par l’éditeur eclipse

« Injecté » dans eclipse

Introduction MDA ATL Implémentation BilanSpécification des métamodèles (niveau M2)

Fichier xmi .ecore

Introduction MDA Implémentation BilanATLSpécification des modèles (niveau M1)

Interprété et éditable dans

eclipse

Introduction MDA Implémentation BilanATLSpécification des modèles (niveau M1)

--Crée une table pour chaque classe persistante.rule Classe_Table {

from classe : MDC!ClassePersistanteto t : MLRnL!Table (

name <- classe.name,isTemporary <- false

)} Ce que je cherche

Ce que je crée en correspondance

Formulation déclarative

Introduction MDA Implémentation BilanATL

--Crée une table pour chaque classe persistante.rule Classe_Table {

from classe : MDC!ClassePersistanteto t : MLRnL!Table (

name <- classe.name,isTemporary <- false

)}

Noms de variableType des variables

Introduction MDA Implémentation BilanATL

--Crée une table pour chaque classe persistante.rule Classe_Table {

from classe : MDC!ClassePersistanteto t : MLRnL!Table (

name <- classe.name,isTemporary <- false

)}

Metamodèle source

Metamodèle cible

Element du metamodèle source

Element du metamodèlecible

Introduction MDA Implémentation BilanATL

--Crée une table pour chaque classe persistante.rule Classe_Table {

from classe : MDC!ClassePersistanteto t : MLRnL!Table (

name <- classe.name,isTemporary <- false

)}

Attributs de tAffectation d’une valeur

Introduction MDA Implémentation BilanATL

--Crée une table pour chaque classe persistante.rule Classe_Table {

from classe : MDC!ClassePersistanteto t : MLRnL!Table (

name <- classe.name,isTemporary <- false

)}

Navigation vers l’attribut name de la variable classe (OCL)

Introduction MDA Implémentation BilanATL

Plan

• Contexte• Approche MDA• ATL• Expérience d’implémentation• Bilan

<<persistent_class>>

{Alias(SOUT)}Soutenance

<<persistent_class>>

{Alias(ENT)}Entreprise

<<persistent_class>>

{Alias(ENS)}Enseignant

<<persistent_class>>

{Alias(PROP)}Proposition

<<persistent_class>>

{Alias(ETUD)}Etudiant

<<persistent_class>>

{Alias(STG)}Stage

K1_ENT <<ID>>{Siret}

K1_SOUT <<ID>>{K_STG}

K1_PROP <<ID>>{ID_PROP}

K1_STG <<ID>>{Id_STG}

K2_STG <<ID>>{K_ETUD, Début}

<<persistent_class>>

{Alias(PERS)}Personne

K1_PERS {Id_PERS}

Raison_sociale : undefined Date : undefined

0..1

Id_PERS : undefinedNom : undefinedAdresse : undefined

tuteur

0..1Numéro : undefined1

**

Siret : undefined

Sujet : undefinedLieu : undefinedDate : undefined

entreprise1

*

1Id_STG : undefinedSujet : undefinedDébut : undefinedFin [0..1] : undefined

0..1

1

Adresse : undefined Salle : undefined

K1_ETUD <<ID>>{Numéro}

Un modèle du domaine de départ

Niveau M1

Introduction MDA ATL BilanImplémentation

Le métamodèle source

Niveau M2

<<metaclass>>AssociationClass

<<metaclass>>Class

<<metaclass>>Association

<<metaclass>>Classifier

<<metaclass>>Property

<<metaclass>>Constraint

<<metaclass>>Generalization

<<metaclass>>NamedElement

<<metaclass>>StructuralFeature

<<metaclass>>TypedElement

MultiplicityElement

<<metaclass>>ValueSpecification

<<metaclass>>PackageableElement

<<metaclass>>Expression

<<metaclass>>Namespace

<<metaclass>>Type

<<metaclass>>Element

<<metaclass>>DirectedRelationship

<<metaclass>>Relationship

isOrdered : booleanisUnique : boolean

general1

generalization*

1 specific

name : string

0..1

type

constrainedElement

*

0..1 2..*

memberEnd

association

symbol : string

* operand

0..1 expression

0..1

class

*ownedAttribute

1upperValue

lowerValue1

specification

0..1

UML

Introduction MDA ATL BilanImplémentation

Le métamodèle source

Niveau M2

ID

Symb_ID_exportableClasse_persistante

Arc_de_composition Espace_de_recherche

Composant_identifiant

Attribut

<<metaclass>>Constraint

<<metaclass>>Class

<<metaclass>>Property

<<metaclass>>Generalization

<<metaclass>>Association

Generalisation_persistante

Association_persistante

{xor}

{disjoin}

ID_exportable

1

1..*

attribut

1

composant

1

1..*expression impliciteid_ci*

* *

*

1..**

1

Alias : string

CalculerEspace()

origine 1

1

1

extrémité

*

1

1

propriétaire1

*

/Nom : string

1..*

1..*

UML

Extension

Introduction MDA ATL BilanImplémentation

Le métamodèle cible (CWM)

Niveau M2

UniqueKey

KeyRelationship

ColumnSet

NamedColumnSet

Table

ColumnForeignKey

PrimaryKey

UniqueConstraint

StructuralFeature Class

Feature Classifier

Attribute

type1

ownerfeature 0..1*

/ownedElement

/ownedElement1..* /feature

feature

*

1..* feature 1..*

* typedFeature

*

*/ownedElement

keyRelationship

*

uniqueKey 1

keyRelationship

*

*/uniqueKeycol *

*

0..1

/ownedElement /namespace

1..* 1

/ownedElement

1

0..1

/namespace

/namespace

0..1

/namespace0..1

1

/namespace

Introduction MDA ATL BilanImplémentation

TableClasse ColonneAttribut

Généralisation

Colonne

Clé étrangère

Contrainte d’unicité

Symbole ID exportable

Colonne

Clé étrangère

ColonneColonneColonne

Contrainte d’unicitéÉlément du métamodèle source

Élément du métamodèle cible

Introduction MDA ATL BilanImplémentation

Association

En fonction des multiplicités des extrémités de l’association

ColonneClé étrangère

cas 1

Contrainte d’unicité

ColonneClé étrangère

Contrainte d’unicitécas 2

Colonne

Clé étrangèreContrainte d’unicité

Introduction MDA ATL BilanImplémentation

Élément du métamodèle source

Élément du métamodèle cible

Introduction MDA ATL BilanImplémentation

Plan

• Contexte• Approche MDA• ATL• Expérience d’implémentation• Bilan

• Avantages d’ATL– Formulation déclarative– Expression « from to » intuitive– Adéquation pour notre application

• Inconvénients d’ATL– Mise en œuvre technique– Pour notre application, ergonomie faible– Limitation de la forme déclarative

Introduction MDA ATL Implémentation Bilan

• Sur l’approche MDA– Grande richesse et complexité de la

métamodélisation– Chaînage de transformations

Introduction MDA ATL Implémentation Bilan