Builsing DSL using MDE

2 347 vues

Publié le

a lectire from Polytech'Sophia

Publié dans : Formation, Technologie
0 commentaire
2 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
2 347
Sur SlideShare
0
Issues des intégrations
0
Intégrations
472
Actions
Partages
0
Téléchargements
13
Commentaires
0
J’aime
2
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive
  • Builsing DSL using MDE

    1. 1. INGÉNIERIE DES MODÈLES & LANGAGES SPÉCIFIQUES AUX DOMAINES Sébastien Mosser Université de Nice - Sophia Antipolis, CNRS, I3S, Equipe Modalis Polytech’Nice Sophia SI5 - Master 2 IFI Année universitaire 2009 - 2010
    2. 2. CONCLUSION De toutes façons, les modèles, ça marchera jamais DR u G 09 s d 20 ur née vier Jo Jan GP L,
    3. 3. CONCLUSION De toutes façons, les modèles, ça marchera jamais avec des informaticiens. DR u G 09 s d 20 ur née vier Jo Jan GP L,
    4. 4. MÉTIER
    5. 5. => PASSE-PARTOUT
    6. 6. INDUSTRIALISATION
    7. 7. => DÉDIÉ DOMAINE
    8. 8. DIVERSIFICATION
    9. 9. => MAUVAIS DOMAINE
    10. 10. MOTIVATION PAR L’EXEMPLE représente Modèle de faits Prolog SOA décrit génère raisonne Pour un «vrai» système: plus de 50.000 faits !! 9
    11. 11. INTRODUCTION et toujours 50.000 faits !! D’UN DSL Modèle de faits Prolog représente décrit Pour un «vrai» système: seulement 400 lignes !! SOA est compilé vers génère Langage raisonne Spécifique 10
    12. 12. AGENDA 1.Rappels sur les langages 4. Construction d’un DSL dirigée par : 2.Quelques «langages domaines» • Les besoins • La syntaxe abstraite 3.Des métamodèles • Les modèles (bis) aux langages 5. Conclusions
    13. 13. LANGAGES ... (RAPPELS)
    14. 14. SUR LES LANGAGES ... « Languages are the primary way in which system developers communicate, design and implement systems » « Languages provide abstractions that can encapsulate complexity, embrace the diversity of technologies and design abstractions, and unite modern and legacy systems » Tony Clark, Andy Evans, Paul Sammut, James Willans 13 pam@MDD4DRES’09
    15. 15. CECI N’A PAS LA PRÉTENTION D’ÊTRE UN COURS DE COMPILATION !
    16. 16. CONFORMITÉ «est un mot de» eBNF «est un mot de» Grammaire «est un mot de» Code Source 15
    17. 17. LANGAGES TEXTUELS (RAPPELS) • Code source • Syntaxe concrète du langage, «Ce que j’écris» • Analyse lexicale • Production de Lexèmes • Analyse syntaxique • Appartenance au langage • Arbre de Syntaxe Abstraite • Syntaxe abstraite du langage, «Ce que j’ai voulu dire» 16
    18. 18. DU SOURCE À L’ARBRE DE SYNTAXE ABSTRAITE ... Analyseur Lexical Lex Arbre de Source Lexèmes Syntaxe Abstraite Analyseur Syntaxique Yacc 17 pfz@SI4
    19. 19. function foo() { EXEMPLE echo «Hello, World !»; } (Syntaxe concrète) FUNCTION (AST) #FUNC #SYMBOL(«foo») foo DEFINITION #LPAREN STATEMENT #RPAREN FUNCTIONCALL ... echo ARGS #RBRACKET «Hello, World !» (lexèmes) 18
    20. 20. MINIMALISME DE SCHEME & PURETÉ SYNTAXIQUE C ul (define foo () (Syntaxe concrète) tu re (print «Hello, World !»)) G én S-Expressions ér al e (define foo () (AST) (print «Hello, World !»)) 19 λ
    21. 21. ET LE COMPILATEUR DANS TOUT ÇA ? (EN GROS) est interprété par Partie cible Avant Arbre r it pa de du pro sé Syntaxe aly Partie an Abstraite est Arrière source produit 20 inspiré de pfz@SI4
    22. 22. «  Another lesson we should have learned from the recent past is that the development of "richer" or "more powerful" programming languages was a mistake in the sense that these monstrosities, these conglomerations of idiosyncrasies, are really unmanageable, both mechanically and mentally. I see a great future for very systematic and very modest programming languages. » E.W. DIJKSTRA (1972) pam@MDD4DRES’09 21
    23. 23. DESIGN D’UN DSL (TYPIQUE) • Identify the problem domain and gather all relevant knowledge in this domain • Cluster this knowledge in a handful of semantic notions and operations on them • Construct a library that implements the semantic notions • Design and implement a compiler that translates language statements to sequences of library calls • Write programs for all desired applications and compile them J. C. Cleaveland. A. van Deursen and P. Klint. Building application generators. Little languages: Little maintenance? IEEE Software, pages 25-33, July Journal of Software Maintenance, 10:75-92, 1998. 22 1988. pam@MDD4DRES’09
    24. 24. «LANGAGES DOMAINES»
    25. 25. GRAPHVIZ
    26. 26. UML
    27. 27. KML
    28. 28. DES MÉTAMODÈLES AUX LANGAGES
    29. 29. MODÈLES, MÉTAMODÈLES & LANGAGES «métatriangle» représente Métamodèle Langage o t de est conforme à n m est u représente Modèle Chose 29 pam@MDD4DRES’09
    30. 30. METAMODELING ARCHITECTURE Langage de Métamétamodèle représente description des langages est conforme à Langage de Métamodèle représente description des choses est conforme à représente Modèle Chose Implémentation 30 pam@MDD4DRES’09
    31. 31. DES MÉTAMODÈLES AUX LANGAGES Syntaxe générique ECore Syntaxe abstraite Spécifications Syntaxe Syntaxe concrète Syntaxe concrète métamodèle Sémantique concrète langage 31 pam@MDD4DRES’09
    32. 32. CONSTRUCTION D’UN DSL & INGÉNIERIE DES MODÈLES
    33. 33. PROBLÈME GÉNÉRAL Modèle Texte 33
    34. 34. PROBLÉME GÉNÉRAL (IRL) Modèle Texte 34 mh@GPL’09
    35. 35. PROBLÉME GÉNÉRAL (IRL) Métalangage conforme Métamodèle conforme Modèle Texte 34 mh@GPL’09
    36. 36. PROBLÉME GÉNÉRAL (IRL) Templates util Métalangage ise conforme utilise Métamodèle conforme d uit Générateur utilise p ro de texte Modèle Texte 34 mh@GPL’09
    37. 37. PROBLÉME GÉNÉRAL (IRL) Templates util Métalangage ise conforme utilise Métamodèle conforme d uit Générateur utilise p ro de texte Modèle Texte produit est uti lisé pa Analyseurs Interpreteur r pro du it ise lise Grammaire AST util uti 34 mh@GPL’09
    38. 38. DIRIGÉE PAR LES BESOINS ma@bbq 35
    39. 39. Syntaxe Concrète rit d éc déc rit Template de génération 36
    40. 40. Analyseur Analyseur Lexical Syntaxique Syntaxe Concrète rit Métamodèle d éc ECore déc Plugin rit d’édition Template de génération 36
    41. 41. EXEMPLE: UN LANGAGE DE DÉFINITION D’ENTITÉS type String type Bool entity Session {   property Title: String   property IsTutorial : Bool } entity Conference {   property Name : String   property Attendees : Person[]   property Speakers : Speaker[] } entity Person {   property Name : String } entity Speaker extends Person {   property Sessions : Session[] } 37 http://www.eclipse.org/Xtext/documentation/latest/xtext.html#getting-started-xtext
    42. 42. EXEMPLE: UN LANGAGE DE DÉFINITION D’ENTITÉS public class Person { private String name; public String getName() { return this.name; } public void setName(String name) { this.name = name; } } Cible: Java entity Person {   property Name : String } 37 http://www.eclipse.org/Xtext/documentation/latest/xtext.html#getting-started-xtext
    43. 43. SYNTAXE CONCRÈTE 38 http://www.eclipse.org/Xtext/documentation/latest/xtext.html#getting-started-xtext
    44. 44. EDITEUR AUTO-GÉNÉRÉ 39 http://www.eclipse.org/Xtext/documentation/latest/xtext.html#getting-started-xtext
    45. 45. TEMPLATE DE GÉNÉRATION JAVA «IMPORT entities» «DEFINE entity FOR Entity»   «FILE this.name + ".java"»     public class «this.name» {       «EXPAND property FOREACH this.properties»     }   «ENDFILE» «ENDDEFINE» «DEFINE property FOR Property»   private «this.type.name» «this.name»;   public void set«this.name.toFirstUpper()» («this.type.name» «this.name») {     this.«this.name» = «this.name»;   }   public «this.type.name» get«this.name.toFirstUpper()»() {     return this.«this.name»;   } «ENDDEFINE» 40 http://www.eclipse.org/Xtext/documentation/latest/xtext.html#getting-started-xtext
    46. 46. DIRIGÉE PAR LA SYNTAXE ABSTRAITE T P ma@bbq 41
    47. 47. Syntaxe Abstraite Métamodèle éc rit d décrit Syntaxe concrète 42
    48. 48. Syntaxe Abstraite Plugin d’édition Métamodèle éc rit d décrit Syntaxe concrète 42
    49. 49. EXEMPLE: UN DSL DE DESCRIPTION DE SANDWICHES 43 http://www.emftext.org/index.php/EMFText_Concrete_Syntax_Sandwich
    50. 50. SYNTAXE ABSTRAITE (MÉTAMODÈLE) 44 http://www.emftext.org/index.php/EMFText_Concrete_Syntax_Sandwich
    51. 51. SYNTAXE CONCRÈTE 45 http://www.emftext.org/index.php/EMFText_Concrete_Syntax_Sandwich
    52. 52. DIRIGÉE PAR LES MODÈLES ks inta S 46
    53. 53. Modèle de Métamodèle Sintaks syntaxe concrète dé cri c r it t dé 47
    54. 54. Métalangage confor m eà Métamodèle de syntaxe concrète conforme à conforme à Modèle de Métamodèle Sintaks syntaxe concrète dé cri c r it t dé 47
    55. 55. BOOTSTRAP: HUTN conforme Métalangage Métamodèle de syntaxe concrète conforme conforme Métamodèle référence Modèle de conforme syntaxe concrète Modèle utilise conforme Texte Sintaks 48 mh@GPL’09
    56. 56. BOOTSTRAP: HUTN conforme Métalangage Métamodèle de syntaxe concrète conforme HUTN conforme Métamodèle référence Modèle de conforme syntaxe concrète Modèle utilise conforme Texte Sintaks 48 mh@GPL’09
    57. 57. AGILITÉ DU CYCLE DE VIE: DEV. EN SPIRALE Métamodèle conforme Modèle 49 mh@GPL’09
    58. 58. AGILITÉ DU CYCLE DE VIE: DEV. EN SPIRALE HUTN référence Métamodèle Modèle de syntaxe concrète conforme Modèle 49 mh@GPL’09
    59. 59. AGILITÉ DU CYCLE DE VIE: DEV. EN SPIRALE référence Métamodèle Modèle de syntaxe concrète conforme Modèle 49 mh@GPL’09
    60. 60. AGILITÉ DU CYCLE DE VIE: DEV. EN SPIRALE référence Métamodèle Modèle de syntaxe concrète conforme conforme Modèle Texte Sintaks 49 mh@GPL’09
    61. 61. AGILITÉ DU CYCLE DE VIE: DEV. EN SPIRALE référence Métamodèle Modèle de syntaxe concrète conforme conforme Modèle «Bidouillage» Texte Sintaks 49 mh@GPL’09
    62. 62. UN EXEMPLE DE MODÈLE DE SYNTAXE CONCRÈTE Type Mail { From: User To: User } Type User { Name: String } Type String; 50 pam@MDD4DRES’09
    63. 63. DIRIGÉE PAR LES MODÈLES (BIS) 51
    64. 64. TOUT EST MODÈLE ... ET INDÉPENDANT !! • Domaine : Concepts métiers Mapping : • Les entités que je dois manipuler Quoi • Graphique : Boites, boutons, ... Comment • Les entités que je veut afficher Quand • Outils: Palette, actions, ... • Comment je manipule tout cela (créer, supprimer, ...) 52 http://fondement.free.fr/lgl/courses/mde/documentation_succinte_gmf.pdf
    65. 65. WORKFLOW GMF Plugin d’Edition 53
    66. 66. WORKFLOW GMF Modèle Modèle Modèle «Outils» «Domaine» «Graphique» Plugin d’Edition 53
    67. 67. WORKFLOW GMF Modèle Modèle Modèle «Outils» «Domaine» «Graphique» Modèle Modèle «Mapping» «Génération» Plugin d’Edition 53
    68. 68. CONCLUSIONS
    69. 69. LIMITATIONS (VOLONTAIRES) • On s’est intéressé ici aux langages «textuels» • C’est plus «rapide» à mettre en oeuvre • Il existe des approches «graphiques» • Eclipse GMF, créateur d’éditeur graphique dirigé par les modèles • Trop peu de temps pour monter un cours / TP • Et il existe de nombreux tutoriels sur le Web 55
    70. 70. E.W. DIJKSTRA (1972) «  I see a great future for very systematic and very modest programming languages. »
    71. 71. If the only tool you have is a hammer ... ... then everything looks like a nail!!
    72. 72. CRÉDITS & REMERCIEMENTS • Pierre Alain Muller «pam@MDD4DRES’09» • Michel Hassenforder «mh@GPL’09» • Paul Franchi «pfz@SI4» • Mathieu Acher «ma@bbq» • Images: • http://sxc.hu 58
    73. 73. De toutes façons, les modèles, ça marchera jamais avec des informaticiens.

    ×