64
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

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

  • Upload
    geordi

  • View
    27

  • Download
    0

Embed Size (px)

DESCRIPTION

Facilités de typage pour l’ingénierie des langages. Clément Guy 10 décembre 2013. Dr. Frédéric MALLETRapporteurUniversité de Nice Sophia Antipolis Pr. Pierre-Etienne MOREAURapporteurEcole des Mines de Nancy Dr. Laure GONNORDExaminateurUniversité Claude Bernard Lyon 1 - PowerPoint PPT Presentation

Citation preview

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

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

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

Systèmes logiciels complexes

Préoccupations diverses

Nombre & complexité ↗

2

Systèmelogiciel

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

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

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

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

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

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

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

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

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

Problématique

Fournir des facilités pour la définition et l’outillage des

langages de modélisation dédiés

7

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Exemple

15

Visualisation, détection de boucles…

<<conformeÀ>>

Etat de l’art – Facilités de Typage – Implém. & Validation – Conclusion & Perspectives

Métamodélisation

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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)

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

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)

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

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)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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()

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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é

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

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

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

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

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

Images tirées de http://thenounproject.com/Pablo Alonso (Hamburger)Pete Fecteau (Animals)Bryn Mackenzie (Grass)Мила Омина (Food and Drink)

64