Ingnierie des modles - PowerPoint PPT Presentation

About This Presentation
Title:

Ingnierie des modles

Description:

Affectation la propri t cible de l'objet courant. R gle Constant ... Si oui affectation de la propri t cible de l'objet courant avec le r f renc ... – PowerPoint PPT presentation

Number of Views:49
Avg rating:3.0/5.0
Slides: 32
Provided by: has62
Learn more at: http://www.kermeta.org
Category:

less

Transcript and Presenter's Notes

Title: Ingnierie des modles


1
(No Transcript)
2
Sintaks Ingénierie Dirigée par les Modèles
Appliquée à lAnalyse et la Synthèse de Syntaxe
Textuelle
  • Michel Hassenforder

3
Model-Driven Analysis and Synthesis of Concrete
SyntaxModels 2006 GenoaSosym en instance
  • Pierre-Alain Muller
  • Franck Fleurey
  • Frédéric Fondement
  • Michel Hassenforder
  • Rémi Schneckenburger
  • Sébastien Gérard
  • Jean-Marc Jézéquel

4
Model-Driven Analysis and Synthesis of Concrete
Syntax
Frédéric Fondement
Pierre-Alain Muller Franck Fleurey Michel
Hassenforder Jean-Marc Jézéquel
David Touzet Michel Hassenforder Pierre-Alain
Muller
Rémi Schneckenburger Sébastien Gérard
5
Plan
  • Introduction
  • Métamodèle de sintaks
  • Sémantique lors de la synthèse
  • Sémantique lors de l'analyse
  • Exemples
  • Conclusion

6
Introduction - Motivation
  • En général
  • Comment créer un modèle conforme à un métamodèle
  • Il existe des outils pour faire des métamodèles
  • Tous l'outillage autour de ecore
  • Il existe des outils pour faire des modèles
  • Tous l'outillage généré avec ecore
  • Dans le cadre de la création/lecture de programme
    conforme à un métamodèle
  • Grammarware compilateur (text -gt AST -gt Model)
  • Modelware text lt-gt Model

7
Introduction - Illustration
  • Un métamodèle très simple
  • Des syntaxes concrètes

Type Mail From User To User Type
User Name String Type String
Mail_at_From (User) Mail_at_To (User) User_at_Name
(String) String
8
Processus
Meta-Language (Mof, Kermeta,)
Conforme
Conforme
Métamodèle de Syntaxe concrète
Métamodèle de Syntaxe abstraite
Conforme
Conforme
Modèle
Modèle de Syntaxe concrète
Conforme
Sintaks
Texte
Transformation Bidirectionnelle
9
Métamodèle de sintaks
10
Métamodèle de sintaks
  • eClass and eStructuralFeature
  • Ponts vers le métamodèle cible
  • Rule
  • Classe abstraite de base
  • Root
  • Container de fragments (rule)
  • Donne le point de départ

11
Métamodèle de sintaks
  • Sequence
  • Une collection ordonnée de règles
  • Template
  • Spécifie la classe à utiliser du métamodèle cible
  • Spécifie la règle à appliquer
  • Terminal
  • Un texte connu et fixe lors de la modélisation
  • Un symbol terminal dans le grammarware
  • Adornment
  • Un symbole de décoration invisible comme la fin
    de ligne ou la tabulation

12
Métamodèle de sintaks
  • Value (abstraite)
  • Un ensemble de propriétés quil faut utiliser
  • PrimitiveValue
  • Une portion de texte qui provient dune ou de
    plusieurs propriétés
  • Assure la manipulation des types de base
    Integer, String, Real, Boolean,
  • Constant
  • Une valeur fixe connue à la modélisation quil
    faut affecter à une ou plusieurs propriétés
  • ObjectReference
  • Permet de manipuler les propriétés qui
    référencent un autre objet en utilisant une de
    ses propriétés comme clé (unique)
  • RuleRef
  • Permet linvocation dune règle typiquement un
    fragment possédé par Root
  • Ce concept permet le partage de règles
  • URIValue
  • Concept interne de sintaks pour sa propre syntaxe
    concrète.

13
Métamodèle de sintaks
  • Iteration
  • Permet de gérer une propriété de type container
  • Assure la gestion dun éventuel séparateur

14
Métamodèle de sintaks
  • Choice (Abstraite)
  • Ce concept permet de modéliser des variations
    dans la formulation de la syntaxe concrète
  • Il possède un ensemble de condition
  • Condition (Abstraite)
  • Ce concept permet de décrire une condition
    particulière sous la forme
  • Dune valeur que doit prendre une 'expression
  • Une règle quil faut exécuter
  • CustomCondition
  • Permet de décrire la propriété quil faut tester
  • PolymorphicCondition
  • Permet de décrire la classe quil faut tester

15
Métamodèle de sintaks
  • Choice (Abstraite)
  • Ce concept permet de modéliser des variations
    dans la formulation de la syntaxe concrète
  • Il possède un ensemble de condition
  • Alternative
  • La liste de conditions est exploitée une fois
    pour en sélectionner la plus pertinente
  • Once (expérimental)
  • La liste de conditions est exploitée
    répétitivement pour sélectionner toutes les plus
    pertinente (comparable au concept all dans un
    schéma XML)

16
Sintaks est bidirectionnel !
  • Synthèse
  • Impression par descente récursive
  • Visiteur en profondeur
  • Analyse
  • Compilateur par descente récursive
  • Comme du LL(k) (k0..)

Synthèse
Texte
Analyse
17
Sémantique lors de la synthèse
  • Règle Sequence
  • Un container de règle à invoquer en séquence
  • Règle Terminal
  • La valeur est ajoutée dans le flux de sortie
  • Ajoute des espaces pour délimiter
  • Règle Adornment
  • Selon le cas soit une tabulation (tab) soit une
    fin de ligne (eoln) est inséré dans le flux de
    sortie
  • Règle Template
  • Le template ne fait que spécifier le type de
    l'objet
  • La sous règle est invoquée pour générer le texte
    associé

blabla
blabla
blabla
1
2
3
blabla
blabla
Texte_fixe
18
Sémantique lors de la synthèse
unObject
  • Règle PrimitiveValue
  • Extrait une propriété de l'objet courant
  • Conversion en texte puis impression avec
    délimiteurs
  • Règle Constant
  • Aucun effet
  • Règle ObjectReference
  • Cherche l'objet référencé
  • Cherche la propriété utilisée comme clé
  • Conversion la valeur en texte puis impression
    avec délimiteurs
  • Règle RuleRef
  • Invoque la règle interne
  • Règle URIValue
  • Secret de fabrication ?

Propriété 10
10
blabla blabla
référence
leRéférencé
unObject
clé hello
hello
blabla blabla
19
Sémantique lors de la synthèse
blabla
blabla
blabla
sép
sép
  • Règle Iteration
  • La sous règle est invoquée pour chaque objet dans
    le container
  • Lordre utilisé est lordre du container
  • Eventuellement un séparateur est inséré entre
    chaque invocation
  • Règle Alternative
  • Chaque condition est évaluée et la première à
    vraie déclenche la règle associée
  • Règle Once
  • Itération sur lensemble des conditionset chaque
    condition valide déclenche la règle associée

1
2
3
unObject
prop1 10 prop2 hello prop3 true
blabla blabla
hello
unObject
prop1 10 prop2 hello prop3 true
10
hello
true
blabla blabla
20
Sémantique lors de la synthèse
  • PolymorphicCondition valeur, metaClasse,
    objetCourant
  • Que peut-on tester ?
  • valeur"" objetCourant.class metaClasse
  • valeur"null" objetCourant.class null
  • valeur"any" objetCourant.class ! null
  • valeur"equals" objetCourant.class metaClasse
  • valeur"differs" objetCourant.class ! metaClasse
  • CustomCondition valeur, propriété, objetCourant
  • Que peut-on tester ?
  • valeur"" faux
  • valeur"null" objetCourant.propriété null
  • valeur"any" objetCourant.propriété ! null
  • valeur"empty" ((String) objetCourant.propriété).l
    ength 0
  • ((List) objetCourant.propriété).size 0
  • valeur"filled" ((String) objetCourant.propriété).
    length ! 0
  • ((List) objetCourant.propriété).size ! 0

Kermeta à laide
21
Sémantique lors de lanalyse
  • Analyseur lexical
  • Supprime les espaces blancs (espace, tabulation,
    fin de ligne, )
  • Découpage mot par mot (un mot est délimité par
    des espaces blancs)
  • Sait revenir à une position antérieur
    particulière
  • Règle Sequence
  • Un container de règle à invoquer en séquence sans
    échouer
  • Si on échoue, annulation de la séquence,
    backtracking pour restituer létat initial
  • Règle Terminal
  • Une valeur est extraite du flux dentrée
  • Si elle correspond elle est consommée, sinon
    erreur
  • Règle Adornment
  • Rien, car les espaces blancs sont déjà supprimés
  • Règle Template
  • La metaClasse est instanciée et devient lobjet
    courant
  • La sous règle est invoquée pour continuer
    lanalyse

blabla
blabla
Texte_fixe
22
Sémantique lors de lanalyse
unObject
  • Règle PrimitiveValue
  • Extrait un mot du flux dentrée
  • Conversion vers le type de la propriété cible
  • Affectation à la propriété cible de lobjet
    courant
  • Règle Constant
  • Conversion de la valeur incluse vers le type de
    la propriété cible
  • Affectation à la propriété cible de lobjet
    courant
  • Règle ObjectReference
  • Extrait un mot du flux dentrée
  • Recherche dans le modèle courant avec la
    propriété clé un objet capable dutiliser la clé
  • Vérification que la valeur de la clé sur cet
    objet est celle extraite du flux
  • Si oui affectation de la propriété cible de
    lobjet courant avec le référencé
  • Sinon création dun fantôme qui devra être résolu
    plus tard
  • Règle RuleRef
  • Invoque la règle interne

Propriété
10
blabla
blabla
unObject
blabla
blabla
10
Propriété
Modèle
référence
leRéférencé
clé hello
unObject
blabla
blabla
hello
23
Sémantique lors de lanalyse
blabla
blabla
10
sép
sép
  • Règle Iteration
  • La sous règle est invoquée jusquà échec
  • Chaque invocation avec succès permet linsertion
    dans le container
  • Eventuellement un séparateur est analysé entre
    chaque invocation
  • Règle Alternative
  • Une Itération sur lensemble des conditions
  • Chaque règle dans chaque condition est évaluée
  • La première qui analyse avec succès stoppe
    litération
  • Après chaque erreur, lanalyseur revient en
    arrière
  • Règle Once
  • Répétition de lItération sur lensemble des
    conditions
  • Jusquà ce quune itération ne trouve pas de
    condition satisfaisante
  • La première qui analyse avec succès stoppe
    litération
  • Après chaque erreur, lanalyseur revient en
    arrière
  • Condition
  • Les 'expressions' ne sont pas évaluées

1
2
(en EBNF x a b c)
(en EBNF x (a b c) )
24
Exemples
  • Exemple 1 Type
  • Exemple 2 Expression notation préfixée
  • Exemple 2 Expression - notation infixée

25
Example 1 Type / MetaModel Model
Type Mail From User To User Type
User Name String Type String
26
Exemple 1 Type / Modèle de syntaxe concrète
Travaille sur la classe 'Model'
Opère sur la collection 'chidren'
Travaille sur la classe 'Type'
Mot clé Type
Extraction de la propriété 'name'
La liste 'attributes' est vide
Un simple point-virgule
Des accolades pour encadrer la liste
Un saut de ligne pour faire joli
Opère sur la collection 'attributes'
Travaille sur la classe 'Attribute'
Extraction de la propriété 'name'
Référence lobjet dans le modèle qui possède
lattribut 'name' qui a la valeur extraite
du flux
27
Exemple 1 Type / Modèle de syntaxe concrète
Travaille sur la classe 'Model'
Invoque le fragment bon cest le Template Type
Travaille sur la classe 'Type'
Invoque le fragment bon cest le Template
Attribut
Travaille sur la classe 'Attribute'
28
Exemple 2 metamodèle dExpression
29
Exemple 2 Expression / préfixée
Notation préfixée operator ( operator ( 3
, 2 ) , 1 )
En BNF expr operator ( expr , expr
) operator ( expr , expr ) integer
Notation infixée 3 2 1
30
Exemple 2 Expression / infixée
  • ltAdditiveOpgt ltTermgt ltExprgt
  • ltMultiplicativeOpgt ltFactorgt ltTermgt
  • ltNumberIntegergt 0-9
  • ltExpressiongt ltAdditiveOpgt
  • ltTermgt
  • ltTermgt ltMultiplicativeOpgt
  • ltFactorgt
  • ltFactorgt ltNumberIntegergt

31
Conclusion
  • Spécification une syntaxe concrète textuelle
  • Mapping bidirectionnel
  • Syntaxe concrète vers syntaxe abstraite
  • Syntaxe abstraite vers syntaxe concrète
  • Un outil
  • Lecture par descente récursive
  • Impression par visite en profondeur
Write a Comment
User Comments (0)
About PowerShow.com