Définition de syntaxes concrètes textuelles

Documents pareils
openarchitectureware & transformation de modèle Yannick Lizzi Architecte Logiciel itemis France Mail: lizzi@itemis.de

Générer du code à partir d une description de haut niveau

Ingénierie Dirigée par les Modèles. Editeurs de modèles. (Eclipse Modeling Tools) Jean-Philippe Babau

Environnement logiciel basé sur les modèles pour la conception collaborative de produit

TP1 : Initiation à Java et Eclipse

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

TP1 : Initiation à Java et Eclipse

DSL. Domain Specific Language. À l'aide des technologies Eclipse Modeling. Goulwen Le Fur Le 23 novembre 2012

Introduction à Eclipse

MEMOIRE. Présenté à L École Nationale d Ingénieurs de Sfax. en vue de l obtention du MASTÈRE INFORMATIQUE NTSID. Par.

Ingénierie des Modèles. Méta-modélisation

Utilisation de GCM (Google Cloud Messaging) pour Android. Partie préliminaire éventuelle : Création d'un AVD lisant GCM

21 mars Simulations et Méthodes de Monte Carlo. DADI Charles-Abner. Objectifs et intérêt de ce T.E.R. Générer l'aléatoire.

Le langage C. Séance n 4

Création d un service web avec NetBeans 5.5 et SJAS 9

Méthodes d évolution de modèle produit dans les systèmes du type PLM

Projet de développement

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

IFT287 Exploitation de base de données relationnelles et orientées objet. Laboratoire Mon premier programme Java en Eclipse

GUIDE RAPIDE EXPERT espace de partage

PG208, Projet n 3 : Serveur HTTP évolué

Cycle de vie du logiciel. Unified Modeling Language UML. UML: définition. Développement Logiciel. Salima Hassas. Unified Modeling Language

[Projet S9] Rédacteurs & Contributeurs Entité Rédacteurs Contributeurs Imededdine HOSNI Olivier MARTY. Validation du document Nom Date Visa

ECLIPSE ET PDT (Php development tools)

TD/TP 1 Introduction au SDK d Android

Cours 1 : La compilation

Etat de l art sur le développement logiciel dirigé par les modèles.

Francis BISSON ( ) Kenny CÔTÉ ( ) Pierre-Luc ROGER ( ) IFT702 Planification en intelligence artificielle

Votre premier projet Android

Apprendre Java et C++ avec NetBeans

Once the installation is complete, you can delete the temporary Zip files..

Séquencer une application

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Evolution et architecture des systèmes d'information, de l'internet. Impact sur les IDS. IDS2014, Nailloux 26-28/05/2014

TP1 : Initiation à l algorithmique (1 séance)

Approche Contract First

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

C est quoi le SWAT? Les équipes décrites par James Martin s appellent SWAT : Skilled With Advanced Tools.

Eclipse atelier Java

WEB page builder and server for SCADA applications usable from a WEB navigator

1. Installation d'un serveur d'application JBoss:

RTDS G3. Emmanuel Gaudin

wxwidgets dans un environnement Microsoft Windows

Programmation Web. Madalina Croitoru IUT Montpellier

2. Cliquez Contact Directory of Public Administration. 5. Tapez le mot de passe - Hello (pour OFPA). Changez le mot de passe en cas de

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Le Registre sous Windows 8 architecture, administration, script, réparation...

TP1. Outils Java Eléments de correction

Bases Java - Eclipse / Netbeans

La démarche MDA. Auteur : Projet ACCORD (Assemblage de composants par contrats en environnement ouvert et réparti)*

TP3 Intégration de pratiques agiles. 1. User Stories (1) Scénario d intégration agile. En direct-live du château

D E S C R I P T I O N D E S É L É M E N T S C L E F S D ' U I M A

KM2 W1 EVC1 M3~ Manuel AUTOMSIM API 24V. BP Dcy 1MINI 1MAXI.

BIRT (Business Intelligence and Reporting Tools)

Vérifica(on et Valida(on de Business Process. Ang Chen et Levi Lúcio

Projet de développement. Introduction à Eclipse. Application à votre projet. Philippe Collet. Organisation. Cours 1 : principes généraux - svn

PROJET ALGORITHMIQUE ET PROGRAMMATION II

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

Cours 1 : Qu est-ce que la programmation?

Installer Enterprise Miner 5.1 en SAS environnement Windows

Gestion d identités PSL Exploitation IdP Authentic

Génie Logiciel avec Ada. 4 février 2013

1. Plan. 1. Plan Information essentielles...2

ZEROSHELL NET BALANCING. Julien Dabin Page 1

Connexions à un projet CVS via Eclipse en accès local et distant. 15 Mai 2007

Connexion à SQL server

INSTALLATION CONFIGURATION D OWNCLOUD. La réponse informatique

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

Apache Camel. Entreprise Integration Patterns. Raphaël Delaporte BreizhJUG

DotNet. Plan. Les outils de développement

Chapitre VI- La validation de la composition.

Gestion des sauvegardes

Communication et suivi des problèmes via le Helpdesk NKCN

Comment retrouver le fichier "bingo" sauvegardé dans l'ordinateur? Socle commun

4. SERVICES WEB REST 46

Installation et compilation de gnurbs sous Windows

Guide d installation de MySQL

Windows 8 Installation et configuration

Qu est-ce que l analyse des données qualitatives? TAMS Analyzer n est: Projets collaboratifs. TAMS Analyzer permet:

TP 1. Prise en main du langage Python

RMI le langage Java XII-1 JMF

Wix : mettre en place un site d e commerce

TP1 - Prise en main de l environnement Unix.

MODELISATION UN ATELIER DE MODELISATION «RATIONAL ROSE»

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

WEBMESTRE : CONCEPTION DE SITES ET ADMINISTRATION DE SERVEURS WEB

Dossier. Développer en Java sur téléphone mobile. Benjamin Damécourt UFR SITEC Master 2 EESC 11 janvier 2012

TP Wireshark. Première approche de Wireshark. 1 ) Lancer Wireshark (double clic sur l icône sur le bureau). La fenêtre

Deuxième Licence en Informatique Data Warehousing et Data Mining La Classification - 1

INGÉNIERIE DIRIGÉE PAR LES MODÈLES ET COMPOSANTS SENSIBLES AU CONTEXTE

Description pas à pas des différents processus d installation, configuration, saisie des résultats et export des données.

Haka : un langage orienté réseaux et sécurité

Cellier Clément, Maginot Quentin, Tripier Axel, Zaorski Jean, Zini Robin. 18 mars 2015

Plan global Outils de développement et compilation. Plan. Objectifs des outils présentés. IDE, GCC/Clang, ASAN, perf, valgrind, GDB.

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

PROCÉDURE D'INSTALLATION WINDOWS 7 (32 ou 64 bit)

Transcription:

INSA 5GEI INGÉNIERIE DIRIGÉE PAR LES MODÈLES BE TP 2 18/11/2011 (SBE 1) Nous avons vu comment définir la syntaxe abstraite d un DSML. Le principe est d utiliser Ecore (ou un autre langage de métamodélisation) pour décrire le méta-modèle et OCL (ou un autre langage de contrainte) pour exprimer les propriétés liées à la sémantique statique qui n ont pas pu être capturées par le méta-modèle. La syntaxe abstraite ne peut pas être manipulée directement. Le projet EMF d Eclipse permet d engendrer un éditeur arborescent et les classes Java qui permettront de manipuler un modèle conforme à un méta-modèle. Cependant, ce ne sont pas des outils très pratiques lorsque l on veut saisir un modèle. Aussi, il est souhaitable d associer à une syntaxe abstraite une ou plusieurs syntaxes concrètes pour faciliter la construction et la modification des modèles associés. Ces syntaxes concrètes peuvent être textuelles (l objet de cette séance) ou graphiques (séance suivante). Pour la définition des syntaxes concrètes textuelles, nous allons utiliser l outil xtext 1 de openarchitectureware 2 (oaw). xtext fait partie du projet TMF (Textual Modeling Framework). Il permet non seulement de définir une syntaxe textuelle pour un DSL mais aussi de disposer, au travers d Eclipse, d un environnement de développement pour ce langage, avec en particulier un éditeur syntaxique (coloration, complétion, outline, détection et visualisation des erreurs, etc). xtext s appuie sur un générateur d analyseurs descendants récursifs (LL(k)). L idée est de décrire à la fois la syntaxe concrète du langage et comment le modèle EMF est construit en mémoire au fur et à mesure de l analyse syntaxique. 1 Définir une syntaxe concrète textuelle pour SimplePDL xtext consiste à définir une syntaxe concrète textuelle pour un DSML au travers d une grammaire qui doit pouvoir être analysée en LL(k). En particulier, elle ne doit pas être récursive à gauche 3! Généralement, xtext est utilisé aussi pour engendrer le méta-modèle correspondant. C est ce que nous allons voir dans un premier temps. Cependant, xtext peut aussi travailler à partir d un méta-modèle existant. Cependant, il ne faut pas que la distance soit trop grande entre le méta-modèle existant et la syntaxe textuelle souhaitée. Dans ce cas défavorable, il est conseillé de définir un méta-modèle adapté à la syntaxe concrète (par exemple engendré automatiquement) puis d écrire une transformation de modèle pour obtenir un modèle conforme au méta-modèle existant du DSML. 1. http ://www.eclipse.org/xtext/ 2. http ://www.eclipse.org/workinggroups/oaw/ 3. Voir la documentation de xtext : http://www.eclipse.org/xtext/documentation BE TP 2 1/6

Exercice 1 : Première syntaxe textuelle pour SimplePDL : PDL1 Comme toujours avec Eclipse, il faut commencer par créer un nouveau projet. 1.1 Création du projet xtext. Sous Eclipse, on commence par définir un projet (New > Project, puis xtext > xtext project). Il faut indiquer d abord le nom du projet principal (fr.enseeiht.pdl1 par exemple), le nom du langage (PDL1), et l extension pour les fichiers contenant les modèles correspondants (pdl1). Plusieurs projets sont alors créés, en particulier fr.enseeiht.pdl1 qui contient dans src le fichier xtext qui décrit la syntaxe de PDL1. Ce fichier nommé pdl1.xtext apparaît d ailleurs dans l éditeur. Il contient un squelette montrant la structure d un fichier xtext. La première ligne indique le langage qui est défini. La ligne suivante indique le métamodèle qui sera engendré. Le reste du fichier est composé des règles de production définissant la syntaxe concrète textuelle avec les actions qui permettent de construire le modèle EMF correspondant. 1.2 Définition de la syntaxe PDL1. Un exemple de la syntaxe textuelle souhaitée est donné dans l exemple ci-dessous. process dvp { wd a wd b wd c ws s2s from a to b ws f2f from b to c } Le fichier xtext correspondant est donné au listing 1. Copier/coller le texte de la figure 1 dans PDL1.xtext. 1.3 Engendrer l outillage xtext pour PDL1. Dans le répertoire src du projet principal, il faut sélectionner le fichier GeneratePDL1.mwe, cliquer à droite et sélectionner Run As > MWE Workflow. La génération prend un peu de temps... 1.4 Utiliser l éditeur PDL1 engendré. Il faut lancer un second Eclipse (depuis le premier bien sûr!) pour que les projets xtext engendrés puissent être utilisés. Dans le deuxième Eclipse, on peut créer un projet et dans ce projet créer un fichier avec l extension.pdl1, par exemple process1.pdl1. Saisir un exemple de processus et regarder les possibilités de l éditeur. 1.5 Consulter le méta-modèle PDL1 engendré. Le méta-modèle PDL1 a été engendré. Le fichier PDL1.ecore est présent dans le répertoire src-gen du projet principal. L ouvrir avec l éditeur graphique Ecore (cliquer à droite et sélectionner initialize ecore_diagram diagram file). Exercice 2 : Autre syntaxe textuelle pour SimplePDL : PDL2 On considère une nouvelle syntaxe textuelle dont le fichier xtext est donné au listing 2. 2.1 Reprendre les questions de l exercice précédent en utilisant PDL2. 2.2 Comparer les deux méta-modèles, DPL1.ecore et PDL2.ecore. Exercice 3 : Engendrer la description textuelle à partir du modèle Voyons comment utiliser un méta-modèle existant plutôt que de laisser xtext l engendrer. BE TP 2 2/6

Listing 1 Description xtext pour la syntaxe PDL1 grammar fr.enseeiht.pdl1 with org.eclipse.xtext.common.terminals generate pdl1 "http://www.enseeiht.fr/pdl1" Process : process name=id { processelements+=processelement* ProcessElement : WorkDefinition WorkSequence Guidance WorkSequence : ws linktype=worksequencetype from predecessor=[workdefinition] to successor=[workdefinition] Guidance: text=string WorkDefinition : wd name=id enum WorkSequenceType : start2start = s2s finish2start = f2s start2finish = s2f finish2finish = f2f BE TP 2 3/6

Listing 2 Description xtext pour la syntaxe PDL2 grammar fr.enseeiht.pdl2 with org.eclipse.xtext.common.terminals generate pdl2 "http://www.enseeiht.fr/pdl2" Process : process name=id { processelements+=processelement* ProcessElement : WorkDefinition Guidance WorkDefinition : wd name=id { ( starts if (linkstopredecessors+=dependancestart)+)? ( finishes if (linkstosuccessors+=dependancefinish)+)? DependanceStart : predecessor=[workdefinition] link=worksequencekindstart WorkSequenceKindStart: Started2Start = started Started2Finish = finished DependanceFinish : predecessor=[workdefinition] link=worksequencekindfinish WorkSequenceKindFinish: Finished2Start = started Finished2Finish = finished Guidance: text=string BE TP 2 4/6

3.1 Définir le méta-modèle existant. Il est fourni dans le fichier SimplePDL.ecore. Créer un projet (General) appelé fr.enseeiht.simplepdl et y ajouter le méta-modèle SimplePDL.ecore. Le sélectionner, cliquer à droite, faire New > Other puis Eclipse Modeling Framework > EMF Generator Model. Suivre l assistant et faire Generate all une fois le fichier SimplePDL.genmodel créé. 3.2 Créer un projet xtext appelé fr.enseeiht.simplepdl.txt, avec SimplePDL comme nom de langage. Le fichier SimplePDL.ecore possède l option generate. Pour s appuyer sur un méta-modèle existant, il suffit de faire un import pour charger le fichier ecore correspondant au méta-modèle et de définir un alias, ici pdl. On commente la ligne qui commence par generate. Voir le listing 3. Il suffit alors d exécuter le fichier SimplePDL.mwe, puis de lancer le second Eclipse pour utliser l éditeur engendré. 2 Application aux réseaux de Petri Exercice 4 : Définir des syntaxes textuelles pour les réseaux de Petri Proposer une ou plusieurs syntaxes textuelles pour les réseaux de Petri et utiliser xtext pour engendrer l outillage Eclipse correspondant. BE TP 2 5/6

Listing 3 Syntaxe textuelle xtext utilisant le méta-modèle SimplePDL existant grammar fr.enseeiht.txt.simplepdl with org.eclipse.xtext.common.terminals import "platform:/resource/fr.enseeiht.simplepdl/simplepdl.ecore" as pdl // generate simplepdl "http://www.enseeiht.fr/txt/simplepdl" Process returns pdl::process : process name=id { processelements+=processelement* ProcessElement returns pdl::processelement : WorkDefinition WorkSequence Guidance WorkDefinition returns pdl::workdefinition : wd name=id WorkSequence returns pdl::worksequence : ws linktype=worksequencetype from predecessor=[pdl::workdefinition] to successor=[pdl::workdefinition] Guidance returns pdl::guidance : text=string enum WorkSequenceType returns pdl::worksequencetype : starttostart = s2s finishtostart = f2s starttofinish = s2f finishtofinish = f2f BE TP 2 6/6