MD Days 2009 : DSL ou Domain Specific Language
Par Stéphane JUTIN le vendredi 27 novembre 2009, 14:49 - Technique - Lien permanent
UML est sensé pouvoir être utilisé pour modéliser n'importe quel processus métier même hors informatique. Néanmoins, c'est un langage complexe, plutôt destiné à des informaticiens or ceux qui possèdent la connaissance métier n'en sont pas en général.
Une solution à ce problème serait donc de créer un langage simplifié qui soit compréhensible par des utilisateurs finaux, et qui serait ensuite traduit en UML standard, via une transformation de modèle (cf billet précédent).
Qu'est-ce qu'un DSL ?
Plus généralement les DSL sont des langages dédiés à une tâche précise, qui se veulent plus simple d'utilisation que les langages généraliste.
Un programmeur peut par exemple utiliser des DSL pour les fichiers de configuration de son application. Les outils de génération de code type MDA qui nécessitent une configuration complexe tout en devant rester simple d'utilisation sont de bons candidats à l'usage de DSL.
On peut distinguer deux types de DSL :
- les DSL textuels : des mini-langages de programmation
- les DSL graphiques : l'information est saisie sous forme de schémas dans un éditeur
Les DSL textuels :
Microsoft a présenté l'outil Intellipad pour créer facilement des DSL textuels. Il s'agit d'un genre de notepad en trois colonnes, la partie de gauche stocke le texte à analyser, la partie du milieu la grammaire et la partie droite le résultat de l'analyse (dans un format nommé M-Schéma). Le développement de la grammaire se fait donc de façon itérative au fur et à mesure des besoins.
M-Schema
Ce nouveau format se veut une alternative à XML ou a JSON développée par l'équipe SQL-Server, et devrait donc être bien supporté par la future génération d'outils MS.
Les DSL graphiques
Auparavant, la création d'un éditeur graphique passait par le développement d'un plugin Eclipse (via l'API GMF) ou Visual Studio.
La société OBEO a présenté le logiciel OBEO-Designer qui permet de créer sans propre éditeur graphique pour un meta-modèle donné sans écrire de code.