Approche MDA pour la transformation d’un modèle UML en un...
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