Idioma de especificación
Un lenguaje de transformación de modelos en ingeniería de software y sistemas es un lenguaje destinado específicamente a la transformación de modelos .
Descripción general
La noción de transformación de modelos es fundamental para el desarrollo impulsado por modelos . Una transformación de modelo, que es esencialmente un programa que opera sobre modelos, se puede escribir en un lenguaje de programación de propósito general, como Java . Sin embargo, los lenguajes de transformación de modelos de propósito especial pueden ofrecer ventajas, como una sintaxis que facilita la referencia a los elementos del modelo. Para escribir transformaciones de modelos bidireccionales, que mantienen la coherencia entre dos o más modelos, un lenguaje de transformación de modelos bidireccionales especializado es particularmente importante, porque puede ayudar a evitar la duplicación que resultaría de escribir cada dirección de la transformación por separado.
Actualmente, la mayoría de los lenguajes de transformación de modelos se están desarrollando en el mundo académico. OMG ha estandarizado una familia de lenguajes de transformación de modelos llamada QVT , pero el campo aún es inmaduro. [1]
Hay debates en curso sobre los beneficios de los lenguajes de transformación de modelos especializados, en comparación con el uso de lenguajes de programación de propósito general (GPL) como Java . [2] Si bien las GPL tienen ventajas en términos de conocimiento profesional más ampliamente disponible y soporte de herramientas, los lenguajes de transformación especializados brindan más funciones declarativas y características especializadas más poderosas para respaldar las transformaciones de modelos. [3]
Idiomas de transformación disponibles
- ATL : un lenguaje de transformación desarrollado por el INRIA
- Beanbag (ver [1]): un lenguaje basado en operaciones para establecer coherencia sobre los datos de forma incremental
- GReAT : un lenguaje de transformación disponible en GME
- Familia Epsilon (ver [2]): una plataforma de gestión de modelos que proporciona lenguajes de transformación para transformaciones de modelo a modelo, de modelo a texto, actualización in situ, migración y fusión de modelos.
- F-Alloy [3]: un DSL que reutiliza parte de la sintaxis de Alloy y permite la especificación concisa de transformaciones de modelos computables de manera eficiente.
- Henshin (ver [4]): un lenguaje de transformación de modelos para EMF , basado en conceptos de transformación de gráficos , que proporciona capacidades de exploración del espacio estatal
- JTL: un lenguaje de transformación de modelos bidireccional diseñado específicamente para soportar transformaciones no biyectivas y propagación de cambios (ver [5]).
- Kermeta : un lenguaje de programación y modelado de propósito general, también capaz de realizar transformaciones.
- Familia Lx (ver [6]): un conjunto de lenguajes de transformación de bajo nivel
- M2M es la implementación de Eclipse del estándar OMG QVT
- Mia-TL: un lenguaje de transformación desarrollado por Mia-Software
- Lenguaje de transformación de modelo MOF a texto : OMG ha definido un estándar para expresar transformaciones M2T
- MOLA (ver [7]): un lenguaje gráfico de transformación de alto nivel integrado en Lx.
- MT: un lenguaje de transformación desarrollado en King's College, Londres (Reino Unido) (basado en Converge PL)
- QVT : OMG ha definido un estándar para expresar transformaciones M2M, llamado MOF/QVT o, abreviadamente, QVT.
- SiTra [8]: un enfoque de transformación pragmática basado en el uso de un lenguaje de programación estándar, por ejemplo, Java, C#
- Stratego/XT: un lenguaje de transformación basado en la reescritura con estrategias programables
- Tefkat : un lenguaje de transformación y un motor de transformación de modelos
- Tom : un lenguaje basado en la reescritura del cálculo, con coincidencia de patrones y estrategias.
- UML-RSDS [9]: un enfoque de transformación de modelos y MDD utilizando UML y OCL
- VIATRA : un marco para un entorno de verificación y validación basado en transformación
- YAMTL (ver [10]): un DSL interno para la transformación de modelos dentro de lenguajes JVM (Java, Groovy, Xtend, Kotlin), que presenta características clave como rendimiento en tiempo de ejecución, reutilización de la lógica de transformación, ejecución incremental e independencia de los IDE.
Ver también
Referencias
- ^ Francia, Robert; Rumpe, Bernhard (2007). Desarrollo de software complejo basado en modelos: una hoja de ruta de investigación . Futuro de la Ingeniería de Software (FOSE '07). arXiv : 1409.6620 . doi :10.1109/FOSE.2007.14.
- ^ https://www.jot.fm/issues/issue_2019_03/article7.pdf
- ^ Höppner, Stefan; Haas, Yves; Tichy, Matías; Juhnke, Katharina (2022). "Ventajas y desventajas de los lenguajes de transformación de modelos (dedicados)". Ingeniería de software empírica . 27 (6). arXiv : 2201.13348 . doi : 10.1007/s10664-022-10194-7 . S2CID 251644010.
Otras lecturas
- The MDA Journal: Arquitectura basada en modelos directamente de los maestros
- Arquitectura basada en modelos: aplicación de MDA a la informática empresarial , David S. Frankel , John Wiley & Sons, ISBN 0-471-31920-1
- Guía OMG MDA Guía MDA Versión 1.0.1
- Arquitectura basada en modelos: visión, estándares y tecnologías emergentes en omg.org
- Introducción a la arquitectura basada en modelos en ibm.com
- De la composición de objetos a la transformación de modelos con MDA en omg.org
- Mens, T y Van Gorp, P: A Taxonomy of Model Transformation, Electronic Notes in Theoretical Computer Science, volumen 152, 27 de marzo de 2006, páginas 125-142
- Czarnecki, K y Helsen, S: Clasificación de enfoques de transformación de modelos. En: Actas del taller OOPSLA'03 sobre técnicas generativas en el contexto de la arquitectura basada en modelos, Anaheim, California, EE. UU. Publicado en la web.
- Gronmo, R y Oldevik, J: Un estudio empírico de la herramienta de transformación de modelos UML (UMT). [11]