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