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



               Le 29 juin 2010


               Jérôme BENOIS
           jerome.benois@obeo.fr
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
Agenda


                   Qui suis-je où suis-je ?


                   Les DSL en général

                   Les DSL textuels

                   Les DSL graphiques


                   Conclusion
© Copyright 2010
     Obeo
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
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
© Copyright 2010
     Obeo




                   Les DSL en général
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
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
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
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
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
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
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
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
Comment Eclipse Modeling
                       peut-il m'aider ?
© Copyright 2010
     Obeo
Un Eco-Système riche
© Copyright 2010
     Obeo
© Copyright 2010
     Obeo




                   Les DSL textuels
Un framework de développement de DSL textuel basé :
                     La plateforme Eclipse
                     EMF Eclipse Modeling Framework
                     ANTLR
© Copyright 2010
     Obeo
Chercher l'intention ?
© Copyright 2010
     Obeo
© Copyright 2010
     Obeo




                   Une piste...
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
Comment exprimer cette intention à
                       l'aide d'un DSL textuel ?
© Copyright 2010
     Obeo
Définition de la syntaxe textuelle de
                       notre DSL avec TMF - Xtext




                                                           O
                                                        EM
© Copyright 2010




                                                       D
     Obeo
© Copyright 2010
     Obeo




                   Les DSL graphiques
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
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)
Quelques exemples...
© Copyright 2010
     Obeo
© Copyright 2010
     Obeo




                   Un modèle pour Tous
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
Autres exemples d'utilisation
© Copyright 2010
     Obeo
© Copyright 2010
     Obeo
Comment utilisez ces modèles ?
© Copyright 2010
     Obeo
© Copyright 2010
     Obeo




                   En Java ?
© Copyright 2010
     Obeo
© Copyright 2010
     Obeo
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
© Copyright 2010
     Obeo




                   Des Questions ?
Merci



                   jerome.benois@obeo.fr
© Copyright 2010
     Obeo
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

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 decette 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
  • 6.
    © Copyright 2010 Obeo Les DSL en général
  • 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, ilen 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 celaressemble ? 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 unDSL ? 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 deDSL 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 deDSL 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
  • 15.
    Comment Eclipse Modeling peut-il m'aider ? © Copyright 2010 Obeo
  • 16.
    Un Eco-Système riche ©Copyright 2010 Obeo
  • 17.
    © Copyright 2010 Obeo Les DSL textuels
  • 18.
    Un framework dedéveloppement de DSL textuel basé : La plateforme Eclipse EMF Eclipse Modeling Framework ANTLR © Copyright 2010 Obeo
  • 19.
    Chercher l'intention ? ©Copyright 2010 Obeo
  • 20.
    © Copyright 2010 Obeo Une piste...
  • 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
  • 22.
    Comment exprimer cetteintention à l'aide d'un DSL textuel ? © Copyright 2010 Obeo
  • 23.
    Définition de lasyntaxe textuelle de notre DSL avec TMF - Xtext O EM © Copyright 2010 D Obeo
  • 24.
    © Copyright 2010 Obeo Les DSL graphiques
  • 25.
    Créer un DSLgraphique : 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 aupoint 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)
  • 27.
  • 28.
    © Copyright 2010 Obeo Un modèle pour Tous
  • 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
  • 30.
  • 31.
  • 32.
    Comment utilisez cesmodèles ? © Copyright 2010 Obeo
  • 33.
    © Copyright 2010 Obeo En Java ?
  • 34.
  • 35.
  • 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
  • 37.
    © Copyright 2010 Obeo Des Questions ?
  • 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