Télécharger le Numéro « Spécial 2013 »




Recherche :

Créer un langage métier (DSL) avec Kermeta (1er partie) : le métamodèle ecore de la tortue Logo
Langages

Cette série de tutoriels illustre comment créer un langage dédié dans l'environnement Eclipse pour notre langage jouet : la tortue Logo (inspiré du langage original http://fr.wikipedia.org/wiki/Logo_(langage) ).  Kermeta nous permettra d'assembler autour du métamodèle Logo les différents éléments et outils que l'on souhaitera fournir pour ce langage.

Contexte général

Pour répondre aux problématiques de complexité, d'évolutivité et d'hétérogénéité des systèmes, il semble nécessaire aujourd'hui de recourir à des méthodes relativement nouvelles, fondées sur des techniques de nature générative s'appuyant sur des méta-modèles précis.

Elles sont organisées pour harmoniser le travail avec des langages de modélisation à visée générale, tels qu'UML, qui ne prennent pas en compte les spécificités d'un domaine mais aussi avec des  langages métier (ou DSL : Domain Specific Language) qui sont spécifiques pour une communauté donnée. Ces derniers guideront alors l'utilisateur de manière fine.

Grâce aux outils de génération, il est maintenant plus facile et moins coûteux de créer et d'outiller des DSL adaptés à ses propres besoins spécifiques à un métier ou une communauté. Il est par exemple possible d'avoir des outils basés sur une abstraction suffisamment précise pour pouvoir la traiter de manière sûre et fiable et donc d'en tirer des résultats automatiques qui auraient été difficiles voire impossibles à obtenir sur un modèle inadapté ou trop générique. Par exemple, il est très difficile de faire de la vérification formelle sur des langages généraux tels qu'UML.

Contenu de cette première étape

Le but de ce tutoriel est de suivre l'exemple de la tortue logo fourni avec l'outil Kermeta pour montrer les différentes étapes de la construction d'un DSL dans Eclipse. Il permet d'appréhender les différents éléments, et de l'appliquer à d'autre langages (dont UML ;-) ).

Cette première étape va vous apprendre à créer la structure de base sous forme d'un méta-modèle Ecore et à utiliser l'éditeur réflexif pour créer les premiers programmes Logo.

1. Installation de Kermeta et des exemples

Pour ce tutorial vous aurez besoin de Kermeta, vous pouvez soit récupérer un bundle prêt à l'emploi, soit l'installer dans un Eclipse existant en utilisant le site update d'eclipse. http://www.kermeta.org/download/

Pour installer le code et les modèles de l'exemple Logo, depuis Eclipse, il vous suffit alors de faire, File | New | Examples... | Km Logo tutorial (plugin for the main workbench). Cela installera tout les projets Eclipse utilisés dans ce tutoriel.

2. Création du fichier Ecore

Le fichier Ecore contiendra la structure de votre langage, et en défini les concepts de manière indépendante de la ou les syntaxes concrètes choisies (qui seront par exemple textuelles ou graphiques). Ce fichier ecore constituera la syntaxe abstraite de notre langage Logo qui sera étendu par tous les outils qui ‘appuieront dessus.

Dans le tutoriel, c'est le fichier fr.irisa.triskell.kmlogo.model/logo/1.Metamodel/ASMLogo.ecore

Ce fichier défini donc les instructions que l’on pourra donner à notre tortue. Par exemple Forward pour lui dire d'avancer, Right pour tourner à droite, … ainsi que des structures de contrôle comme Repeat pour répéter un block d'instruction, If pour faire des choix, etc.

3. Visualisation du Ecore sous forme de diagramme de classe

Un fichier Ecore est typiquement représenté sous forme de diagramme de classe. Vous pouvez en créer un grâce au projet Ecore tools d’Eclipse. Click droit sur le fichier ecore ­| Initialize Ecore diagram file…

Dans la vue "outline ", sélectionnez le package ASM et créez y un diagramme. Déplacez dans ce nouveau diagramme les éléments du packages que vous souhaitez y représenter.

Comme le placement automatique n’est pas vraiment le fort de cet outil (du moins dans sa version actuelle) vous aurez à replacer les boites pour faire des diagrammes plus représentatifs.

4. Quelques points à vérifier dans le Ecore pour que tout fonctionne bien

Le fichier Ecore doit respecter un certains nombre de règles de bonne formation pour que les outils suivant fonctionnent de manière optimale. En voici quelques uns :

  • Chaque EPackage doit avoir une nsUri unique et si possible qui ne corresponde pas à un chemin vers un fichier existant.
  • Idéalement il faut créer un graphe de contenance sous forme d'arbre. En effet, certains outils automatiques s'appuient sur cette notion. Comme par exemple la vue "outline". Dans notre exemple Logo, tout peut être contenu par un Block.

5. Créer un premier modèle avec l'éditeur réflexif

Pour créer le premier modèle, le plus simple est d'ouvrir le fichier Ecore, et dans la outline sélectionner l'élement de plus haut niveau de notre graphe de contenance ( pour nous : un Block),  click droit | create dynamic instance… on obtient un modèle conforme à Logo au format XMI.

Cela permet d'écrire les premiers programmes Logo.

6. Editer un modèle avec l'éditeur réflexif

Grâce aux liens de contenance cet éditeur réflexif, un click droit nous permet de créer des fils (child ou sous éléments) ou des frères (sibling ou éléments au même niveau que l'élément sélectionné).

La vue prioriété est aussi très utile pour compléter certaines données, par exemple pour changer les valeurs des constantes ou des noms des procédures Logo.

Quelques exemples de programmes logos au format XMI sont disponibles dans le répertoire fr.irisa.triskell.kmlogo.model/logo/1.Metamodel/models

7. Conclusion

Dans ce tutorial nous avons vu les bases pour gérer la structure d'un langage grâce à un métamodèle.

Néanmoins,  il nous reste plusieurs points à voir : renforcer la confiance en ajoutant des contraintes, donner vie au modèle en lui spécifiant un comportement, fournir des syntaxes concrètes plus sympas que ce simple éditeur réflexif (textuelles ou graphique),  utiliser ce langage sur une plateforme concrète réelle (un robot), …

Ils seront abordés dans les tutoriels suivants.

Proposer un tutoriel
Vous souhaitez partagez vos connaissances avec les membres de Programmez! Publiez vos tutoriels.

L'auteur
dvojtise (Didier Vojtisek)

Ingénieur de recherche INRIA, équipe Triskell

Je travaille dans une équipe de recherche spécialisée dans le génie logiciel basé sur les technologies d'Ingéniérie Dirigée par les Modèles.




De A à Z
Programmez.com - 2013 - Tous droits réservés
Développement - WEB - ASP - PHP - C++ - Delphi - Java - Magazines - Ressources - Forum - Télécharger - Video - Emploi - Campus - .Net - Tutoriels

Le présent site Web est édité par Go 02, Sarl inscrite au RCS de Paris sous le N° 411321366 et dont le siège social est au 21 rue de Fécamp 75012 Paris.
Adresse de courrier électronique :diff@programmez.com

Le directeur de la publication du site www.programmez.com est Jean-Claude Vaudecrane en qualité de gérant de la sarl GO 02

Le portail du décideur informatique en entreprise : Solutions & Logiciels