Transcript Document
ATLAS Transformation Language Introducción y comparativa con QVT Javier Jesús Gutierrez Rodriguez [email protected] Dra. María José Escalona Cuaresma [email protected] Índice 1.Introducción. 2.Las herramientas MDE de Eclipse. 3.Transformación de modelo a modelo en Eclipse: ATL. 4.Generación de pruebas como un problema de modelo a modelo. 5.Conclusiones. Introduction Introducción QVT • • • • • • 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. ATL • • • • • • 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 1. 2. 3. 4. Definir metamodelos. Definir modelos. Escribir transformaciones. Ejecutar transformaciones. Ejemplo: SimpleClass2SimpleRDBMS ATLAS Transformation Language Metamodelo simplificado de clases ATLAS Transformation Language Metamodelo simplificado de tablas class PruebaXMI SimpleRDBMS:: Column + type: String +column +column 0..* 0..* A_Column_foreignKey_ForeignKey_column SimpleRDBMS:: Schema +foreignKey 0..* A_Column_key_Key_column SimpleRDBMS:: ForeignKey +refersToOpposite 0..* A_Key_refersToOpposite_ForeignKey_refersTo +key SimpleRDBMS:: RModelElement 1 + + kind: String name: String 0..* +refersTo SimpleRDBMS:: Key ATLAS Transformation Language Definición de metamodelos con KM3 Metamodelo de clases (aún más simplificado) Demo ATLAS Transformation Language Definición de metamodelos con KM3 Metamodelo de clases (aún más simplificado) ATLAS Transformation Language Definición de modelos Modelo de clases 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 { name=cn } } } Una tabla por cada clase de tipo Persistent con el mismo nombre que la clase. ATLAS Transformation Language Transformaciones De clase a tabla (ATL) Demo 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 { name=cn } } } 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 {}; Una columna por atributo enforce domain rdbms t:Table {}; primitive domain prefix:String; con el mismo nombre where { terminado en ‘_tid’ de tipo PrimitiveAttributeToColumn(c, t, prefix); 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' Un atributo INTEGER es una columna endif NUMBER, un atributo BOOLEAN es una endif; } columna BOOLEAN y cualquier otro atributo } una columna VARCHAR es ATLAS Transformation Language Transformaciones De clase y atributos a tabla y columnas (ATL) Demo ATLAS Transformation Language Transformaciones De clases y atributos a tablas y columnas (QVT vs ATL) ATLAS Transformation Language Transformaciones Ejecución de la transformación Demo ATLAS Transformation Language Transformaciones Ejecución de la transformación 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 Metamodels needed Information obtained Translate requirements into a model and apply a criterion. Test scenarios metamodel. Scenarios. Test values metamodel. Categories, partitions, test values (optional), and combinations. Apply category-partition method and combination matrix. Test cases metamodel. Test cases. Generacion de pruebas Generación de pruebas Functional requirements Tabular requirements Activity diagram Use cases diagram Test scenarios Test values Test cases Test artefacts 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. 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 [email protected] www.lsi.us.es/~javierj Dra. María José Escalona Cuaresma [email protected] 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