Más contenido relacionado
La actualidad más candente (12)
Similar a 20100629 dsl-poitou-charentes-jug (20)
20100629 dsl-poitou-charentes-jug
- 1. DSL
Domain Specific Language
À l'aide des technologies Eclipse Modeling
Le 29 juin 2010
Jérôme BENOIS
jerome.benois@obeo.fr
- 2. Le but de cette session
Montrer :
Ce qu'est-un DSL/DSM
A quoi ça sert
Comment implémenter des Domain-Specific Languages en
utilisant le projet Eclipse Modeling
© Copyright 2010
Obeo
- 3. Agenda
Qui suis-je où suis-je ?
Les DSL en général
Les DSL textuels
Les DSL graphiques
Conclusion
© Copyright 2010
Obeo
- 4. Jérôme BENOIS
10 ans de Java...
Architecte – "Model Driven Expert" à
Responsable Obeo Network
Committer , , EasyAnt, Bushel
Forte implication dans le monde Open-Source
(contributions à Eclipse GMT/MoDisco, C-JDBC,
UML2SVG, membre de l'OSS-GTP, ...)
Niortais et Poitou-Charentes JUG addict :)
© Copyright 2010
http://blog.benois.fr & http://twitter.com/jeromebenois
Obeo
- 5. Obeo
Éditeur spécialiste des approches modèles
Nantes en 2005, Paris depuis 2007
40 spécialistes MDE
Activité 2009 : 2,5 M€ en croissance de 50%
Société Française indépendante
Investissement R&D à hauteur de 30% des revenus
© Copyright 2010
Obeo
- 7. DSL ?
: "In software development and domain
engineering, a domain-specific language (DSL) is a
programming language or specification language
dedicated to a particular problem domain, a particular
problem representation technique, and/or a particular
solution technique."
: "The concept isn't new—special-purpose
programming languages and all kinds of
modeling/specification languages have always
existed, but the term has become more popular due
© Copyright 2010
to the rise of domain-specific modeling (DSM)"
Obeo
- 8. DSM ?
"Domain-specific modeling (DSM) is a software
engineering methodology for designing and
developing systems, such as computer software. It
involves systematic use of a graphical domain-
specific language (DSL) to represent the various
facets of a system."
© Copyright 2010
Obeo
- 9. Et Martin, il en pense quoi ?
An important and useful
distinction I make is
between:
Internal DSLs are particular ways of
using a host language to give the host
language the feel of a particular
language. (Ruby, Groovy, Scala ...)
And
External DSLs have their own
custom syntax and you write a full
parser to process them. There is a
very strong tradition of doing this in
the Unix community. Many XML
configurations have ended up as
© Copyright 2010
external DSLs, although XML's syntax
is badly suited to this purpose.
Obeo
- 10. En résumé
Un Domain-Specific Language
Est un language Interne ou Externe
Peut-être Textuel ou Graphique
Définit le vocabulaire d'un domaine de connaissance
particulier :
Par des mots
Par des représentations graphiques
Caractéristiques : simplicité, expressivité, explicite, ciblé,
© Copyright 2010
non ambigu
Obeo
- 11. A quoi cela ressemble ?
Notation :
Musicale :
Rubik's cube
Métier :
Calcul de polices d'assurances
Définition de règles métiers bancaires
Techniques :
SQL : SELECT * FROM GEEK WHERE JUG_MEMBER=1;
CSS : body { background-color: #CCCCCC; }
Regex : b[A-Z0-9._%+-]+@[A-Z0-9.-]+.[A-Z]{2,4}b
...
© Copyright 2010
Obeo
- 12. Pourquoi créer un DSL ?
Pour :
Partager une métaphore commune entre un expert du domaine
et un informaticien ex: spécifications fonctionnelles, ...
Permettre à un expert du domaine de participer à la
construction de la logique métier d'une application ex: BPM,
BRMS, ...
Exposer une API en tant que DSL et interpréter ce DSL. Plus
expressif que du XML. Ex: API de configuration, ...
Générer du code Java ou autres pour gagner en productivité
© Copyright 2010
Obeo
- 13. Quel type de DSL créer ?
DSL Interne :
Facile à créer
Exécutable via la langage hôte
Pas vraiment de sémantique (uniquement du sucre syntaxique)
Adhérent au langage hôte et limité par son expressivité
Uniquement textuel
Outillage IDE limité
© Copyright 2010
Obeo
- 14. Quel type de DSL créer ?
DSL Externe :
Graphique (DSM) et/ou textuel
Facile à créer à condition d'utiliser les bons outils :
Xtext => textuel
Obeo Designer => graphique
Sémantique formelle
Outillage IDE industriel
© Copyright 2010
Obeo
- 18. Un framework de développement de DSL textuel basé :
La plateforme Eclipse
EMF Eclipse Modeling Framework
ANTLR
© Copyright 2010
Obeo
- 21. L'intention :
Décrire l'entité métier JUG
Un JUG possède un nom
Un JUG est animé par un ou n JUG Leader
Cette entité est persistante en base de données
Conventions :
Une entité persistante est identifiée par un ID technique
Les identifiants techniques sont valués par une Séquence
© Copyright 2010
Obeo
- 23. Définition de la syntaxe textuelle de
notre DSL avec TMF - Xtext
O
EM
© Copyright 2010
D
Obeo
- 25. Créer un DSL graphique : un DSM
Un environnement dédié
Paramétrage simples
Diagrammes hyper-ergonomiques
« Points de vue » pour l'analyse, l'architecte, …
Adaptable sur différents domaines
Basé sur Eclipse GMF
© Copyright 2010
O
EM
Obeo
D
- 26. Du DSM au point de vue !
Le système à modéliser
Le point de vue
● Analyse de performance
● Analyse d'exigences
● Fonction / Sous Fonction Les vues du
● Hardware / Software Système
● DBA ● Diagramme de blocs
● Urbaniste des services ● Diagramme de composants
● Diagramme de séquences
© Copyright 2010
● Tableur, Matrice
Obeo
Les vues du système
(les diagrammes)
- 29. Exemples d'utilisation :
http://obeonetwork.org
Communauté/Réseau de
partenaires proposant des
modules sur étagère : DSL/
DSM/Générateurs JavaEE,
Spring, ...
© Copyright 2010
Obeo
- 36. Acceleo
Génération de code : implémentation du standard OMG MOF to Text Language
Licence EPL
Maintenu par Obeo
Un outil fait par des développeurs pour les développeurs !
Pragmatisme (génération incrémentale, …)
Outillage Eclipse (complétion, coloration syntaxique, ...)
O
EM
© Copyright 2010
D
Obeo
- 38. Merci
jerome.benois@obeo.fr
© Copyright 2010
Obeo
- 39. Sources / Liens
Wikipedia
http://en.wikipedia.org/wiki/Domain-specific_language
http://en.wikipedia.org/wiki/Domain-specific_modeling
http://www.martinfowler.com/bliki/DomainSpecificLanguage.html
http://www.obeo.fr/pages/obeo-designer/fr
http://www.obeonetwork.org
http://www.eclipse.org/modeling
http://www.eclipse.org/Xtext
http://www.eclipse.org/acceleo
http://www.slideshare.net/glaforge/domainspecific-languages-avec-groovy
http://blog.benois.fr/
© Copyright 2010
Obeo