ATLAS Transformation Language Introducción y comparativa con QVT Javier Jesús Gutierrez Rodriguez javierj@us.es Dra. María José Escalona Cuaresma mjescalona@us.es
Índice Introducción. Las herramientas MDE de Eclipse. Transformación de modelo a modelo en Eclipse: ATL. Generación de pruebas como un problema de modelo a modelo. Conclusiones.
Introduction
Introducción QVT ATL Lenguaje de definición de transformaciones, consultas y vistas. Declarativo e imperativo. Soporte parcial y limitado de herramientas. Estándar de la OMG. Soporte OCL 2. Ofrece una interfaz para otros lenguajes. Lenguaje de definición de transformaciones, consultas y librerías de funciones. Declarativo e imperativo. Soporte completo de herramientas. No estándar. Soporte OCL 2. Combina con Java
Las herramientas MDD de Eclipse
Herramientas de modelado Eclipse Una parte de Eclipse aglutina y desarrolla herramientas para MDD. http://www.eclipse.org/modeling
Transformación de modelo a modelo en Eclipse: ATL Un caso práctico: de diagrama de clases a tablas
ATLAS Transformation Language Plan de trabajo con ATL Definir metamodelos. Definir modelos. Escribir transformaciones. Ejecutar transformaciones. Ejemplo: SimpleClass2SimpleRDBMS
ATLAS Transformation Language Metamodelo simplificado de clases
ATLAS Transformation Language Metamodelo simplificado de tablas
Demo ATLAS Transformation Language Definición de metamodelos con KM3 Metamodelo de clases (aún más simplificado) Demo Es un lenguaje extremadamente sencillo, ocupa solo 8 páginas. Realmente KM3 no hace distinción entre agregaciones y composiciones.
ATLAS Transformation Language Definición de metamodelos con KM3 Metamodelo de clases (aún más simplificado) Es un lenguaje extremadamente sencillo, ocupa solo 8 páginas. Realmente KM3 no hace distinción entre agregaciones y composiciones.
ATLAS Transformation Language Definición de modelos Modelo de clases Es un lenguaje extremadamente sencillo, ocupa solo 8 páginas. Realmente KM3 no hace distinción entre agregaciones y composiciones.
ATLAS Transformation Language Transformaciones De clase a tabla (QVT) transformation ct(uml:SimpleUML,rdbms:SimpleRDBMS) { key Table (name); top relation ClassToTable { checkonly domain uml c:Class { kind='Persistent', name=cn }; enforce domain rdbms t:Table { } Poner debajo de la transformación el resultado. Una tabla por cada clase de tipo Persistent con el mismo nombre que la clase.
Demo ATLAS Transformation Language Transformaciones De clase a tabla (ATL) Demo Poner debajo de la transformación el resultado.
ATLAS Transformation Language Transformaciones De clase a tabla (QVT vs ATL) transformation clase_a_tabla(u:SimpleUML, r:SimpleRDBMS) { top relation ClassToTable { checkonly domain u c:Class { name=cn }; enforce domain r t:Table { } Poner debajo de la transformación el resultado.
ATLAS Transformation Language Transformaciones De clase y atributos a tabla y columnas (QVT) 1 de 2 transformation umlToRdbms(uml:SimpleUML, rdbms:SimpleRDBMS) { top relation ClassToTable { cn, prefix: String; checkonly domain uml c:Class { kind='Persistent', name=cn}; enforce domain rdbms t:Table {name=cn, column=cl:Column {name=cn+'_tid', type='NUMBER'}, }; where { prefix = ''; AttributeToColumn(c, t, prefix); } relation AttributeToColumn checkonly domain uml c:Class {}; enforce domain rdbms t:Table {}; primitive domain prefix:String; PrimitiveAttributeToColumn(c, t, prefix); Poner debajo de la transformación el resultado. Una columna por atributo con el mismo nombre terminado en ‘_tid’ de tipo NUMBER. Una relación para atributos simples, compuestos, etc.
ATLAS Transformation Language Transformaciones De clase y atributos a tabla y columnas (QVT) 2 de 2 transformation umlToRdbms(uml:SimpleUML, rdbms:SimpleRDBMS) { relation PrimitiveAttributeToColumn an, pn, cn, sqltype: String; checkonly domain uml c:Class {attribute=a:Attribute {name=an, type=p:PrimitiveDataType {name=pn}}}; enforce domain rdbms t:Table {column=cl:Column {name=cn, type=sqltype}}; primitive domain prefix:String; where { cn = if (prefix = '') then an else prefix+'_'+an endif; sqltype = PrimitiveTypeToSqlType(pn); } function PrimitiveTypeToSqlType(primitiveTpe:String):String { if (primitiveType='INTEGER‘) then 'NUMBER' else if (primitiveType='BOOLEAN') then 'BOOLEAN' else 'VARCHAR' endif endif; Poner debajo de la transformación el resultado. Un atributo INTEGER es una columna NUMBER, un atributo BOOLEAN es una columna BOOLEAN y cualquier otro atributo es una columna VARCHAR
Demo ATLAS Transformation Language Transformaciones De clase y atributos a tabla y columnas (ATL) Demo Poner debajo de la transformación el resultado.
ATLAS Transformation Language Transformaciones De clases y atributos a tablas y columnas (QVT vs ATL) Poner debajo de la transformación el resultado.
Demo ATLAS Transformation Language Transformaciones Ejecución de la transformación Demo Poner debajo de la transformación el resultado.
ATLAS Transformation Language Transformaciones Ejecución de la transformación Poner debajo de la transformación el resultado.
Generación de pruebas como un problema de modelo a modelo.
Generacion de pruebas Generación de pruebas Casos de uso + requisitos funcionales Our two approaches Translate requirements into a model and apply a criterion. Apply category-partition method and combination matrix. Information obtained Scenarios. Categories, partitions, test values (optional), and combinations. Test cases. Metamodels needed Test scenarios metamodel. Test values metamodel. Test cases metamodel. Es un lenguaje extremadamente sencillo, ocupa solo 8 páginas. Realmente KM3 no hace distinción entre agregaciones y composiciones.
Generacion de pruebas Generación de pruebas Es un lenguaje extremadamente sencillo, ocupa solo 8 páginas. Realmente KM3 no hace distinción entre agregaciones y composiciones.
Conclusiones
ATLAS Transformation Language Conclusiones Descargar y listo. Buena documentación y ejemplos. Ejecutable desde código Java. Falta de herramientas de modelado. Mensajes de error muy crípticos. Numerosas diferencias con QVT. Es un lenguaje extremadamente sencillo, ocupa solo 8 páginas. Realmente KM3 no hace distinción entre agregaciones y composiciones.
ATLAS Transformation Language Enlaces Zoo de transformaciones: http://www.eclipse.org/m2m/atl/atlTransformations/ Zoo de metamodelos en KM3: http://www.eclipse.org/gmt/am3/zoos/atlanticZoo/ Zoo de metamodelos en Ecore: http://www.eclipse.org/gmt/am3/zoos/atlantEcoreZoo/
ATLAS Transformation Language Introducción y comparativa con QVT Javier J. Gutierrez Rodriguez javierj@us.es www.lsi.us.es/~javierj Dra. María José Escalona Cuaresma mjescalona@us.es www.lsi.us.es/~escalona www.lsi.us.es/ndt University of Sevilla ETS Ingeniería Informática Av. Reina Mercedes S/N 41015 Sevilla Tlf. 954553867 Fax. 954553917