p7 - transformaciones de modelo a texto con acceleo

28
Iván Ruiz Rube Departamento de Ingeniería Informática Escuela Superior de Ingeniería Universidad de Cádiz 05/12/13 1 Transformaciones de modelo a texto con Acceleo Procesadores de Lenguajes 2 PL2 - Transformaciones de modelo a texto con Acceleo Curso 2013-2014

Upload: others

Post on 14-Jul-2022

19 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: P7 - Transformaciones de modelo a texto con Acceleo

Iván Ruiz Rube Departamento de Ingeniería Informática Escuela Superior de Ingeniería Universidad de Cádiz

05/12/13 1

Transformaciones de modelo a texto con

Acceleo

Procesadores de Lenguajes 2

PL2 - Transformaciones de modelo a texto con Acceleo

Curso 2013-2014

Page 2: P7 - Transformaciones de modelo a texto con Acceleo

Contenidos

�  Introducción � Características � Desarrollo de una transformación

05/12/13 2 PL2 - Transformaciones de modelo a texto con Acceleo

Page 3: P7 - Transformaciones de modelo a texto con Acceleo

INTRODUCCIÓN

TRANSFORMACIONES DE MODELO A TEXTO CON ACCELEO

05/12/13 3 PL2 - Transformaciones de modelo a texto con Acceleo

Page 4: P7 - Transformaciones de modelo a texto con Acceleo

Instalación

05/12/13 PL2 - Transformaciones de modelo a texto con Acceleo 4

Page 5: P7 - Transformaciones de modelo a texto con Acceleo

Acceleo � Desarrollado por la empresa Obeo

Networks en el contexto de Eclipse Modeling

�  Sistema de generación de código basado en el estándar MOFM2T de la OMG.

� Reciente y muy potente al incluir características avanzadas en el desarrollo de transformaciones M2T.

�  Soporta cualquier tipo de modelo EMF: UML + Perfiles, Ecore, DSLs, etc.

05/12/13 PL2 - Transformaciones de modelo a texto con Acceleo 5

Page 6: P7 - Transformaciones de modelo a texto con Acceleo

CARACTERÍSTICAS

TRANSFORMACIONES DE MODELO A TEXTO CON ACCELEO

05/12/13 6 PL2 - Transformaciones de modelo a texto con Acceleo

Page 7: P7 - Transformaciones de modelo a texto con Acceleo

Características (I) �  Perfectamente integrado en Eclipse,

incluyendo todas las características habituales (coloreado sintaxis, quick fixes, etc.) a la hora de escribir las reglas de transformación.

� Control de la trazabilidad que permite encontrar fácilmente los elementos del modelo, las partes utilizadas del generador y el código finalmente generado.

�  Se puede ejecutar fuera de Eclipse, al incorporar soporte para Maven

05/12/13 PL2 - Transformaciones de modelo a texto con Acceleo 7

Page 8: P7 - Transformaciones de modelo a texto con Acceleo

Características (II)

�  Fácil de usar: lenguaje sencillo, parecido al desarrollo de JSPs

� Generación incremental: Permite modificar el código generado automáticamente y mantener los cambios, incluso después de regenerarlo.

� Versátil: Permite generar cualquier tipo de código “If you can write it, Acceleo can generate it.”

05/12/13 PL2 - Transformaciones de modelo a texto con Acceleo 8

Page 9: P7 - Transformaciones de modelo a texto con Acceleo

Características (III) �  Permite generar fácilmente el plugin que

lanza la transformación desde el propio archivo conteniendo el modelo origen.

� Nueva perspectiva en Eclipse: se incluyen una serie de vistas que permiten ◦  Incluir patrones de generación de código. ◦  Utilizar un “interprete” de transformaciones

Acceleo. ◦  Sobreescribir en tiempo de ejecución reglas de

transformación. ◦  etc.

05/12/13 PL2 - Transformaciones de modelo a texto con Acceleo 9

Page 10: P7 - Transformaciones de modelo a texto con Acceleo

DESARROLLO DE UNA TRANSFORMACIÓN

TRANSFORMACIONES DE MODELO A TEXTO CON ACCELEO

05/12/13 10 PL2 - Transformaciones de modelo a texto con Acceleo

Page 11: P7 - Transformaciones de modelo a texto con Acceleo

Creación de un proyecto EMF

05/12/13 PL2 - Transformaciones de modelo a texto con Acceleo 11

File → New Project → Empty EMF Project Los metamodelos los crearemos dentro de un proyecto EMF

Page 12: P7 - Transformaciones de modelo a texto con Acceleo

Metamodelo Ecore

05/12/13 PL2 - Transformaciones de modelo a texto con Acceleo 12

WebPageMM

Page 13: P7 - Transformaciones de modelo a texto con Acceleo

Arquitectura del ejemplo

05/12/13 PL2 - Transformaciones de modelo a texto con Acceleo 13

Ecore

Acceleo

WebPageMM

UCA web UCA.html

WebPage2HTML

conforme A

conforme A

conforme A

transformación

origen

Page 14: P7 - Transformaciones de modelo a texto con Acceleo

Correspondencia del metamodelo

05/12/13 PL2 - Transformaciones de modelo a texto con Acceleo 14

<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

Page 15: P7 - Transformaciones de modelo a texto con Acceleo

Creación de un proyecto de código

05/12/13 PL2 - Transformaciones de modelo a texto con Acceleo 15

File → New Project → Java Project Crearemos un nuevo proyecto Java, donde guardaremos el prototipo de código destino y posteriormente los modelos y el código que se

generará automáticamente

Page 16: P7 - Transformaciones de modelo a texto con Acceleo

Prototipo de código generado

05/12/13 PL2 - Transformaciones de modelo a texto con Acceleo 16

Page 17: P7 - Transformaciones de modelo a texto con Acceleo

Creación de un proyecto M2T

05/12/13 PL2 - Transformaciones de modelo a texto con Acceleo 17

File → New Acceleo Project Proyecto Acceleo donde definiremos los módulos de

generación de código

Page 18: P7 - Transformaciones de modelo a texto con Acceleo

Creación de un proyecto M2T (II)

05/12/13 PL2 - Transformaciones de modelo a texto con Acceleo 18

Page 19: P7 - Transformaciones de modelo a texto con Acceleo

Desarrollo de la transformación (I)

� Cabecera del módulo de transformación

05/12/13 PL2 - Transformaciones de modelo a texto con Acceleo 19

[comment encoding = MacRoman /] [** * The documentation of the module. */] [module generateHTMLModule('http://webpagemm/1.0')/] [** * The documentation of the template. * @param aWebPage */] [template public generateHTMLModule(aWebPage : WebPage)]

 

Page 20: P7 - Transformaciones de modelo a texto con Acceleo

Desarrollo de la transformación (II)

� Código encargado de crear el fichero e incluir las etiquetas de apertura del HTML

05/12/13 PL2 - Transformaciones de modelo a texto con Acceleo 20

[comment @main /] [file (aWebPage.name.concat('.html'), false, 'MacRoman')] <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">

<head> <title>[aWebPage.name/]</title> </head> <body>

<img width="300" height="126" src="[aWebPage.header.logo/]"/> <H1>[aWebPage.header.title/]</H1>  

Page 21: P7 - Transformaciones de modelo a texto con Acceleo

Desarrollo de la transformación (III)

� Código que genera los párrafos y los mapas de Google

05/12/13 PL2 - Transformaciones de modelo a texto con Acceleo 21

[for(p: Paragraph | aWebPage.paragraphs)] <p>[p.text/]</p>

[/for]

<br/> [for(map: Map | aWebPage.maps)]

<img src="http://maps.googleapis.com/maps/api/staticmap?center=[map.lat/],[map.lng/]&zoom=11&size=200x200&sensor=false"> [/for]  

Page 22: P7 - Transformaciones de modelo a texto con Acceleo

Desarrollo de la transformación (IV)

� Código que se encarga de escribir el pié de página, cerrar el HTML y finalizar la plantilla.

05/12/13 PL2 - Transformaciones de modelo a texto con Acceleo 22

<br/><hr/> <div align="center">[aWebPage.footer.info/]</div> </body> </html> [/file]

[/template]  

Page 23: P7 - Transformaciones de modelo a texto con Acceleo

Desarrollo de un modelo origen

05/12/13 PL2 - Transformaciones de modelo a texto con Acceleo 23

Page 24: P7 - Transformaciones de modelo a texto con Acceleo

Ejecución de la transformación

05/12/13 PL2 - Transformaciones de modelo a texto con Acceleo 24

Page 25: P7 - Transformaciones de modelo a texto con Acceleo

Resultado: Página HTML

05/12/13 PL2 - Transformaciones de modelo a texto con Acceleo 25

Page 26: P7 - Transformaciones de modelo a texto con Acceleo

RESUMEN

TRANSFORMACIONES DE MODELO A TEXTO CON ACCELEO

05/12/13 26 PL2 - Transformaciones de modelo a texto con Acceleo

Page 27: P7 - Transformaciones de modelo a texto con Acceleo

¿Qué hemos aprendido hoy?

� Acceleo 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 del módulo de generación de código es similar al desarrollo de páginas web con JSP.

05/12/13 PL2 - Transformaciones de modelo a texto con Acceleo 27

Page 28: P7 - Transformaciones de modelo a texto con Acceleo

05/12/13 28 PL2 - Transformaciones de modelo a texto con Acceleo

Transformaciones de modelo a texto con

Acceleo

Procesadores de Lenguajes 2

Iván Ruiz Rube [email protected]