• No se han encontrado resultados

Transformaciones de modelo a texto con MOFScript Curso

N/A
N/A
Protected

Academic year: 2021

Share "Transformaciones de modelo a texto con MOFScript Curso"

Copied!
39
0
0

Texto completo

(1)

Iván Ruiz Rube

Departamento de Ingeniería Informática

Escuela Superior de Ingeniería

Universidad de Cádiz

20/01/14 1

Transformaciones de

modelo a texto con

MOFScript

Procesadores de Lenguajes 2

PL2 - Transformaciones de modelo a texto con MOFScript

(2)

Contenidos

—

Instalación

—

Introducción

—

Componentes

—

Características del lenguaje

—

Desarrollo de una transformación

20/01/14 2 PL2 - Transformaciones de modelo a texto con MOFScript

(3)

INSTALACIÓN

TRANSFORMACIONES DE MODELO A TEXTO CON MOFSCRIPT

20/01/14 3 PL2 - Transformaciones de modelo a texto con MOFScript

(4)

Instalación MOFScript

20/01/14

PL2 - Transformaciones de modelo a texto con MOFScript 4

(5)

INTRODUCCIÓN

TRANSFORMACIONES DE MODELO A TEXTO CON MOFSCRIPT

20/01/14 5 PL2 - Transformaciones de modelo a texto con MOFScript

(6)

MOFScript

—

Herramienta muy utilizada para

transformaciones de modelo a texto

(código o documentación).

—

Implementación de la especificación M2T

de la OMG. Alineamiento con el estándar

QVT.

—

Existen alternativas M2T más recientes

como Acceleo, JET o Xtend.

20/01/14

PL2 - Transformaciones de modelo a texto

(7)

Características (I)

—

Generación de texto desde modelos

basados en MOF, UML, Ecore u otros

creados con EMF.

—

Permite crear múltiples ficheros de salida.

Codificación configurable.

—

Control de la trazabilidad desde el

modelo a los bloques de código generado.

—

Integración con código Java externo.

20/01/14

PL2 - Transformaciones de modelo a texto

(8)

Características (II)

—

Fácil de usar: lenguaje sencillo con pocos

constructores.

—

Lenguaje imperativo, similar a los

lenguajes de scripting.

—

Reglas invocadas explícitamente, excepto

la inicial (main).

—

Se permite la herencia de

transformaciones.

20/01/14

PL2 - Transformaciones de modelo a texto

(9)

Arquitectura

20/01/14

PL2 - Transformaciones de modelo a texto

con MOFScript 9

MOFScript se distribuye como un plugin que incorpora las

herramientas necesarias para que el usuario pueda interaccionar

con los servicios de reconocimiento y verificación de los

programas, ejecución de las transformaciones, etc.

(10)

COMPONENTES

TRANSFORMACIONES DE MODELO A TEXTO CON MOFSCRIPT

20/01/14 10 PL2 - Transformaciones de modelo a texto con MOFScript

(11)

Componentes

—

Los módulos MOFScript se componen de

los siguientes elementos:

Declaración del módulo

Reglas de transformación

–

Incluyendo una regla

main

.

Operaciones de escritura en ficheros

20/01/14

PL2 - Transformaciones de modelo a texto

(12)

Declaración del módulo

—

Define el nombre del módulo de

transformación, el/los metamodelo(s) de

origen y opcionalmente, la importación de

otros módulos.

20/01/14

PL2 - Transformaciones de modelo a texto

con MOFScript 12 import  “otraTransformacion.m2t"     texttransformation    module_name      (in  InputMM1:“input_metamodel_uri1",      in  InputMM2:“input_metamodel_uri2")   {     …  

(13)

Reglas de transformación

—

Las reglas de transformación son similares

a los métodos en Java. Pueden tener un

contexto, un tipo de retorno, parámetros

y un conjunto de sentencias a ejecutar.

Debe existir una regla

main

, sin

parámetros y sin tipo de retorno.

20/01/14

PL2 - Transformaciones de modelo a texto

con MOFScript 13

[InputMM.MMElement::]  rule_name  (param1:Type1,  param2:Type2)  {                //  statements  

         …  

 result=  exp;   }  

(14)

Escritura en ficheros

—

Indicar el nombre (relativo o absoluto)

del fichero donde se escribirá el texto de

salida. Las sentencias

println

y el texto

escapado

’ permitirán escribir en el último

file

declarado.

20/01/14

PL2 - Transformaciones de modelo a texto

con MOFScript 14

file  fichero(“ficherodesalida.txt”);  

fichero.println(“escribiendo  texto…”);   nl(1);  tab(2);  space(3);  

(15)

CARACTERÍSTICAS DEL

LENGUAJE

TRANSFORMACIONES DE MODELO A TEXTO CON MOFSCRIPT

20/01/14 15 PL2 - Transformaciones de modelo a texto con MOFScript

(16)

Expresiones MOFScript

20/01/14

PL2 - Transformaciones de modelo a texto

con MOFScript 16 if  (condition)  {    //  statements   }  else    {    //  statements   }   while  (condition){    //statements   }    

property  name:Type  =  value;   var  name:Type  =  value;  

(17)

Tipos de datos MOFScript

—

Predefinidos

String

Integer

Real

Boolean

List

Hashtable

PropertyMap

Object

—

Tipos del metamodelo (metaclases)

20/01/14

PL2 - Transformaciones de modelo a texto

(18)

Operaciones MOFScript

—

Predefinidos:

String: substring(), toLower(), replace()

Integer: +, -, *, /

List: add(), remove(), forEach(), select()

Hashtable: put(), get(), keys()

PropertyMap: load(), loadXML(), storeXML()

—

Tipos del metamodelo

objectsOfType(), oclIsTypeOf(), oclIsKindOf()

—

Utilidades del sistema

position(), time(), date(),

20/01/14

PL2 - Transformaciones de modelo a texto

(19)

DESARROLLO DE UNA

TRANSFORMACIÓN

TRANSFORMACIONES DE MODELO A TEXTO CON MOFSCRIPT

20/01/14 19 PL2 - Transformaciones de modelo a texto con MOFScript

(20)

Creación de un proyecto

20/01/14

PL2 - Transformaciones de modelo a texto

con MOFScript 20

File

New Project

Empty EMF Project

(21)

Arquitectura del ejemplo

20/01/14

PL2 - Transformaciones de modelo a texto

con MOFScript 21

Ecore

MOFScript WebPageMM

UCA web UCA.html

WebPage2HTML conforme A conforme A conforme A transformación origen

(22)

Correspondencia del metamodelo

20/01/14

PL2 - Transformaciones de modelo a texto

con MOFScript 22 <html> … <img src=“Header.logo"/> <h1>Header.title</h1> <p>Paragraph.text</p> <img src="http://mapas.org/map?=Map.lat,Map.long"> <div align="center">Footer.text</div> … </html> WebPageMM

(23)

Establecer rutas de trabajo

20/01/14

PL2 - Transformaciones de modelo a texto

(24)

Crear una transformación

MOFScript

20/01/14

PL2 - Transformaciones de modelo a texto

con MOFScript 24

(25)

Desarrollo de la transformación (I)

—

Nuestro fichero M2T definirá un módulo

de transformación, el cual transformará

un modelo basado en el metamodelo de

páginas web en texto.

20/01/14

PL2 - Transformaciones de modelo a texto

con MOFScript 25

property  filename:String  =  "index.html“;    

texttransformation  WebPage2HTML  (in  WebPageMM:"http:// webpagemm/1.0")  {  

(26)

Desarrollo de la transformación (II)

—

Función principal, la cual abrirá el fichero

de salida, escribirá las etiquetas de

apertura del HTML, lo poblará y luego

escribirá las etiquetas de cierre.

20/01/14

PL2 - Transformaciones de modelo a texto

con MOFScript 26

WebPageMM.WebPage::main  ()  {          

       stdout.println  ("Generando  web  para...  "  +  self.name);                                file  (filename);  //  Creamos  archivo  

       writeHTMLHeader(

self.name

);  //  Apertura  del  fichero  HTML          self.toHTML();  //  Contenidos  del  HTML  

       writeHTMLEnd();  //  Cierre  del  fichero  HTML      }  

(27)

Desarrollo de la transformación (III)

—

Función auxiliar que genera las etiquetas

de cabecera del documento HTML.

20/01/14

PL2 - Transformaciones de modelo a texto

con MOFScript 27

writeHTMLHeader(name:String){              '<html  lang="es">\n';  

     '<head>\n';  

     tab(1);    '<meta  http-­‐equiv="content-­‐type"  content="text/html;   charset=utf-­‐8">\n';  

     tab(1);      '<title>';  

name

;    '</title>\n';        '</head>\n';  

     '<body>\n';              }  

(28)

Desarrollo de la transformación (IV)

—

Función auxiliar que genera las etiquetas

de cierre del documento HTML.

20/01/14

PL2 - Transformaciones de modelo a texto

con MOFScript 28 writeHTMLEnd(){              nl(1);        '</body>';        nl(1);        '</html>';                      }  

(29)

Desarrollo de la transformación (V)

—

Función auxiliar que genera el contenido

HTML desde el modelo origen.

20/01/14

PL2 - Transformaciones de modelo a texto

con MOFScript 29 WebPageMM.WebPage::toHTML()  {                        self.header.toHTML();                  self.paragraphs-­‐>forEach(paragraph:WebPageMM.Paragraph){      paragraph.toHTML();          }              self.maps-­‐>forEach(map:WebPageMM.Map){      map.toHTML();          }                  self.footer.toHTML();                }  

(30)

Desarrollo de la transformación (VI)

—

Función auxiliar que genera el HTML

necesario para representar el título y el

logotipo de la página web.

20/01/14

PL2 - Transformaciones de modelo a texto

con MOFScript 30

WebPageMM.Header::toHTML()  {          nl(1);tab(1);              

         '<img  width="300"  height="126"  src="'  

self.logo

 '"/>';            nl(1);tab(1);  

         '<H1>'  

self.title

 '</H1>';      }  

(31)

Desarrollo de la transformación (VII)

—

Función auxiliar que genera el HTML

necesario para representar un párrafo de

la página web.

20/01/14

PL2 - Transformaciones de modelo a texto

con MOFScript 31

WebPageMM.Paragraph::toHTML()  {                        nl(1);tab(1);  

         '<p>'  

self.tex

t  '</p>';      }  

(32)

Desarrollo de la transformación (VIII)

—

Función auxiliar que genera el HTML

necesario para representar un mapa

estático de Google.

20/01/14

PL2 - Transformaciones de modelo a texto

con MOFScript 32

WebPageMM.Map::toHTML()  {                nl(1);  '<br/>';  

   nl(1);  tab(1);  

   '<img  src=  "http://maps.googleapis.com/maps/api/staticmap? center='  

self.lat

 ','  

self.long

 ‘  &zoom=11&  size=200x200  

&sensor=false">';      }  

(33)

Desarrollo de la transformación (IX)

—

Función auxiliar que genera el HTML

necesario para representar la información

del pié de página.

20/01/14

PL2 - Transformaciones de modelo a texto

con MOFScript 33

WebPageMM.Footer::toHTML()  {                  nl(1);  

   '<br/><hr/>';      nl(1);tab(1);  

         '<div  align="center">'  

self.info

 '</div>';      }  

(34)

Desarrollo de un modelo origen

20/01/14

PL2 - Transformaciones de modelo a texto

(35)

Ejecución de la transformación

20/01/14

PL2 - Transformaciones de modelo a texto

con MOFScript 35

Las opciones MOFScript de la barra de botones de Eclipse,

permiten compilar el fichero M2T, ejecutar una transformación

(36)

Resultado: Página HTML

20/01/14

PL2 - Transformaciones de modelo a texto

(37)

RESUMEN

TRANSFORMACIONES DE MODELO A TEXTO CON MOFSCRIPT

20/01/14 37 PL2 - Transformaciones de modelo a texto con MOFScript

(38)

¿Qué hemos aprendido hoy?

—

MOFScript es un lenguaje y un entorno

de ejecución para generar texto a partir

de modelos (M2T).

—

Permite generar varios ficheros de salida

de código ejecutable o documentación.

—

El desarrollo de las reglas de

transformación es similar a la

programación de métodos en Java.

20/01/14

PL2 - Transformaciones de modelo a texto

(39)

20/01/14 39 PL2 - Transformaciones de modelo a texto con MOFScript

Transformaciones de

modelo a texto con

MOFScript

Procesadores de Lenguajes 2

Iván Ruiz Rube

Referencias

Documento similar

Entre nosotros anda un escritor de cosas de filología, paisano de Costa, que no deja de tener ingenio y garbo; pero cuyas obras tienen de todo menos de ciencia, y aun

entorno algoritmo.

The part I assessment is coordinated involving all MSCs and led by the RMS who prepares a draft assessment report, sends the request for information (RFI) with considerations,

o Si dispone en su establecimiento de alguna silla de ruedas Jazz S50 o 708D cuyo nº de serie figura en el anexo 1 de esta nota informativa, consulte la nota de aviso de la

El quincenario de los frailes de Filipinas, condena para el Archipiélago los propósitos de nivelación jurídica que para todo territorio español, peninsular o ultramarino, se

Las manifestaciones musicales y su organización institucional a lo largo de los siglos XVI al XVIII son aspectos poco conocidos de la cultura alicantina. Analizar el alcance y

Proporcione esta nota de seguridad y las copias de la versión para pacientes junto con el documento Preguntas frecuentes sobre contraindicaciones y

[r]