SlideShare una empresa de Scribd logo
1 de 39
Descargar para leer sin conexión
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

Más contenido relacionado

La actualidad más candente

Chp6 - De UML vers C++
Chp6 - De UML vers C++Chp6 - De UML vers C++
Chp6 - De UML vers C++Lilia Sfaxi
 
Transformation M2M avec ATL
Transformation M2M avec ATL Transformation M2M avec ATL
Transformation M2M avec ATL Halima Bouabdelli
 
Modélisation et points de vue : Entre abstraction et pragmatisme
Modélisation et points de vue : Entre abstraction et pragmatismeModélisation et points de vue : Entre abstraction et pragmatisme
Modélisation et points de vue : Entre abstraction et pragmatismeChauvin Mariot
 
Cours algorithme
Cours algorithmeCours algorithme
Cours algorithmebadr zaimi
 
Cours Visual Basic.NET
Cours Visual Basic.NETCours Visual Basic.NET
Cours Visual Basic.NETAziz Darouichi
 
La programmation GPU avec C++ AMP pour les performances extrêmes
La programmation GPU avec C++ AMP pour les performances extrêmesLa programmation GPU avec C++ AMP pour les performances extrêmes
La programmation GPU avec C++ AMP pour les performances extrêmesMicrosoft
 

La actualidad más candente (12)

Tutoriel java
Tutoriel javaTutoriel java
Tutoriel java
 
POO en C++: Les fonctions
POO en C++: Les fonctionsPOO en C++: Les fonctions
POO en C++: Les fonctions
 
Uml
UmlUml
Uml
 
Chp6 - De UML vers C++
Chp6 - De UML vers C++Chp6 - De UML vers C++
Chp6 - De UML vers C++
 
Transformation M2M avec ATL
Transformation M2M avec ATL Transformation M2M avec ATL
Transformation M2M avec ATL
 
Modélisation et points de vue : Entre abstraction et pragmatisme
Modélisation et points de vue : Entre abstraction et pragmatismeModélisation et points de vue : Entre abstraction et pragmatisme
Modélisation et points de vue : Entre abstraction et pragmatisme
 
objective C
objective Cobjective C
objective C
 
Language java
Language javaLanguage java
Language java
 
LMO02.ppt
LMO02.pptLMO02.ppt
LMO02.ppt
 
Cours algorithme
Cours algorithmeCours algorithme
Cours algorithme
 
Cours Visual Basic.NET
Cours Visual Basic.NETCours Visual Basic.NET
Cours Visual Basic.NET
 
La programmation GPU avec C++ AMP pour les performances extrêmes
La programmation GPU avec C++ AMP pour les performances extrêmesLa programmation GPU avec C++ AMP pour les performances extrêmes
La programmation GPU avec C++ AMP pour les performances extrêmes
 

Destacado

Uml to code with acceleo
Uml to code with acceleoUml to code with acceleo
Uml to code with acceleoTarun Telang
 
Using ANTLR on real example - convert "string combined" queries into paramete...
Using ANTLR on real example - convert "string combined" queries into paramete...Using ANTLR on real example - convert "string combined" queries into paramete...
Using ANTLR on real example - convert "string combined" queries into paramete...Alexey Diyan
 
Building a Python IDE with Xtext
Building a Python IDE with XtextBuilding a Python IDE with Xtext
Building a Python IDE with XtextSebastian Zarnekow
 
Combine Spring Data Neo4j and Spring Boot to quickl
Combine Spring Data Neo4j and Spring Boot to quicklCombine Spring Data Neo4j and Spring Boot to quickl
Combine Spring Data Neo4j and Spring Boot to quicklNeo4j
 
Architectures n-tiers
Architectures n-tiersArchitectures n-tiers
Architectures n-tiersHeithem Abbes
 
Les Médias Sociaux dans les entreprises françaises - Barometre Hootsuite 2015
Les Médias Sociaux dans les entreprises françaises - Barometre Hootsuite 2015Les Médias Sociaux dans les entreprises françaises - Barometre Hootsuite 2015
Les Médias Sociaux dans les entreprises françaises - Barometre Hootsuite 2015Build Green
 
Converteo Forum E Marketing 2009 Prendre des décisions en période de crise
Converteo   Forum E Marketing 2009  Prendre des décisions en période de criseConverteo   Forum E Marketing 2009  Prendre des décisions en période de crise
Converteo Forum E Marketing 2009 Prendre des décisions en période de criseRaphaël Fétique
 
Trabajo de literatura
Trabajo de literaturaTrabajo de literatura
Trabajo de literaturakevinelmejor
 
P resentacion generalidades unidad 3
P resentacion generalidades unidad 3P resentacion generalidades unidad 3
P resentacion generalidades unidad 3Rosa Ma Barrón
 
Converteo - Adobe - Mesurer et personnaliser vos offres dans un contexte mult...
Converteo - Adobe - Mesurer et personnaliser vos offres dans un contexte mult...Converteo - Adobe - Mesurer et personnaliser vos offres dans un contexte mult...
Converteo - Adobe - Mesurer et personnaliser vos offres dans un contexte mult...Raphaël Fétique
 
LIB-MARGES_COMM_V4-2
LIB-MARGES_COMM_V4-2LIB-MARGES_COMM_V4-2
LIB-MARGES_COMM_V4-2Marion Piccio
 
Exemples de cv_et_quelques_conseils_pole_demploi
Exemples de cv_et_quelques_conseils_pole_demploiExemples de cv_et_quelques_conseils_pole_demploi
Exemples de cv_et_quelques_conseils_pole_demploiali_tech
 
La Parte del Cuerpo mas Importante
La Parte del Cuerpo mas ImportanteLa Parte del Cuerpo mas Importante
La Parte del Cuerpo mas ImportanteGuiru Xd
 
#JamaisSansElles Fin & Tech community - Natacha Quester-Séméon et Stanislas P...
#JamaisSansElles Fin & Tech community - Natacha Quester-Séméon et Stanislas P...#JamaisSansElles Fin & Tech community - Natacha Quester-Séméon et Stanislas P...
#JamaisSansElles Fin & Tech community - Natacha Quester-Séméon et Stanislas P...JamaisSansElles
 

Destacado (20)

presentationSirius
presentationSiriuspresentationSirius
presentationSirius
 
Uml to code with acceleo
Uml to code with acceleoUml to code with acceleo
Uml to code with acceleo
 
Using ANTLR on real example - convert "string combined" queries into paramete...
Using ANTLR on real example - convert "string combined" queries into paramete...Using ANTLR on real example - convert "string combined" queries into paramete...
Using ANTLR on real example - convert "string combined" queries into paramete...
 
Building a Python IDE with Xtext
Building a Python IDE with XtextBuilding a Python IDE with Xtext
Building a Python IDE with Xtext
 
ANTLR4 in depth
ANTLR4 in depthANTLR4 in depth
ANTLR4 in depth
 
Combine Spring Data Neo4j and Spring Boot to quickl
Combine Spring Data Neo4j and Spring Boot to quicklCombine Spring Data Neo4j and Spring Boot to quickl
Combine Spring Data Neo4j and Spring Boot to quickl
 
Acceleo Code Generation
Acceleo Code GenerationAcceleo Code Generation
Acceleo Code Generation
 
Architectures n-tiers
Architectures n-tiersArchitectures n-tiers
Architectures n-tiers
 
Diapo PFE
Diapo PFEDiapo PFE
Diapo PFE
 
Les Médias Sociaux dans les entreprises françaises - Barometre Hootsuite 2015
Les Médias Sociaux dans les entreprises françaises - Barometre Hootsuite 2015Les Médias Sociaux dans les entreprises françaises - Barometre Hootsuite 2015
Les Médias Sociaux dans les entreprises françaises - Barometre Hootsuite 2015
 
GruntJS
GruntJSGruntJS
GruntJS
 
Pase 2013
Pase 2013Pase 2013
Pase 2013
 
Converteo Forum E Marketing 2009 Prendre des décisions en période de crise
Converteo   Forum E Marketing 2009  Prendre des décisions en période de criseConverteo   Forum E Marketing 2009  Prendre des décisions en période de crise
Converteo Forum E Marketing 2009 Prendre des décisions en période de crise
 
Trabajo de literatura
Trabajo de literaturaTrabajo de literatura
Trabajo de literatura
 
P resentacion generalidades unidad 3
P resentacion generalidades unidad 3P resentacion generalidades unidad 3
P resentacion generalidades unidad 3
 
Converteo - Adobe - Mesurer et personnaliser vos offres dans un contexte mult...
Converteo - Adobe - Mesurer et personnaliser vos offres dans un contexte mult...Converteo - Adobe - Mesurer et personnaliser vos offres dans un contexte mult...
Converteo - Adobe - Mesurer et personnaliser vos offres dans un contexte mult...
 
LIB-MARGES_COMM_V4-2
LIB-MARGES_COMM_V4-2LIB-MARGES_COMM_V4-2
LIB-MARGES_COMM_V4-2
 
Exemples de cv_et_quelques_conseils_pole_demploi
Exemples de cv_et_quelques_conseils_pole_demploiExemples de cv_et_quelques_conseils_pole_demploi
Exemples de cv_et_quelques_conseils_pole_demploi
 
La Parte del Cuerpo mas Importante
La Parte del Cuerpo mas ImportanteLa Parte del Cuerpo mas Importante
La Parte del Cuerpo mas Importante
 
#JamaisSansElles Fin & Tech community - Natacha Quester-Séméon et Stanislas P...
#JamaisSansElles Fin & Tech community - Natacha Quester-Séméon et Stanislas P...#JamaisSansElles Fin & Tech community - Natacha Quester-Séméon et Stanislas P...
#JamaisSansElles Fin & Tech community - Natacha Quester-Séméon et Stanislas P...
 

Similar a 20100629 dsl-poitou-charentes-jug

20100910 mda en-2010-jug_summer_camp
20100910 mda en-2010-jug_summer_camp20100910 mda en-2010-jug_summer_camp
20100910 mda en-2010-jug_summer_campBENOIS Jérôme
 
Innover sans contrainte, intégrer sans rupture
Innover sans contrainte, intégrer sans ruptureInnover sans contrainte, intégrer sans rupture
Innover sans contrainte, intégrer sans ruptureGuillaume Laforge
 
Storyboarding for the web : Methodology and Tools
Storyboarding for the web : Methodology and ToolsStoryboarding for the web : Methodology and Tools
Storyboarding for the web : Methodology and ToolsEric DI POL
 
Domain-Specific Languages avec Groovy
Domain-Specific Languages avec GroovyDomain-Specific Languages avec Groovy
Domain-Specific Languages avec GroovyGuillaume Laforge
 
DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant
 DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant
DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisantcluelessjoe
 
Domain_Driven_Design
Domain_Driven_DesignDomain_Driven_Design
Domain_Driven_DesignSpikeeLabs
 
ESILV Nabil Bouzerna Architecture de systèmes de traitement de l'information ...
ESILV Nabil Bouzerna Architecture de systèmes de traitement de l'information ...ESILV Nabil Bouzerna Architecture de systèmes de traitement de l'information ...
ESILV Nabil Bouzerna Architecture de systèmes de traitement de l'information ...Nabil Bouzerna
 
Dialonics soutenance de projet final (31 aout 2012)
Dialonics soutenance de projet final (31 aout 2012)Dialonics soutenance de projet final (31 aout 2012)
Dialonics soutenance de projet final (31 aout 2012)legendcasio
 
Retour d'expérience sur la conception et la construction d'une application ME...
Retour d'expérience sur la conception et la construction d'une application ME...Retour d'expérience sur la conception et la construction d'une application ME...
Retour d'expérience sur la conception et la construction d'une application ME...Microsoft Technet France
 
Séminaire LINAGORA - " Le poste de travail libre : enfin mature !", juillet 2010
Séminaire LINAGORA - " Le poste de travail libre : enfin mature !", juillet 2010Séminaire LINAGORA - " Le poste de travail libre : enfin mature !", juillet 2010
Séminaire LINAGORA - " Le poste de travail libre : enfin mature !", juillet 2010LINAGORA
 
Point sur le fichier IMF Mesclado
Point sur le fichier IMF MescladoPoint sur le fichier IMF Mesclado
Point sur le fichier IMF MescladoMarc Bourhis
 
Webinaire IS Designer
Webinaire IS DesignerWebinaire IS Designer
Webinaire IS DesignerObeo
 
Cohabitation Logiciels Libres et propriétaires
Cohabitation Logiciels Libres et propriétairesCohabitation Logiciels Libres et propriétaires
Cohabitation Logiciels Libres et propriétairesMichel-Marie Maudet
 
Module Encodage Easytouse Light
Module Encodage Easytouse LightModule Encodage Easytouse Light
Module Encodage Easytouse Lightfchaabane
 
Video Encoding Solution
Video Encoding SolutionVideo Encoding Solution
Video Encoding Solutionsthiebe
 
Un aperçu du Petit dictionnaire du design numérique
Un aperçu du Petit dictionnaire du design numériqueUn aperçu du Petit dictionnaire du design numérique
Un aperçu du Petit dictionnaire du design numériquedesigners interactifs
 
Codedarmor 2012 - 09/10 - Eclipse 4 & Acceleo
Codedarmor 2012 - 09/10 - Eclipse 4 & AcceleoCodedarmor 2012 - 09/10 - Eclipse 4 & Acceleo
Codedarmor 2012 - 09/10 - Eclipse 4 & Acceleocodedarmor
 
Eclipse4 et acceleo
Eclipse4 et acceleoEclipse4 et acceleo
Eclipse4 et acceleoglefur
 
Projet COM02.ppt
Projet COM02.pptProjet COM02.ppt
Projet COM02.pptPtidej Team
 

Similar a 20100629 dsl-poitou-charentes-jug (20)

20100910 mda en-2010-jug_summer_camp
20100910 mda en-2010-jug_summer_camp20100910 mda en-2010-jug_summer_camp
20100910 mda en-2010-jug_summer_camp
 
Innover sans contrainte, intégrer sans rupture
Innover sans contrainte, intégrer sans ruptureInnover sans contrainte, intégrer sans rupture
Innover sans contrainte, intégrer sans rupture
 
test
testtest
test
 
Storyboarding for the web : Methodology and Tools
Storyboarding for the web : Methodology and ToolsStoryboarding for the web : Methodology and Tools
Storyboarding for the web : Methodology and Tools
 
Domain-Specific Languages avec Groovy
Domain-Specific Languages avec GroovyDomain-Specific Languages avec Groovy
Domain-Specific Languages avec Groovy
 
DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant
 DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant
DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant
 
Domain_Driven_Design
Domain_Driven_DesignDomain_Driven_Design
Domain_Driven_Design
 
ESILV Nabil Bouzerna Architecture de systèmes de traitement de l'information ...
ESILV Nabil Bouzerna Architecture de systèmes de traitement de l'information ...ESILV Nabil Bouzerna Architecture de systèmes de traitement de l'information ...
ESILV Nabil Bouzerna Architecture de systèmes de traitement de l'information ...
 
Dialonics soutenance de projet final (31 aout 2012)
Dialonics soutenance de projet final (31 aout 2012)Dialonics soutenance de projet final (31 aout 2012)
Dialonics soutenance de projet final (31 aout 2012)
 
Retour d'expérience sur la conception et la construction d'une application ME...
Retour d'expérience sur la conception et la construction d'une application ME...Retour d'expérience sur la conception et la construction d'une application ME...
Retour d'expérience sur la conception et la construction d'une application ME...
 
Séminaire LINAGORA - " Le poste de travail libre : enfin mature !", juillet 2010
Séminaire LINAGORA - " Le poste de travail libre : enfin mature !", juillet 2010Séminaire LINAGORA - " Le poste de travail libre : enfin mature !", juillet 2010
Séminaire LINAGORA - " Le poste de travail libre : enfin mature !", juillet 2010
 
Point sur le fichier IMF Mesclado
Point sur le fichier IMF MescladoPoint sur le fichier IMF Mesclado
Point sur le fichier IMF Mesclado
 
Webinaire IS Designer
Webinaire IS DesignerWebinaire IS Designer
Webinaire IS Designer
 
Cohabitation Logiciels Libres et propriétaires
Cohabitation Logiciels Libres et propriétairesCohabitation Logiciels Libres et propriétaires
Cohabitation Logiciels Libres et propriétaires
 
Module Encodage Easytouse Light
Module Encodage Easytouse LightModule Encodage Easytouse Light
Module Encodage Easytouse Light
 
Video Encoding Solution
Video Encoding SolutionVideo Encoding Solution
Video Encoding Solution
 
Un aperçu du Petit dictionnaire du design numérique
Un aperçu du Petit dictionnaire du design numériqueUn aperçu du Petit dictionnaire du design numérique
Un aperçu du Petit dictionnaire du design numérique
 
Codedarmor 2012 - 09/10 - Eclipse 4 & Acceleo
Codedarmor 2012 - 09/10 - Eclipse 4 & AcceleoCodedarmor 2012 - 09/10 - Eclipse 4 & Acceleo
Codedarmor 2012 - 09/10 - Eclipse 4 & Acceleo
 
Eclipse4 et acceleo
Eclipse4 et acceleoEclipse4 et acceleo
Eclipse4 et acceleo
 
Projet COM02.ppt
Projet COM02.pptProjet COM02.ppt
Projet COM02.ppt
 

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
  • 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, 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
  • 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 de dé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 cette intention à l'aide d'un DSL textuel ? © Copyright 2010 Obeo
  • 23. Définition de la syntaxe textuelle de notre DSL avec TMF - Xtext O EM © Copyright 2010 D Obeo
  • 24. © Copyright 2010 Obeo Les DSL graphiques
  • 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)
  • 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. Autres exemples d'utilisation © Copyright 2010 Obeo
  • 32. Comment utilisez ces modèles ? © Copyright 2010 Obeo
  • 33. © Copyright 2010 Obeo En Java ?
  • 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