Upload
aymeric-gon
View
110
Download
2
Embed Size (px)
Citation preview
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