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. 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. 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
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. CECI N’A PAS LA PRÉTENTION
D’ÊTRE UN COURS DE COMPILATION !
16. CONFORMITÉ
«est un mot de»
eBNF
«est un mot de»
Grammaire
«est un mot de»
Code Source
15
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. DU SOURCE À L’ARBRE DE
SYNTAXE ABSTRAITE ...
Analyseur
Lexical
Lex
Arbre de
Source Lexèmes Syntaxe
Abstraite
Analyseur
Syntaxique
Yacc
17 pfz@SI4
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. 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. 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. « 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. 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
30. 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
31. 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
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
34 mh@GPL’09
38. 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
40. Syntaxe
Concrète
rit
d éc
déc
rit
Template de
génération
36
41. 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
42. 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
43. 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
65. 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
70. 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
71. E.W. DIJKSTRA
(1972)
« I see a great future for very
systematic and very modest
programming languages. »
72. If the only tool you have is a hammer ...
... then everything looks like a nail!!
73. 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
74. De toutes façons, les modèles,
ça marchera jamais
avec des informaticiens.