640 likes | 764 Views
Facilités de typage pour l’ingénierie des langages. Clément Guy 10 décembre 2013. 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
E N D
Facilités de typage pour l’ingénierie des langages Clément Guy 10 décembre 2013 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
Systèmes logiciels complexes • Préoccupations diverses • Nombre & complexité ↗ 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)
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
Coûts de définition et d’outillage des DSMLs • Besoin d’outils • Public restreint • Définition et outillage à partir de 0 • ⇒ Besoin d’outils et de méthodes pour ↘ les coûts
Compilateurs model-based VHDL C Extraction de CFG, passage en forme SSA, élimination de code mort… C Orcc Open RVC-CAL Compiler RVC-CAL LLVM Extraction de CFG, passage en forme SSA, élimination de code mort…
Problématique • Fournir des facilités pour la définition et l’outillage des langages de modélisation dédiés
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives Plan • Etat de l’art & Limites • Métamodélisation • Facilités d’ingénierie • Typage de modèles • Facilités de typage • Implémentation & Validation • Conclusion & Perspectives
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives Métamodélisation Métamodélisation • Définition et outillage d’un DSML • Métamodèle = <AS, CS, Sem> • AS : Syntaxe abstraite • Concepts du langage/de la préoccupation • CS : Syntaxe concrète • Représentation utilisateur • Sem : Sémantique • Sens des modèles
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 var x, y x := read() y := read() y > 1 print(y) Bloc de base x := x * x y := y - 1 Instruction Instruction Saut
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives Métamodélisation Syntaxe abstraite (AS) • Graphe de classes • Modèle = Ensemble d’objets
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èles • Fonctions de modèles • Exemples : • Visualisation • Analyse d’atteignabilité • Frontière de dominance • Détection de boucles • …
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives Métamodélisation Relation de conformité • Entre modèle et AS • S’appuie sur l’instanciation <<instanceDe>> <<conformeÀ>> <<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 classe • Conformité : 1 modèle → 1 DSML • polymorphisme de modèle • réutilisation d'outils entre DSMLs
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives Métamodélisation Exemple Visualisation, détection de boucles… <<conformeÀ>> …
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives Plan • Etat de l’art & Limites • Métamodélisation • Facilités d’ingénierie • Typage de modèles • Facilités de typage • Implémentation & Validation • Conclusion & Perspectives
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives Facilités d’ingénierie 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…] [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 ≠ AS • Concepts, templates, motifs variables • Transformations composites [6,7…] • Basées sur l’AS + autres informations • Contraintes, opérations CRUD [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 Concept Autres informations <<liéÀ>> Template <<étend>> Syntaxe abstraite Motif variable <<correspondÀ>> <<contient>> Mégamodèle
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives Plan • Etat de l’art & Limites • Métamodélisation • Facilités d’ingénierie • Typage de modèles • Facilités de typage • Implémentation & Validation • Conclusion & Perspectives
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives Typage de modèles 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 l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives Typage de modèles Limites du sous-typage objet Animal a = Animal.new Nourriture n = Nourriture.new a.mange = n 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 22
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives Typage de modèles Polymorphisme degroupes de types [8] avec le sous-typage objet √avec la correspondance (<#) [9] <# <# Animal a = Animal.new Nourriture n = Nourriture.new a.mange = n [8] Ernst, ECOOP 01 ; [9] Bruce et al., TOPLAS 03 ; 23
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 classes • Réutilisation = Sous-typage + Génériques • Paramètre de type de modèles • Types chemin-dépendants modeltypeCFG{ ControlFlowGraph, Node, } classReachabilityAnalyzer[MT <: CFG] { operationanalysis() Set[MT::Node] isdo … end } [10] Steelet 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 Modèle typé Modèle conforme ??? <<instanceDe>> <<conformeÀ>> Type de modèle Métamodèle ??? <<référence>> <<composéDe>> Classe
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives Limites • Conformité • polymorphisme • Facilités existantes • combinaison/comparaison • Typage de modèles • séparation interface-implémentation • séparation small-large
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives Plan • Etat de l’art & Limites • Facilités de typage • Relations d’instanciation & de typage • Relations de sous-typage • Implémentation & Validation • Conclusion & Perspectives
Etat de l’art – 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
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives Interface et implémentation • Interface • Champs, signatures d’opérations • Types objets & Types de modèles • Implémentation • Constructeurs, opérations • Classes & Métamodèles
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-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
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives METAL : métalangage pour la modélisation in-the-large <<sousTypeDe>> <<hériteDe>> Type de modèles Métamodèle <<implémente>> <<typéPar>> <<instanceDe>> Modèle <<composéDe>> <<composéDe>> <<composéDe>> Objet <<instanceDe>> <<typéPar>> Type objet Classe <<implémente>> <<sousTypeDe>> <<hériteDe>>
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives Plan • Etat de l’art & Limites • Facilités de typage • Relations d’instanciation & de typage • Relations de sous-typage • Implémentation & Validation • Conclusion & Perspectives
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives Typage & Instanciation Objets, types objets et classes • Type objet : Interface • Champs, signatures d’opérations • Classe : Implémentation • Opérations, constructeurs
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives Typage & Instanciation Métamodèles • Implémentation des modèles • Classes • Opérations de modèles • Constructeurs
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives Typage & Instanciation Relation d’instanciation • 1 modèle → 1 métamodèle • Réserver l’espace mémoire • Champs de modèles • Table des opérations de modèles
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives Typage & Instanciation Types de modèles • Interfaces des modèles • Types objets • Champs de modèles • Signatures d’opérations de modèles
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 m • Tous les types objets • Tous les champs de modèles • Toutes les signatures d’opérations de modèles • Extrait du métamodèle de m
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)
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives Plan • Etat de l’art & Limites • Facilités de typage • Relations d’instanciation & de typage • Relations de sous-typage • Implémentation & Validation • Conclusion & Perspectives
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives Relations de sous-typage Sous-typage entretypes de modèles • Substitution sûre de modèles • Relation de correspondance (<#) • entre types objets • entre signatures d’opérations • entre champs • 2 critères • Hétérogénéités structurelles • Contexte d’utilisation
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives Relations de sous-typage Correspondance detypes objets • 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 METAL (M3)
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives Relations de sous-typage Correspondance designatures d’opérations • 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 ⇒ p.isOrdered METAL (M3)
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives Relations de sous-typage Correspondance dechamps • 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.isReadOnly • c.isOrdered ⇒ c’.isOrdered • c.opposite ≠ void ⇒ c’.opposite ≠ void ∧ c.opposite.name =c’.opposite.name METAL (M3)
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives Relations de sous-typage 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
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives Relations de sous-typage Contexte d’utilisation MT2 • Totale • Substitution partout • Partielle • Substitution • dans un contexte • pour une transformation donné(e) • Extraction de type effectif MT2’ MT1
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives Relations de sous-typage 4 Relations de sous-typage • Totale isomorphique • Correspondance • Partielle isomorphique • + Extraction • Totale non-isomorphique • + Adaptation • Partielle non-isomorphique • + Extraction • + Adaptation <<totalIso>> A1’ <# A2 B1 <# B2 <<totalIso>> <<totalNoniso>> <<partialNoniso>> <<totalIso>> A1<# A2 B1 <# B2 <<totalIso>> f(A1) <<partialIso>>
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives Plan • Etat de l’art & Limites • Facilités de typage • Implémentation & Validation • Implémentation • Validation • Conclusion & Perspectives
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives Implémentation d’un système de types • Dans l’environnement Kermeta • Sous-typage total isomorphique • Appliqué au passage en forme Static Single Assignment
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives Plan • Etat de l’art & Limites • Facilités de typage • Implémentation & Validation • Implémentation • Validation • Conclusion & Perspectives
Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives Implémentation Compilateur Kermeta Ecore Kermeta KMT Aspect Node KMT Aspect Node Vérificateur de types KMT Aspect ControlFlowGraph KMT Aspect ControlFlowGraph Kermeta Model IR KMT Metamodel Java interfaceControlFlowGraph { [...] } interfaceNode { [...] } classControlFlowGraphImpl { [...] } classNodeImpl { [...] } classFactory { [...] } traitControlFlowGraphAspect { [...] } traitNodeAspect { [...] } classRichControlFlowGraph { [...] } classRichNode { [...] } classFactory { [...] } traitControlFlowGraphAspect { [...] } traitNodeAspect { [...] } traitIControlFlowGraph { [...] } traitINode { [...] } classRichControlFlowGraph { [...] } classRichNode { [...] } classFactory { [...] } traitMT_CFG_Simple { [...] } traitMM_CFG_Simple { [...] } classRichDSML_CFG_Simple { [...] } traitIFactory_CFG_Simple { [...] } objectRichFactory_CFG_Simple { [...] } Scala Moteur d’exécution JVM