Facilités de typage pour lingénierie des langages Dr. Frédéric MALLETRapporteurUniversité de...

Post on 04-Apr-2015

110 views 2 download

Transcript of Facilités de typage pour lingénierie des langages Dr. Frédéric MALLETRapporteurUniversité de...

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