![Page 1: P7 - Transformaciones de modelo a texto con Acceleo](https://reader035.vdocumento.com/reader035/viewer/2022071506/62cfb7749ef50608dc09cc49/html5/thumbnails/1.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022071506/62cfb7749ef50608dc09cc49/html5/thumbnails/2.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022071506/62cfb7749ef50608dc09cc49/html5/thumbnails/3.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022071506/62cfb7749ef50608dc09cc49/html5/thumbnails/4.jpg)
Instalación
05/12/13 PL2 - Transformaciones de modelo a texto con Acceleo 4
![Page 5: P7 - Transformaciones de modelo a texto con Acceleo](https://reader035.vdocumento.com/reader035/viewer/2022071506/62cfb7749ef50608dc09cc49/html5/thumbnails/5.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022071506/62cfb7749ef50608dc09cc49/html5/thumbnails/6.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022071506/62cfb7749ef50608dc09cc49/html5/thumbnails/7.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022071506/62cfb7749ef50608dc09cc49/html5/thumbnails/8.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022071506/62cfb7749ef50608dc09cc49/html5/thumbnails/9.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022071506/62cfb7749ef50608dc09cc49/html5/thumbnails/10.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022071506/62cfb7749ef50608dc09cc49/html5/thumbnails/11.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022071506/62cfb7749ef50608dc09cc49/html5/thumbnails/12.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022071506/62cfb7749ef50608dc09cc49/html5/thumbnails/13.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022071506/62cfb7749ef50608dc09cc49/html5/thumbnails/14.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022071506/62cfb7749ef50608dc09cc49/html5/thumbnails/15.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022071506/62cfb7749ef50608dc09cc49/html5/thumbnails/16.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022071506/62cfb7749ef50608dc09cc49/html5/thumbnails/17.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022071506/62cfb7749ef50608dc09cc49/html5/thumbnails/18.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022071506/62cfb7749ef50608dc09cc49/html5/thumbnails/19.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022071506/62cfb7749ef50608dc09cc49/html5/thumbnails/20.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022071506/62cfb7749ef50608dc09cc49/html5/thumbnails/21.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022071506/62cfb7749ef50608dc09cc49/html5/thumbnails/22.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022071506/62cfb7749ef50608dc09cc49/html5/thumbnails/23.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022071506/62cfb7749ef50608dc09cc49/html5/thumbnails/24.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022071506/62cfb7749ef50608dc09cc49/html5/thumbnails/25.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022071506/62cfb7749ef50608dc09cc49/html5/thumbnails/26.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022071506/62cfb7749ef50608dc09cc49/html5/thumbnails/27.jpg)
¿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](https://reader035.vdocumento.com/reader035/viewer/2022071506/62cfb7749ef50608dc09cc49/html5/thumbnails/28.jpg)
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]