1 / 64

Facilités de typage pour l’ingénierie des langages

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

geordi
Download Presentation

Facilités de typage pour l’ingénierie des langages

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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

  2. Systèmes logiciels complexes • Préoccupations diverses • Nombre & complexité ↗ Système logiciel

  3. 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)

  4. 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

  5. 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

  6. 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…

  7. Problématique • Fournir des facilités pour la définition et l’outillage des langages de modélisation dédiés

  8. 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

  9. 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

  10. 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

  11. 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

  12. 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 • …

  13. 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>>

  14. 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

  15. Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives Métamodélisation Exemple Visualisation, détection de boucles…  <<conformeÀ>> …

  16. 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

  17. 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 ;

  18. 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 ;

  19. 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

  20. 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

  21. 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...

  22. 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

  23. 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

  24. 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

  25. 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

  26. 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

  27. 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

  28. 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

  29. 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

  30. 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

  31. 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>>

  32. 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

  33. 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

  34. 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

  35. 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

  36. 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

  37. 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

  38. 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)

  39. 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

  40. 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

  41. 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)

  42. 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)

  43. 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)

  44. 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

  45. 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

  46. 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>>

  47. 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

  48. 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

  49. 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

  50. 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

More Related