Facilités de typage pour lingénierie des langages Dr. Frédéric MALLETRapporteurUniversité de Nice Sophia Antipolis Pr. Pierre-Etienne MOREAURapporteurEcole des Mines de Nancy Dr. Laure GONNORDExaminateurUniversité Claude Bernard Lyon 1 Dr. Marc PANTELExaminateurInstitut National Polytechnique de Toulouse Pr. Olivier RIDOUXExaminateurUniversité de Rennes 1 Pr. Jean-Marc JEZEQUELDirecteurUniversité de Rennes 1 Dr Benoit COMBEMALECo-encadrantUniversité de Rennes 1, Inria Pr. Steven DERRIENCo-encadrantUniversité de Rennes 1 Clément Guy 10 décembre 2013
Systèmes logiciels complexes Préoccupations diverses Nombre & complexité 2 Système logiciel
Ingénierie dirigée par les modèles Séparation des préoccupations 1 préoccupation = 1 modèle Modèle = Représentation d'un aspect du système dans un but donné Capitalisation Langages de modélisation dédiés (DSMLs) 3
Langage de modélisation dédié (DSML) Langage de modélisation Modèle = "Phrase" du langage Langage dédié Spécifique à 1 préoccupation/domaine Concepts et outillage spécifique 4
Coûts de définition et doutillage des DSMLs Besoin doutils Public restreint Définition et outillage à partir de 0 Besoin doutils et de méthodes pour les coûts 5
Compilateurs model-based 6 Extraction de CFG, passage en forme SSA, élimination de code mort… Orcc Open RVC-CAL Compiler Extraction de CFG, passage en forme SSA, élimination de code mort… C C VHDL RVC-CAL LLVM
Problématique Fournir des facilités pour la définition et loutillage des langages de modélisation dédiés 7
Plan Etat de lart & Limites Métamodélisation Facilités dingénierie Typage de modèles Facilités de typage Implémentation & Validation Conclusion & Perspectives 8 Etat de lart – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Métamodélisation Définition et outillage dun DSML Métamodèle = AS : Syntaxe abstraite Concepts du langage/de la préoccupation CS : Syntaxe concrète Représentation utilisateur Sem : Sémantique Sens des modèles 9 Etat de lart – Facilités de Typage – Implém. & Validation – Conclusion & PerspectivesMétamodélisation
Exemple : Graphes de flot de contrôle (CFG) Représentation intermédiaire 10 var x, y x := read() y := read() y > 1 x := x * x y := y - 1 print(y) Bloc de base Instruction Saut Etat de lart – Facilités de Typage – Implém. & Validation – Conclusion & PerspectivesMétamodélisation Instruction
Syntaxe abstraite (AS) Graphe de classes Modèle = Ensemble dobjets 11 Etat de lart – Facilités de Typage – Implém. & Validation – Conclusion & PerspectivesMétamodélisation
Syntaxe concrète (CS) et Sémantique (Sem) Transformations de modèles Fonctions de modèles Exemples : Visualisation Analyse datteignabilité Frontière de dominance Détection de boucles … 12 Etat de lart – Facilités de Typage – Implém. & Validation – Conclusion & PerspectivesMétamodélisation
Relation de conformité Entre modèle et AS Sappuie sur linstanciation 13 > Etat de lart – Facilités de Typage – Implém. & Validation – Conclusion & PerspectivesMétamodélisation
Limites de la conformité Instanciation : 1 objet 1 classe Conformité : 1 modèle 1 DSML polymorphisme de modèle réutilisation d'outils entreDSMLs 14 Etat de lart – Facilités de Typage – Implém. & Validation – Conclusion & PerspectivesMétamodélisation
Exemple 15 Visualisation, détection de boucles… > Etat de lart – Facilités de Typage – Implém. & Validation – Conclusion & PerspectivesMétamodélisation …
Plan Etat de lart & Limites Métamodélisation Facilités dingénierie Typage de modèles Facilités de typage Implémentation & Validation Conclusion & Perspectives 16 Etat de lart – 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 lart – Facilités de Typage – Implém. & Validation – Conclusion & PerspectivesFacilités dingénierie
Réutilisation de transformations de modèles Transformations génériques [4,5…] Structures AS Concepts, templates, motifs variables Transformations composites [6,7…] Basées sur lAS + autres informations Contraintes, 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 lart – Facilités de Typage – Implém. & Validation – Conclusion & PerspectivesFacilités dingénierie
Limites des approches existantes 19 Syntaxe abstraite Autres informations Concept > Mégamodèle > Template > Motif variable > Etat de lart – Facilités de Typage – Implém. & Validation – Conclusion & PerspectivesFacilités dingénierie
Plan Etat de lart & Limites Métamodélisation Facilités dingénierie Typage de modèles Facilités de typage Implémentation & Validation Conclusion & Perspectives 20 Etat de lart – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Facilités fournies par les systèmes de types objets Abstraction Entités de 1 ère classe Séparation interface/implémentation Réutilisation Polymorphisme & Héritage Analyses statiques Détection d'erreurs, auto-complétion Etat de lart – Facilités de Typage – Implém. & Validation – Conclusion & PerspectivesTypage de modèles
22 Animal a = Animal.new Nourriture n = Nourriture.new a.mange = n Limites du sous-typage objet Animal a = Vache.new Nourriture n = Nourriture.new a.mange = n Animal a = Vache.new Nourriture n = Herbe.new a.mange = n Animal a = Vache.new Nourriture n = Hamburger.new a.mange = n Etat de lart – Facilités de Typage – Implém. & Validation – Conclusion & PerspectivesTypage de modèles
23 Polymorphisme de groupes de types [8] avec le sous-typage objet Animal a = Animal.new Nourriture n = Nourriture.new a.mange = n avec la correspondance (<#) [9] [8] Ernst, ECOOP 01 ; [9] Bruce et al., TOPLAS 03 ; <# Etat de lart – Facilités de Typage – Implém. & Validation – Conclusion & PerspectivesTypage de modèles
Typage de modèles [10] Type de modèles = Graphe de classes Réutilisation = Sous-typage + Génériques Paramètre de type de modèles Types 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 lart – Facilités de Typage – Implém. & Validation – Conclusion & PerspectivesTypage de modèles
Limites du typage de modèles 25 Métamodèle Classe Modèle conforme Modèle typé ??? > Etat de lart – Facilités de Typage – Implém. & Validation – Conclusion & PerspectivesTypage 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 lart – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Plan Etat de lart & Limites Facilités de typage Relations dinstanciation & de typage Relations de sous-typage Implémentation & Validation Conclusion & Perspectives 27 Etat de lart – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Objectif Amener les facilités de typage objet Abstraction Réutilisation Analyses statiques … Aux modèles et aux DSMLs Conformité Instanciation & Typage 28 Etat de lart – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Interface et implémentation Interface Champs, signatures dopérations Types objets & Types de modèles Implémentation Constructeurs, opérations Classes & Métamodèles 29 Etat de lart – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Modélisation in-the-small et modélisation in-the-large Modélisation in-the-small Objets Types objets & Classes Champs & Opérations Modélisation in-the-large Modèles Types de modèles & Métamodèles Champs & Opérations de modèles 30 Etat de lart – 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 objet Classe > Modèle > Etat de lart – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives Objet >
Plan Etat de lart & Limites Facilités de typage Relations dinstanciation & de typage Relations de sous-typage Implémentation & Validation Conclusion & Perspectives 32 Etat de lart – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Objets, types objets et classes Type objet : Interface Champs, signatures dopérations Classe : Implémentation Opérations, constructeurs 33 Etat de lart – Facilités de Typage – Implém. & Validation – Conclusion & PerspectivesTypage & Instanciation
Métamodèles Implémentation des modèles Classes Opérations de modèles Constructeurs 34 Etat de lart – Facilités de Typage – Implém. & Validation – Conclusion & PerspectivesTypage & Instanciation
Relation dinstanciation 1 modèle 1 métamodèle Réserver lespace mémoire Champs de modèles Table des opérations de modèles 35 Etat de lart – Facilités de Typage – Implém. & Validation – Conclusion & PerspectivesTypage & Instanciation
Types de modèles Interfaces des modèles Types objets Champs de modèles Signatures dopérations de modèles 36 Etat de lart – Facilités de Typage – Implém. & Validation – Conclusion & PerspectivesTypage & Instanciation
Type exact dun modèle m Type le plus précis de m Tous les types objets Tous les champs de modèles Toutes les signatures dopérations de modèles Extrait du métamodèle de m 37 Etat de lart – Facilités de Typage – Implém. & Validation – Conclusion & PerspectivesTypage & Instanciation
Relation de typage Ensemble des types dun modèle = Type exact + Super-types(Type exact) 38 Etat de lart – Facilités de Typage – Implém. & Validation – Conclusion & PerspectivesTypage & Instanciation
Plan Etat de lart & Limites Facilités de typage Relations dinstanciation & de typage Relations de sous-typage Implémentation & Validation Conclusion & Perspectives 39 Etat de lart – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Sous-typage entre types de modèles Substitution sûre de modèles Relation de correspondance (<#) entre types objets entre signatures dopérations entre champs 2 critères Hétérogénéités structurelles Contexte dutilisation 40 Etat de lart – Facilités de Typage – Implém. & Validation – Conclusion & PerspectivesRelations de sous-typage
Correspondance de types 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 lart – Facilités de Typage – Implém. & Validation – Conclusion & PerspectivesRelations de sous-typage METAL (M3)
Correspondance de signatures dopérations 42 op <# op ssi : op.name = op.name op.type <# op.type p op.ownedParameter p T.ownedParameter tel que : p.type <# p.type p.lower = p.lower p.upper = p.upper p.isUnique = p.isUnique p.isOrdered Etat de lart – Facilités de Typage – Implém. & Validation – Conclusion & PerspectivesRelations de sous-typage METAL (M3)
Correspondance de champs 43 c <# c ssi : c.name = c.name c.type <# c.type c.lower = c.lower c.upper = c.upper c.isComposite = c.isComposite c.isUnique = c.isUnique c.isReadOnly c.isOrdered c.opposite void c.opposite void c.opposite.name =c.opposite.name Etat de lart – Facilités de Typage – Implém. & Validation – Conclusion & PerspectivesRelations de sous-typage METAL (M3)
Hétérogénéités structurelles Isomorphique Information = Structure = Isomorphisme de sous-graphe Correspondances Non-isomorphique Information = Structure Adaptation de modèles MT2 MT1 44 Etat de lart – Facilités de Typage – Implém. & Validation – Conclusion & PerspectivesRelations de sous-typage
Contexte dutilisation Totale Substitution partout Partielle Substitution dansun contexte pour une transformation donné(e) Extraction de type effectif MT2 MT1 MT2 45 Etat de lart – Facilités de Typage – Implém. & Validation – Conclusion & PerspectivesRelations de sous-typage
4 Relations de sous-typage Totale isomorphique Correspondance Partielle isomorphique + Extraction Totale non-isomorphique + Adaptation Partielle non-isomorphique + Extraction + Adaptation B1 <# B2A1 <# A2 > A1 <# A2 > B1 <# B2 f(A1) > 46 Etat de lart – Facilités de Typage – Implém. & Validation – Conclusion & PerspectivesRelations de sous-typage
Plan Etat de lart & Limites Facilités de typage Implémentation & Validation Implémentation Validation Conclusion & Perspectives 47 Etat de lart – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Implémentation dun système de types Dans lenvironnement Kermeta Sous-typage total isomorphique Appliqué au passage en forme Static Single Assignment 48 Etat de lart – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Plan Etat de lart & Limites Facilités de typage Implémentation & Validation Implémentation Validation Conclusion & Perspectives 49 Etat de lart – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Compilateur Kermeta 50 Kermeta Model IR KMT Aspect Node KMT Aspect ControlFlowGraph Vérificateur de types interface ControlFlowGraph { [...] } interface Node { [...] } class ControlFlowGraphImpl { [...] } class NodeImpl { [...] } class Factory { [...] } Moteur dexé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 Aspect Node KMT Aspect ControlFlowGraph KMT Metamodel Java Scala Etat de lart – Facilités de Typage – Implém. & Validation – Conclusion & PerspectivesImplémentation
Front-end Kermeta CS Kermeta Vérificateur de types Sous-typage total isomorphique Relation de correspondance 51 metamodel CFG_Dominance { subtypeof CFG_Simple operation computeDominanceFrontier(m : MT) is do […] var s : Set[^Node] init Set[^Node].new […] end } Etat de lart – Facilités de Typage – Implém. & Validation – Conclusion & PerspectivesImplémentation var m : CFG_Dominance init CFG_Dominance.new m.computeDominanceFrontier()
Back-end Kermeta 52 Métamodèle Type objet Classe Type de modèles class NodeAspect { […] } trait INode { type ControlFlowGraph <: IControlFlowGraph type Node <: INode […] def getNext() : Set[Node] } class NodeAspect extends INode { type ControlFlowGraph = ControlFlowGraphAspect type Node = NodeAspect […] } trait MT_CFG_Dominance extends MT_CFG_Simple { type ControlFlowGraph <: IControlFlowGraph type Node <: INode […] def computeDominanceFrontier(m : MT) } class MM_CFG_Dominance extends MT_CFG_Dominance { type ControlFlowGraph = ControlFlowGraphAspect type Node = NodeAspect […] def computeDominanceFrontier(m : MT) { […] var s : Set[Node] = new Set[Node] […] } Etat de lart – Facilités de Typage – Implém. & Validation – Conclusion & PerspectivesImplémentation
Plan Etat de lart & Limites Facilités de typage Implémentation & Validation Implémentation Validation Conclusion & Perspectives 53 Etat de lart – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives
Passage en forme Static Single Assignment Passe de compilation courante 1 variable 1 définition Usage Définition Insertion de Ф -fonctions 54 Etat de lart – Facilités de Typage – Implém. & Validation – Conclusion & PerspectivesValidation x := 0 if (cond) then x := x + 1 end y := x + 1 x 1 := 0 if (cond) then x 2 := x end x 3 := Ф (x 1, x 2 ) y 1 := x 3 + 1
Implémentation Kermeta Frontière de dominance Insertion de Ф - fonctions Renommage de variables 55 Etat de lart – Facilités de Typage – Implém. & Validation – Conclusion & PerspectivesValidation
Adaptation pour GeCoS 56 Etat de lart – Facilités de Typage – Implém. & Validation – Conclusion & PerspectivesValidation Symbol Scope ControlFlowGraphProcedureInstruction _add is do if not scope.isVoid then scope.symbols.add(_element) end _remove is do if not scope.isVoid then scope.symbols.remove(_element) end } aspect class Procedure { property symbols : Set[Symbol] _get is do result := Set[Symbol].new if not scope.isVoid then result.addAll(scope.symbols) end
Plan Etat de lart & Limites Facilités de typage Implémentation & Validation Conclusion & Perspectives Conclusion Perspectives 57 Etat de lart & Limites – Facilités de typage – Conclusion & Perspectives
Conformité Typage & Instanciation Facilités de définition et doutillage des DSML Types de modèles & Métamodèles Abstraction Détection derreurs Sous-typage & Héritage Réutilisation 58 Etat de lart & Limites – Facilités de typage – Conclusion & PerspectivesConclusion
Une famille de systèmes de types 59 4 Relations de sous-typage 2 Critères Déclaration & Vérification Mécanisme dhéritage Système de types Etat de lart & Limites – Facilités de typage – Conclusion & PerspectivesConclusion
Plan Etat de lart & Limites Facilités de typage Implémentation & Validation Conclusion & Perspectives Conclusion Perspectives 60 Etat de lart & Limites – Facilités de typage – Conclusion & Perspectives
Etendre le typage de modèles 61 Etat de lart & Limites – Facilités de typage – Conclusion & PerspectivesConclusion 4 Relations de sous-typage 2 CritèresDéclaration & Vérification Mécanisme dhéritage Système de types Fonctions de modèles Adaptations Types de modèles Structure ContraintesComportement Structure Types de modèles ContraintesComportement Fonctions de modèles Adaptations InférenceBidirectionnalité InférenceBidirectionnalité
Questions 62 class MM_CFG { type ControlFlowGraph = ControlFlowGraphAspect type 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 <: IControlFlowGraph type Node <: INode […] def computeDominanceFrontier[MT <: MT_CFG](m : MT) } On Model Subtyping Guy, Combemale, Derrien et Jézéquel, ECMFA, 2012 Bridging the chasm between MDE and the world of compilation Jé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 compilation Guy, 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 Pablo Alonso (Hamburger) Pete Fecteau (Animals) Bryn Mackenzie (Grass) Мила Омина (Food and Drink) 64
Transformation composite 65 Elimination de code mort CFG Passage en forme SSA Propagation de constante Elimination de code mort CFG
Mégamodèle 66 AS CFG Extraction de polyèdre AS Poly Réduction de force > Poly CFG
Transformation générique 67 AS CFG Extraction de polyèdre > AS CFG > CFGPoly CFG Générique