Facilités de typage pour lingénierie des langages Dr. Frédéric MALLETRapporteurUniversité de...
-
Upload
aymeric-gon -
Category
Documents
-
view
109 -
download
2
Transcript of Facilités de typage pour lingénierie des langages Dr. Frédéric MALLETRapporteurUniversité de...
Facilités de typage pour l’ingénierie des langages
Dr. Frédéric MALLET Rapporteur Université de Nice Sophia Antipolis
Pr. Pierre-Etienne MOREAU Rapporteur Ecole des Mines de Nancy
Dr. Laure GONNORD Examinateur Université Claude Bernard Lyon 1
Dr. Marc PANTEL Examinateur Institut National Polytechnique de Toulouse
Pr. Olivier RIDOUX Examinateur Université de Rennes 1
Pr. Jean-Marc JEZEQUEL Directeur Université de Rennes 1
Dr Benoit COMBEMALE Co-encadrant Université de Rennes 1, Inria
Pr. Steven DERRIEN Co-encadrant Université de Rennes 1
Clément Guy
10 décembre 2013
Systèmes logiciels complexes
Préoccupations diverses
Nombre & complexité ↗
2
Systèmelogiciel
Ingénierie dirigée par les modèles
Séparation des préoccupations1 préoccupation = 1 modèleModèle = Représentation d'un aspect du
système dans un but donné
CapitalisationLangages de modélisation dédiés (DSMLs)
3
Langage de modélisation dédié (DSML)
Langage de modélisationModèle = "Phrase" du langage
Langage dédiéSpécifique à 1 préoccupation/domaineConcepts et outillage spécifique
4
Coûts de définition et d’outillage des DSMLs
Besoin d’outils
Public restreintDéfinition et outillage à partir de 0
⇒ Besoin d’outils et de méthodes pour ↘ les coûts
5
Compilateurs model-based
6
Extraction de CFG, passage en forme SSA, élimination de code mort…
OrccOpen RVC-CAL Compiler
Extraction de CFG, passage en forme SSA, élimination de code mort…
C
C
VHDL
RVC-CALLLVM
Problématique
Fournir des facilités pour la définition et l’outillage des
langages de modélisation dédiés
7
Plan
Etat de l’art & LimitesMétamodélisationFacilités d’ingénierieTypage de modèles
Facilités de typageImplémentation & ValidationConclusion & Perspectives
8
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Métamodélisation
Définition et outillage d’un DSMLMétamodèle = <AS, CS, Sem>
AS : Syntaxe abstraiteConcepts du langage/de la
préoccupation
CS : Syntaxe concrèteReprésentation utilisateur
Sem : SémantiqueSens des modèles
9
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Métamodélisation
Exemple : Graphes de flot de contrôle (CFG)
Représentation intermédiaire
10
var x, yx := read()y := read()
y > 1
x := x * xy := y - 1
print(y)
Bloc de base
Instruction
Saut
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Métamodélisation
Instruction
Syntaxe abstraite (AS)
Graphe de classesModèle = Ensemble d’objets
11
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Métamodélisation
Syntaxe concrète (CS) et Sémantique (Sem)
Transformations de modèlesFonctions de modèles
Exemples :VisualisationAnalyse d’atteignabilitéFrontière de dominanceDétection de boucles…
12
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Métamodélisation
Relation de conformité
Entre modèle et ASS’appuie sur l’instanciation
13
<<conformeÀ>>
<<instanceDe>>
<<instanceDe>>
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Métamodélisation
Limites de la conformité
Instanciation : 1 objet → 1 classeConformité : 1 modèle → 1 DSML
polymorphisme de modèle réutilisation d'outils entre DSMLs
14
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Métamodélisation
Exemple
15
Visualisation, détection de boucles…
<<conformeÀ>>
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Métamodélisation
…
Plan
Etat de l’art & LimitesMétamodélisationFacilités d’ingénierieTypage de modèles
Facilités de typageImplémentation & ValidationConclusion & Perspectives
16
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Modélisation in-the-large [1]
Modèles et leurs relations :entités de 1ère classe
Mégamodèles = Modèles + Relations [2,3…]
17[1] Bézivin et al., ECMFA 03 ;[2] Barbero et al., ECMFA 07 ; [3] Favre, Dagsthul 04 ;
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Facilités d’ingénierie
Réutilisation detransformations de modèles
Transformations génériques [4,5…]
Structures ≠ ASConcepts, templates, motifs variables
Transformations composites [6,7…]
Basées sur l’AS + autres informationsContraintes, opérations CRUD
18[4] Varrò et Pataricza, UML 04 ; [5] De Lara et Guerra., MoDELS 10 ;[6] Oldevik, DAIS 05 ; [7] Kleppe, ECMFA 06 ;
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Facilités d’ingénierie
Limites des approches existantes
19
Syntaxe abstraite
Autres informations
Concept
<<liéÀ>>
Mégamodèle
<<contient>>
Template <<étend>>
Motif variable<<correspondÀ>>
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Facilités d’ingénierie
Plan
Etat de l’art & LimitesMétamodélisationFacilités d’ingénierieTypage de modèles
Facilités de typageImplémentation & ValidationConclusion & Perspectives
20
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Facilités fournies par les systèmes de types objets
AbstractionEntités de 1ère classeSéparation interface/implémentation
RéutilisationPolymorphisme & Héritage
Analyses statiquesDétection d'erreurs, auto-complétion...
21
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Typage de modèles
22
Animal a = Animal.newNourriture n = Nourriture.newa.mange = n
Limites dusous-typage objet
Animal a = Vache.newNourriture n = Nourriture.newa.mange = n
Animal a = Vache.newNourriture n = Herbe.newa.mange = n
Animal a = Vache.newNourriture n = Hamburger.newa.mange = n
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Typage de modèles
23
Polymorphisme degroupes de types [8]
avec le sous-typage objet
Animal a = Animal.newNourriture n = Nourriture.newa.mange = n
√ avec la correspondance (<#) [9]
[8] Ernst, ECOOP 01 ;[9] Bruce et al., TOPLAS 03 ;
<# <#
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Typage de modèles
Typage de modèles [10]
Type de modèles = Graphe de classesRéutilisation = Sous-typage + Génériques
Paramètre de type de modèlesTypes chemin-dépendants
24
class ReachabilityAnalyzer[MT <: CFG] {operation analysis() Set[MT::Node] is do
…end
}
modeltype CFG {ControlFlowGraph,Node,
}
[10] Steel et Jézéquel, SoSyM 07
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Typage de modèles
Limites du typage de modèles
25
Métamodèle
Classe
Modèle conforme
Modèle typé
???
???
<<instanceDe>> <<conformeÀ>>
<<référence>> <<composéDe>>
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Typage de modèles
Type de modèle
Limites
Conformité polymorphisme
Facilités existantes combinaison/comparaison
Typage de modèles séparation interface-implémentation séparation small-large
26
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Plan
Etat de l’art & LimitesFacilités de typage
Relations d’instanciation & de typageRelations de sous-typage
Implémentation & ValidationConclusion & Perspectives
27
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Objectif
Amener les facilités de typage objetAbstractionRéutilisationAnalyses statiques…
Aux modèles et aux DSMLsConformité → Instanciation & Typage
28
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Interface et implémentation
InterfaceChamps, signatures d’opérationsTypes objets & Types de modèles
ImplémentationConstructeurs, opérationsClasses & Métamodèles
29
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Modélisation in-the-smallet modélisation in-the-large
Modélisation in-the-smallObjetsTypes objets & ClassesChamps & Opérations
Modélisation in-the-largeModèlesTypes de modèles & MétamodèlesChamps & Opérations de modèles
30
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
METAL : métalangage pour la modélisation in-the-large
31
Type de modèles
Métamodèle
Type objetClasse
<<sousTypeDe>>
<<sousTypeDe>>
<<hériteDe>>
<<hériteDe>>
<<implémente>>
<<implémente>>
<<composéDe>> <<composéDe>>
Modèle
<<typéPar>> <<instanceDe>>
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Objet
<<typéPar>> <<instanceDe>>
<<composéDe>>
Plan
Etat de l’art & LimitesFacilités de typage
Relations d’instanciation & de typageRelations de sous-typage
Implémentation & ValidationConclusion & Perspectives
32
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Objets, types objets et classes
Type objet : InterfaceChamps, signatures d’opérations
Classe : ImplémentationOpérations, constructeurs
33
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Typage & Instanciation
Métamodèles
Implémentation des modèlesClassesOpérations de modèlesConstructeurs
34
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Typage & Instanciation
Relation d’instanciation
1 modèle → 1 métamodèleRéserver l’espace mémoire
Champs de modèlesTable des opérations de modèles
35
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Typage & Instanciation
Types de modèles
Interfaces des modèlesTypes objetsChamps de modèlesSignatures d’opérations de modèles
36
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Typage & Instanciation
Type exact d’un modèle m
Type le plus précis de mTous les types objetsTous les champs de modèlesToutes les signatures d’opérations de
modèles
Extrait du métamodèle de m
37
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Typage & Instanciation
Relation de typage
Ensemble des types d’un modèle=
Type exact+
Super-types(Type exact)
38
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Typage & Instanciation
Plan
Etat de l’art & LimitesFacilités de typage
Relations d’instanciation & de typageRelations de sous-typage
Implémentation & ValidationConclusion & Perspectives
39
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Sous-typage entretypes de modèles
Substitution sûre de modèlesRelation de correspondance (<#)
entre types objetsentre signatures d’opérationsentre champs
2 critèresHétérogénéités structurellesContexte d’utilisation
40
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Relations de sous-typage
Correspondance detypes objets
41
T’ <# T ssi :T’.name = T.name∀ op ∈ T.ownedSignature
∃ op’ ∈ T’.ownedSignature tel que op’ <# op
∀ c ∈ T.ownedProperty ∃ c’ ∈ T’.ownedProperty tel que c’ <# c
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Relations de sous-typage
METAL (M3)
Correspondance designatures d’opérations
42
op’ <# op ssi :op’.name = op.nameop’.type <# op.type∃ p ∈ op.ownedParameter ⇔
∃ p’ ∈ T’.ownedParameter tel que :p’.type <# p.typep’.lower = p.lowerp’.upper = p.upperp’.isUnique = p.isUniquep’.isOrdered ⇒ p.isOrdered
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Relations de sous-typage
METAL (M3)
Correspondance dechamps
43
c’ <# c ssi :c’.name = c.namec’.type <# c.typec’.lower = c.lowerc’.upper = c.upperc’.isComposite = c.isCompositec’.isUnique = c.isUniquec’.isReadOnly ⇒ c.isReadOnlyc.isOrdered ⇒ c’.isOrderedc.opposite ≠ void ⇒ c’.opposite ≠ void
∧ c.opposite.name =c’.opposite.name
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Relations de sous-typage
METAL (M3)
Hétérogénéités structurellesIsomorphique
Information =Structure =Isomorphisme de sous-graphe
Correspondances
Non-isomorphiqueInformation =Structure ≠Adaptation de modèles
MT2
MT1
44
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Relations de sous-typage
Contexte d’utilisation
TotaleSubstitution partout
PartielleSubstitution
dans un contextepour une
transformationdonné(e)
Extraction de type effectif
MT2
MT1
MT2’
45
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Relations de sous-typage
4 Relations de sous-typageTotale isomorphique
Correspondance
Partielle isomorphique+ Extraction
Totale non-isomorphique+ Adaptation
Partielle non-isomorphique+ Extraction+ Adaptation
B1 <# B2
A1 <# A2
<<totalIso>>
<<totalIso>>
<<partialIso>>
A1’ <# A2
<<totalIso>>
B1 <# B2
f(A1)
<<totalIso>>
<<totalNoniso>><<partialNoniso>>
46
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Relations de sous-typage
Plan
Etat de l’art & LimitesFacilités de typageImplémentation & Validation
ImplémentationValidation
Conclusion & Perspectives
47
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Implémentation d’un système de types
Dans l’environnement KermetaSous-typage total isomorphique
Appliqué au passage en forme Static Single Assignment
48
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Plan
Etat de l’art & LimitesFacilités de typageImplémentation & Validation
ImplémentationValidation
Conclusion & Perspectives
49
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Compilateur Kermeta
50
Kermeta Model IR
KMT AspectNode
KMT AspectControlFlowGraph
Vérificateur detypes
interface ControlFlowGraph { [...] }interface Node { [...] }class ControlFlowGraphImpl { [...] }class NodeImpl { [...] }class Factory { [...] }
Moteur d’exécution
trait ControlFlowGraphAspect { [...] }trait NodeAspect { [...] }class RichControlFlowGraph { [...] }class RichNode { [...] }class Factory { [...] }
trait ControlFlowGraphAspect { [...] }trait NodeAspect { [...] }trait IControlFlowGraph { [...] }trait INode { [...] }class RichControlFlowGraph { [...] }class RichNode { [...] }class Factory { [...] }trait MT_CFG_Simple { [...] }trait MM_CFG_Simple { [...] }class RichDSML_CFG_Simple { [...] }trait IFactory_CFG_Simple { [...] }object RichFactory_CFG_Simple { [...] }
Ecore
JVM
Kermeta
KMT AspectNode
KMT AspectControlFlowGraph
KMT Metamodel
Java
Scala
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Implémentation
Front-end Kermeta
CS Kermeta
Vérificateur de typesSous-typage total isomorphiqueRelation de correspondance
51
metamodel CFG_Dominance {subtypeof CFG_Simpleoperation computeDominanceFrontier(m : MT) is do
[…]var s : Set[^Node] init Set[^Node].new
[…]end
}
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Implémentation
var m : CFG_Dominance init CFG_Dominance.newm.computeDominanceFrontier()
Back-end Kermeta
52
Métamodèle
Type objet
Classe
Type de modèles
class NodeAspect {[…]
}
trait INode {type ControlFlowGraph <: IControlFlowGraphtype Node <: INode[…]def getNext() : Set[Node]
}
class NodeAspect extends INode {type ControlFlowGraph = ControlFlowGraphAspecttype Node = NodeAspect[…]
}
trait MT_CFG_Dominance extends MT_CFG_Simple {type ControlFlowGraph <: IControlFlowGraphtype Node <: INode[…]def computeDominanceFrontier(m : MT)
}
class MM_CFG_Dominance extends MT_CFG_Dominance {type ControlFlowGraph = ControlFlowGraphAspecttype Node = NodeAspect[…]def computeDominanceFrontier(m : MT) {
[…]var s : Set[Node] = new Set[Node][…]
}}
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Implémentation
Plan
Etat de l’art & LimitesFacilités de typageImplémentation & Validation
ImplémentationValidation
Conclusion & Perspectives
53
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Passage en formeStatic Single Assignment
Passe de compilation courante1 variable → 1 définition
Usage → Définition
Insertion de Ф-fonctions
54
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Validation
x := 0if (cond) then
x := x + 1endy := x + 1
x1 := 0if (cond) then
x2 := x1 + 1endx3 := Ф(x1, x2)y1 := x3 + 1
Implémentation Kermeta
Frontière de dominanceInsertion deФ-fonctionsRenommage de variables
55
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Validation
Adaptation pour GeCoS
56
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Validation
Symbol
Symbol
ScopeControlFlowGraph Procedure
Instruction Instruction_add is do
if not scope.isVoid thenscope.symbols.add(_element)
endend_remove is do
if not scope.isVoid thenscope.symbols.remove(_element)
endend
}
aspect class Procedure {property symbols : Set[Symbol]
_get is doresult := Set[Symbol].newif not scope.isVoid then
result.addAll(scope.symbols)end
end
Plan
Etat de l’art & LimitesFacilités de typageImplémentation & ValidationConclusion & Perspectives
ConclusionPerspectives
57
Etat de l’art & Limites – Facilités de typage – Conclusion & Perspectives
Conformité →Typage & Instanciation
Facilités de définition et d’outillage des
DSMLTypes de modèles & Métamodèles
AbstractionDétection d’erreurs
Sous-typage & HéritageRéutilisation
58
Etat de l’art & Limites – Facilités de typage – Conclusion & Perspectives
Conclusion
Une famille desystèmes de types
59
4 Relations de sous-typage
2 CritèresDéclaration & Vérification
Mécanisme d’héritage
Système de types
Etat de l’art & Limites – Facilités de typage – Conclusion & Perspectives
Conclusion
Plan
Etat de l’art & LimitesFacilités de typageImplémentation & ValidationConclusion & Perspectives
ConclusionPerspectives
60
Etat de l’art & Limites – Facilités de typage – Conclusion & Perspectives
Etendre letypage de modèles
61
Etat de l’art & Limites – Facilités de typage – Conclusion & Perspectives
Conclusion
4 Relations desous-typage
2 Critères Déclaration & Vérification
Mécanismed’héritage
Système detypes
Fonctions de modèles
Adaptations
Types de modèles
Structure Contraintes ComportementStructure
Types de modèles
ContraintesComportement
Fonctions de modèles
Adaptations
InférenceBidirectionnalitéInférenceBidirectionnalité
Questions
62
class MM_CFG {type ControlFlowGraph = ControlFlowGraphAspecttype Node = NodeAspect[…]def computeDominanceFrontier[MT <: MT_CFG](m : MT) {
[…]var s : Set[Node] = new Set[Node][…]
}}
trait MT_CFG_Dominance extends MT_CFG_Simple {type ControlFlowGraph <: IControlFlowGraphtype Node <: INode[…]def computeDominanceFrontier[MT <: MT_CFG](m : MT)
}
On Model SubtypingGuy, Combemale, Derrien et Jézéquel, ECMFA, 2012
Bridging the chasm between MDE and the world of compilationJézéquel, Combemale, Derrien, Guy et Rajopadhye, SoSyM, 2012
Model-Driven Engineering and Optimizing Compilers: A Bridge Too Far?Floch, Yuki, Guy, Derrien, Combemale, Rajopadhye et France, MoDELS, 2011
Vers un rapprochement de l'IDM et de la compilationGuy, Derrien, Combemale et Jézéquel, IDM, 2011
Bibliographie[1] Modeling in the large and modeling in the small, Bézivin et al.,
ECMFA 03[2] Traceability and provenance issus in global model management,
Barbero et al., ECMFA 07[3] Foundations of of Favre of Model Driven Engineering, Dagsthul 04[4] Generic and meta-transformations for model transformation
engineering, Varrò et Pataricza, UML 04[5] Generic meta-modelling with concepts, templates and mixin layers,
De Lara et Guerra, MoDELS 10[6] Transformation composition modelling framework, Oldevik, DAIS 05[7] MCC: a model transformation environment, Kleppe, ECMFA 06[8] Family Polymorphism, Ernst, ECOOP 01[9] Polytoil: A type-safe polymorphic object-oriented language, Bruce et
al., TOPLAS 03[10] On Model Typing, Steel et Jézéquel., SoSyM 07
63
Images tirées de http://thenounproject.com/Pablo Alonso (Hamburger)Pete Fecteau (Animals)Bryn Mackenzie (Grass)Мила Омина (Food and Drink)
64