20100629 dsl-poitou-charentes-jug

39
DSL Domain Specific Language À l'aide des technologies Eclipse Modeling Le 29 juin 2010 Jérôme BENOIS [email protected]

Upload: jeromebenois

Post on 28-May-2015

1.748 views

Category:

Technology


1 download

DESCRIPTION

DSL : Domain Specific Language À l'aide des technologies Eclipse Modeling

TRANSCRIPT

Page 1: 20100629 dsl-poitou-charentes-jug

DSL

Domain Specific Language

À l'aide des technologies Eclipse Modeling

Le 29 juin 2010

Jérôme [email protected]

Page 2: 20100629 dsl-poitou-charentes-jug

© C

op

yri

ght

20

10

O

beo

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

Page 3: 20100629 dsl-poitou-charentes-jug

© C

op

yri

ght

20

10

O

beo

Agenda

Qui suis-je où suis-je ?

Les DSL en général

Les DSL textuels

Les DSL graphiques

Conclusion

Page 4: 20100629 dsl-poitou-charentes-jug

© C

op

yri

ght

20

10

O

beo

Jérôme BENOIS10 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 :)

http://blog.benois.fr & http://twitter.com/jeromebenois

Page 5: 20100629 dsl-poitou-charentes-jug

© C

op

yri

ght

20

10

O

beo

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

Page 6: 20100629 dsl-poitou-charentes-jug

© C

op

yri

ght

20

10

O

beo

Les DSL en général

Page 7: 20100629 dsl-poitou-charentes-jug

© C

op

yri

ght

20

10

O

beo

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 to the rise of domain-specific modeling (DSM)"

Page 8: 20100629 dsl-poitou-charentes-jug

© C

op

yri

ght

20

10

O

beo

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

Page 9: 20100629 dsl-poitou-charentes-jug

© C

op

yri

ght

20

10

O

beo

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

AndExternal 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 external DSLs, although XML's syntax is badly suited to this purpose.

Page 10: 20100629 dsl-poitou-charentes-jug

© C

op

yri

ght

20

10

O

beo

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é, non ambigu

Page 11: 20100629 dsl-poitou-charentes-jug

© C

op

yri

ght

20

10

O

beo

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

...

Page 12: 20100629 dsl-poitou-charentes-jug

© C

op

yri

ght

20

10

O

beo

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é

Page 13: 20100629 dsl-poitou-charentes-jug

© C

op

yri

ght

20

10

O

beo

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é

Page 14: 20100629 dsl-poitou-charentes-jug

© C

op

yri

ght

20

10

O

beo

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

Page 15: 20100629 dsl-poitou-charentes-jug

© C

op

yri

ght

20

10

O

beo

Comment Eclipse Modeling peut-il m'aider ?

Page 16: 20100629 dsl-poitou-charentes-jug

© C

op

yri

ght

20

10

O

beo

Un Eco-Système riche

Page 17: 20100629 dsl-poitou-charentes-jug

© C

op

yri

ght

20

10

O

beo

Les DSL textuels

Page 18: 20100629 dsl-poitou-charentes-jug

© C

op

yri

ght

20

10

O

beo

Un framework de développement de DSL textuel basé :

La plateforme Eclipse

EMF Eclipse Modeling Framework

ANTLR

Page 19: 20100629 dsl-poitou-charentes-jug

© C

op

yri

ght

20

10

O

beo

Chercher l'intention ?

Page 20: 20100629 dsl-poitou-charentes-jug

© C

op

yri

ght

20

10

O

beo

Une piste...

Page 21: 20100629 dsl-poitou-charentes-jug

© C

op

yri

ght

20

10

O

beo

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

Page 22: 20100629 dsl-poitou-charentes-jug

© C

op

yri

ght

20

10

O

beo

Comment exprimer cette intention à l'aide d'un DSL textuel ?

Page 23: 20100629 dsl-poitou-charentes-jug

© C

op

yri

ght

20

10

O

beo

Définition de la syntaxe textuelle de notre DSL avec TMF - Xtext

DEMO

Page 24: 20100629 dsl-poitou-charentes-jug

© C

op

yri

ght

20

10

O

beo

Les DSL graphiques

Page 25: 20100629 dsl-poitou-charentes-jug

© C

op

yri

ght

20

10

O

beo

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

DEMO

Page 26: 20100629 dsl-poitou-charentes-jug

© C

op

yri

ght

20

10

O

beo

Le système à modéliser

Les vues du système (les diagrammes)

(

Le point de vue

Du DSM au point de vue !Du DSM au point de vue !

Les vues du Système

● Analyse de performance● Analyse d'exigences● Fonction / Sous Fonction● Hardware / Software● DBA● Urbaniste des services

● Diagramme de blocs● Diagramme de composants● Diagramme de séquences● Tableur, Matrice

Page 27: 20100629 dsl-poitou-charentes-jug

© C

op

yri

ght

20

10

O

beo

Quelques exemples...

Page 28: 20100629 dsl-poitou-charentes-jug

© C

op

yri

ght

20

10

O

beo

Un modèle pour Tous

Page 29: 20100629 dsl-poitou-charentes-jug

© C

op

yri

ght

20

10

O

beo

Exemples d'utilisation : http://obeonetwork.org

Communauté/Réseau de partenaires proposant des modules sur étagère : DSL/DSM/Générateurs JavaEE, Spring, ...

Page 30: 20100629 dsl-poitou-charentes-jug

© C

op

yri

ght

20

10

O

beo

Autres exemples d'utilisation

Page 31: 20100629 dsl-poitou-charentes-jug

© C

op

yri

ght

20

10

O

beo

Page 32: 20100629 dsl-poitou-charentes-jug

© C

op

yri

ght

20

10

O

beo

Comment utilisez ces modèles ?

Page 33: 20100629 dsl-poitou-charentes-jug

© C

op

yri

ght

20

10

O

beo

En Java ?

Page 34: 20100629 dsl-poitou-charentes-jug

© C

op

yri

ght

20

10

O

beo

Page 35: 20100629 dsl-poitou-charentes-jug

© C

op

yri

ght

20

10

O

beo

Page 36: 20100629 dsl-poitou-charentes-jug

© C

op

yri

ght

20

10

O

beo

AcceleoGé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, ...)

DEMO

Page 37: 20100629 dsl-poitou-charentes-jug

© C

op

yri

ght

20

10

O

beo

Des Questions ?

Page 38: 20100629 dsl-poitou-charentes-jug

© C

op

yri

ght

20

10

O

beo

Merci

[email protected]

Page 39: 20100629 dsl-poitou-charentes-jug

© C

op

yri

ght

20

10

O

beo

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/