1 / 113

Transformación de modelos con ATL

Transformación de modelos con ATL. Pau Giner OO-Method Research Group Department of Information Systems and Computation Technical University of Valencia, Spain. Agenda. Introducción Lenguajes de transformación de modelos Introducción a ATL ATL y Eclipse Tutorial 1 Tutorial 2

gates
Download Presentation

Transformación de modelos con ATL

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Transformación de modelos con ATL Pau Giner OO-Method Research Group Department of Information Systems and Computation Technical University of Valencia, Spain

  2. Agenda • Introducción • Lenguajes de transformación de modelos • Introducción a ATL • ATL y Eclipse • Tutorial 1 • Tutorial 2 • ATL al detalle • Tutorial 3 • ATL Avanzado • Referencias Transformación de modelos con ATL

  3. Introducción • MDD sitúa los modelos en el centro del desarrollo de software • Necesidad de operaciones para: • Mezclar {A,B}  {A+B} • Modificar AB • Relacionar AB Transformación de modelos con ATL

  4. Modelo Introducción Metamodelo ¿Dónde encajan las transformaciones de modelos? Motor de Transformación Reglas de Transformación Modelo Metamodelo Código Generado Generador de código Plantillas de Generación Transformación de modelos con ATL

  5. Tipos de Transformaciones de Modelos: Criterios • Según metamodelos origen y destino: • Endógenas: el mismo metamodelo • Mejora de la calidad del modelo: optimización, refactorización, simplificación… • Exógenas: distintos metamodelos • Según el cambio de nivel de abstracción: • Síntesis: Alto  Bajo • Ingeniería inversa: Bajo  Alto • Migración: En el mismo nivel Transformación de modelos con ATL

  6. Tipos de Transformaciones de Modelos Model Merging Model Modification Model Transformation Model Weaving/Linking Model Marking Transformación de modelos con ATL

  7. Model Merging Varios modelos se mezclan en uno Fácil de implementar Los metamodelos son los mismos Útil en modelado cooperativo Transformación de modelos con ATL

  8. Model Modification Los modelos se modifican (en tiempo de ejecución o no) para añadir elementos Mismo metamodelo No suele ser complejo de implementar Transformación de modelos con ATL

  9. Ejemplo: Eliminación de relaciones de herencia redundantes Transformación de modelos con ATL

  10. Ejemplo: • Aplicación de patrones Transformación de modelos con ATL

  11. Model Transformation Un modelo se transforma en otro. El modelo fuente se mantiene sin cambios. Modelos separados y metamodelos diferentes. Transformación de modelos con ATL

  12. Ejemplo • Modelo de proceso de negocio a redes de Petri para validación Transformación de modelos con ATL

  13. Model Weaving/Linking Dos o más modelos se correlacionan Los modelos originales permanecen sin modificaciones Es necesario proporcionar un modelo de weaving un metamodelo que defina los weavings No soportado por la mayoría de herramientas. Transformación de modelos con ATL

  14. Ejemplo: • Trazabilidad Transformación de modelos con ATL

  15. Model Marking A veces se necesita proporcionar información específica del metamodelo destino. Se añaden etiquetas/marcas al modelo fuente. Esto “ensucia” el modelo con conceptos específicos del modelo destino. MDA propone añadir marcas a los modelos, pero lo soportan pocas herramientas. Se recomienda mantener dicha información fuera del modelo (por ejemplo en ficheros XML). El motor de transformaciones ya utilizará dicha información cuando ejecute las transformaciones. Transformación de modelos con ATL

  16. Agenda • Introducción • Lenguajes de transformación de modelos • Introducción a ATL • ATL y Eclipse • Tutorial 1 • Tutorial 2 • ATL al detalle • Tutorial 3 • ATL Avanzado • Referencias Transformación de modelos con ATL

  17. ¿Cómo especificar transformaciones? Existen varias dimensiones mediante las cuales podemos distinguir las aproximaciones y lenguajes de transformación M2M: Aproximación Conceptual: Procedural, Funcional, Declarativa/Relacional Sintaxis Concreta: Textual, Gráfica Directionalidad: Unidirectional vs. Bidireccional Transformación de modelos con ATL

  18. Herramientas 3GL contra la API del Modelo (Java+EMF/MDR) Es complicado realizar modificaciones sencillas XSLT Sólo funciona con modelos basados en XML Escalabilidad limitada. No existen operaciones sobre el metamodelo, solamente manipulan XML. ATL: Atlas Transformation Language Textual, usado en la práctica, con depurador QVT: Query/Views/Transformations Estándar de OMG. Las implementaciones están surgiendo lentamente. MTF: Model Transformation Framework Textual, declarativo, soportado por IBM, no es open source oAW xTend, Kermeta Extensiones simples para la creación d emodelos Transformación de modelos con ATL

  19. Alternativas principales • ATL: Atlas Transformation Language • Solución para transformaciones m2m en la comunidad Eclipse • MOF 2.0 QVT: Query/Views/Transformations • Estándar de la OMG • Pocas implementaciones • Solo de parte de la especificación • QVT Operational Mappings • Implementación OpenSource muy reciente • SmartQVT Transformación de modelos con ATL

  20. Lenguajes para la transformación de modelos • Qué aportan? • Primitivas cercanas al dominio (son DSLs) • Preservación del grafo de dependencias • Correspondencia entre modelos origen y destino • Facilidades para consultar los elementos generados por una regla • Son modelos Transformación de modelos con ATL

  21. Ejemplo Transformación de modelos con ATL

  22. Agenda • Introducción • Lenguajes de transformación de modelos • Introducción a ATL • ATL y Eclipse • Tutorial 1 • Tutorial 2 • ATL al detalle • Tutorial 3 • ATL Avanzado • Referencias Transformación de modelos con ATL

  23. ATL Transformación de modelos con ATL • ATL es un subproyecto de Eclipse GMT • Desarrollado por el INRIA en Francia • requiere Eclipse como entorno de ejecución • Independiente del tipo de metamodelo: KM3,EMF, MDR… • Escalibilidad prioritaria • Se ejecuta en su propia máquina virtual • Soporte de la academia y la industria • Usado por Airbus, NASA Jet Propulsion Laboratory, Sodius… • Proporciona herramientas para su uso • Unidireccional • from  to

  24. ATL • Diferencias entre modelos origen y destino • Los modelos origen solo se pueden leer • Los modelos destino solo pueden ser escritos • Lenguaje híbrido: Imperativo-Declarativo • Declarativo • Matched rules basadas en pattern-matching • Lenguaje de navegación sin efectos laterales (OCL-like) • Imperativo • Called rules • Action blocks Transformación de modelos con ATL

  25. Tipos de fichero ATL • ATL module • Conjunto de reglas de transformación • Library • Conjunto de funciones de ayuda que puede ser importado • Query • Consultas que obtienen un valor simple de un modelo Transformación de modelos con ATL

  26. ATL: Reglas de transformación • Una regla declarativa especifica: • Un patrón origen que se buscará en los modelos fuente, • Un patrón destino que se creará en el destino por cada regla que haga matching. • Una regla imperativa es un procedimiento: • Se llama explícitamente • Puede tomar argumentos • Puede contener: • Un patrón declarativo, • Un action block (secuencia de sentencias), • Ambos. Transformación de modelos con ATL

  27. Patrón Origen • El patrón origen está formado por: • Un conjunto etiquetado de elementos de los metamodelos origen • Una guarda • Expresión booleana a modo de filtro • Se producirá un matching si se encuentran elementos en los modelos origen que: • Sean de los tipos especificados en el patrón, • Satisfagan la guarda. Transformación de modelos con ATL

  28. Patrón Destino • El patrón destino está compuesto de: • Elementos etiquetados del metamodelo destino • Para cada elemento una inicialización de sus propiedades • Para cada coincidencia se aplica el patrón destino: • Se crean los elementos destino • Se inicializan sus propiedades • Primero, evaluando el valor de las expresiones • Después, asignando dicho valor a la propiedad indicada Transformación de modelos con ATL

  29. Tabla Clase nombre nombre persistente Ejemplo de regla • “Las Clases marcadas como persistentes, se transformarán en Tablas cuyo nombre será el nombre de la clase original” Transformación de modelos con ATL

  30. Tabla Clase nombre nombre persistente Ejemplo de regla • Metamodelos • Origen: Diagrama de Clases • Destino: Modelo Relacional • Patrón origen • Elementos • c: Clase • Guarda • c.persistente • Patrón destino • Elementos • t:Tabla • Inicialización • t.nombre  c.nombre Transformación de modelos con ATL

  31. Orden de aplicación de las reglas • Con las reglas declarativas permiten al desarrollador despreocuparse del orden de ejecución: • No se especifica el orden de • Aplicación de reglas • Inicialización de propiedades • Sin embargo, se mantiene el determinismo • La ejecución de una regla no puede cambiar el modelo origen  No puede alterar las coincidencias • El modelo destino no es navegable  La creación de un elemento no puede afectar el valor de otro Transformación de modelos con ATL

  32. ATL: Un vistazo a la sintaxis • Transformación (ATL module): • Cabecera • Importación de librerías • Helpers y Attributes • Reglas • Modos de ejecución • Normal • Refinamiento Transformación de modelos con ATL

  33. ATL: Cabecera module module_name; create output_models [from|refines] input_models; • Se especifica: • Nombre del modulo • Modelos y Metamodelos implicados • OUT1 : UML, OUT2 : TraceModel… • Tipo de transformación • Modelo nuevo • Refinamiento • En versiones recientes la palabra clave es refining Transformación de modelos con ATL

  34. ATL: Librerías uses lib_name; • Permiten la modularización y reutilización de helpers • uses string Transformación de modelos con ATL

  35. ATL: Helpers helper [context context_type] def : helper_name(parameters) : return_type = exp; • Permiten extender el metamodelo con funciones y atributos derivados • Son atributos si no se usan parámetros • Las expresiones se definen en OCL • El contexto es opcional • El modulo ATL es el contexto por defecto • Ej: helpercontext Liga!Partido def: nombre : String = self.local.nombre +' - '+self.visitante.nombre; Transformación de modelos con ATL

  36. ATL: Reglas rule rule_name { from in_var : in_type [(condition)] [using {var1 : var_type1 = init_exp1; ... varn : var_typen = init_expn;}] to out_var1 : out_type1 ( bindings1 ) ... out_varn : out_typen ( bindingsn ) [do { statements }] } Transformación de modelos con ATL

  37. Agenda • Introducción • Lenguajes de transformación de modelos • Introducción a ATL • ATL y Eclipse • Tutorial 1 • Tutorial 2 • ATL al detalle • Tutorial 3 • ATL Avanzado • Referencias Transformación de modelos con ATL

  38. ATL y Eclipse • ADT: ATL Development Tool • Plugin para permitir el desarrollo de transformaciones • Aporta editores, vistas, mecanismos de ejecución y depuración de transformaciones. Transformación de modelos con ATL

  39. Perspectiva, Editor y Recursos Transformación de modelos con ATL

  40. Launch configuration Transformación de modelos con ATL

  41. Depurador Transformación de modelos con ATL

  42. Agenda • Introducción • Lenguajes de transformación de modelos • Introducción a ATL • ATL y Eclipse • Tutorial 1 • Tutorial 2 • ATL al detalle • Tutorial 3 • ATL Avanzado • Referencias Transformación de modelos con ATL

  43. Tutorial 1 • Metamodelos • Entrada: Book • Salida: Publication • Modelo de entrada: • libro.xmi • Transformación: • Crear para cada Libro una Publicación cuyo atributo nbPages sea la suma de las páginas de los capítulos del libro. Transformación de modelos con ATL

  44. Cabecera moduleBook2Publication; createOUT : PublicationfromIN : Book; • Los elementos create y from definen los modelos de salida y entrada que se representan mediante las variables OUT e IN Transformación de modelos con ATL

  45. Helpers • Definimos un helper getSumPages que nos devuelva el número de páginas de un libro • Sumando las páginas de cada capítulo helpercontext Book!Book def : getSumPages() : Integer = self.chapters->collect(c|c.nbPages).sum(); • Los contextos se expresan como Metamodelo!Elemento • Book!Book: La clase Book del metamodelo Book Transformación de modelos con ATL

  46. Reglas rule Book2Publication { from b : Book!Book to out : Publication!Publication( title <- b.title, nbPages <- b.getSumPages() ) } Transformación de modelos con ATL

  47. Reglas (con Guardas) • Si añadimos el requisito de que solo se transformen los libros con más de dos páginas rule Book2Publication { from b : Book!Book ( b.getSumPages() > 2) to out : Publication!Publication ( title <- b.title, nbPages <- b.getSumPages() ) } Transformación de modelos con ATL

  48. Mensajes de salida • Todo elemento tiene la operación debug que • Devolverá el propio elemento • Por lo que no afectará a la computación • Mostrará un mensaje por la consola • Permitirá obtener mensajes de ayuda para el desarrollador • Ej: b.getSumPages().debug(‘paginas’) > 2 Transformación de modelos con ATL

  49. Extras • Depuración • La perspectiva de depuración permite ejecutar paso a paso las reglas • Queries • Permiten calcular valores primitivos a partir de elementos del modelo. • Ejemplo • query caps = Book!Chapter.allInstances()->size().toString(); • El método writeTo(fichero:String) permite escribir la cadena a un fichero Transformación de modelos con ATL

  50. Agenda • Introducción • Lenguajes de transformación de modelos • Introducción a ATL • ATL y Eclipse • Tutorial 1 • Tutorial 2 • ATL al detalle • Tutorial 3 • ATL Avanzado • Referencias Transformación de modelos con ATL

More Related