Una transformación de modelo , en ingeniería impulsada por modelos , es una forma automatizada de modificar y crear modelos. Un ejemplo de uso de la transformación de modelos es garantizar que una familia de modelos sea coherente, en un sentido preciso que el ingeniero de software puede definir. El objetivo de utilizar una transformación de modelo es ahorrar esfuerzos y reducir errores al automatizar la construcción y modificación de modelos cuando sea posible.
Descripción general
Las transformaciones de modelos se pueden considerar como programas que toman modelos como entrada. Existe una amplia variedad de tipos de transformación de modelos y usos de los mismos, que difieren en sus entradas y salidas y también en la forma en que se expresan.
Una transformación de modelo generalmente especifica qué modelos son aceptables como entrada y, si corresponde, qué modelos puede producir como salida, especificando el metamodelo al que debe ajustarse un modelo.
Clasificación de transformaciones de modelos
Las transformaciones de modelos y los lenguajes para ellos se han clasificado de muchas formas. [1] [2] [3] Algunas de las distinciones más comunes que se hacen son:
Número y tipo de entradas y salidas
En principio, una transformación de modelo puede tener muchas entradas y salidas de varios tipos; la única limitación absoluta es que una transformación de modelo tomará al menos un modelo como entrada. Sin embargo, una transformación de modelo que no produjo ningún modelo como resultado se denominaría más comúnmente análisis de modelo o consulta de modelo.
Endógeno versus exógeno
Las transformaciones endógenas son transformaciones entre modelos expresados en el mismo lenguaje. Las transformaciones exógenas son transformaciones entre modelos expresados en diferentes lenguajes. [4] Por ejemplo, en un proceso que se ajuste a la Arquitectura basada en modelos de OMG , un modelo independiente de la plataforma podría transformarse en un modelo específico de la plataforma mediante una transformación de modelo exógeno.
Unidireccional versus bidireccional
Una transformación de modelo unidireccional tiene solo un modo de ejecución: es decir, siempre toma el mismo tipo de entrada y produce el mismo tipo de salida. Las transformaciones de modelos unidireccionales son útiles en situaciones similares a las de una compilación, donde cualquier modelo de salida es de solo lectura. La noción relevante de consistencia es entonces muy simple: el modelo de entrada es consistente con el modelo que la transformación produciría como salida, únicamente.
Para una transformación de modelo bidireccional, el mismo tipo de modelo a veces se puede ingresar y otras veces se puede generar como salida. Las transformaciones bidireccionales son necesarias en situaciones en las que las personas están trabajando en más de un modelo y los modelos deben mantenerse consistentes. Entonces, un cambio en cualquiera de los modelos puede requerir un cambio en el otro, a fin de mantener la coherencia entre los modelos. Debido a que cada modelo puede incorporar información que no se refleja en el otro, puede haber muchos modelos que sean consistentes con un modelo dado. Los casos especiales importantes son:
- transformaciones biyectivas, en las que hay exactamente un modelo que es consistente con cualquier modelo dado; es decir, la relación de consistencia es biyectiva. Un par de modelos es consistente si y solo si está relacionado por la biyección de consistencia. Ambos modelos contienen la misma información, pero se presentan de manera diferente.
- transformaciones de vista, en las que un modelo concreto determina un modelo de vista único, pero el mismo modelo de vista puede producirse a partir de muchos modelos concretos diferentes. El modelo de vista es una abstracción del modelo concreto. Si la vista puede actualizarse, se necesita una transformación bidireccional. Esta situación se conoce en el campo de la base de datos como vista-actualización . Cualquier modelo concreto es coherente con su punto de vista.
Es particularmente importante que una transformación de modelo bidireccional tenga las propiedades adecuadas para que se comporte con sensatez: por ejemplo, no realizar cambios innecesarios o descartar cambios realizados deliberadamente. [5]
Idiomas para transformaciones de modelos
Una transformación de modelo se puede escribir en un lenguaje de programación de propósito general, pero también hay disponibles lenguajes de transformación de modelo especializados. Las transformaciones bidireccionales, en particular, se escriben mejor en un lenguaje que asegure que las direcciones estén relacionadas de manera apropiada. Los lenguajes de transformación de modelos estandarizados de OMG se conocen colectivamente como QVT .
En algunos lenguajes de transformación de modelos, por ejemplo, los lenguajes QVT , una transformación de modelo es en sí misma un modelo, es decir, se ajusta a un metamodelo que forma parte de la definición del lenguaje de transformación de modelos. Esto facilita la definición de transformaciones de orden superior (HOT), [6] es decir, transformaciones que tienen otras transformaciones como entrada y / o salida.
Ver también
Referencias
- ^ Czarnecki; Helsen (2006). "Encuesta basada en características de enfoques de transformación de modelos". Revista de sistemas de IBM . 45 (3): 621–645. CiteSeerX 10.1.1.124.9674 . doi : 10.1147 / sj.453.0621 .
- ^ Stevens, Perdita (2008). Un panorama de transformaciones de modelos bidireccionales (PDF) . Técnicas Generativas y Transformacionales en Ingeniería de Software II . Apuntes de conferencias en Ciencias de la Computación. 5235 . Springer . págs. 408–424. doi : 10.1007 / 978-3-540-88643-3_10 . ISBN 978-3-540-88642-6.
- ^ Jakumeit; Buchwald; Wagelaar; Dan; Hegedüs; Herrmannsdörfer; Bocina; Kalnina; Lano; Lepper; Rensink; Rosa; Wätzoldt; Mazanek (2014). "Encuesta y comparativa de herramientas de transformación a partir del concurso de herramientas de transformación" . Ciencia de la Programación de Computadores . 85 : 41–99. doi : 10.1016 / j.scico.2013.10.009 .
- ^ Tom Mens, Pieter Van Gorp: una taxonomía de la transformación del modelo. Electr. Notas Theor. Computación. Sci. 152: 125-142 (2006)
- ^ Stevens, Perdita (2010). "Transformaciones de modelos bidireccionales en QVT: cuestiones semánticas y preguntas abiertas". Modelado de software y sistemas . 9 : 7-20. doi : 10.1007 / s10270-008-0109-9 .
- ^ Tisi, Massimo (2009). Sobre el uso de transformaciones de modelos de orden superior . Ecmda-Fa '09 . LNCS. 5562 . Springer . págs. 18–33. doi : 10.1007 / 978-3-642-02674-4_3 . ISBN 978-3-642-02673-7.
Otras lecturas
- Model Driven Software Engineering in Practice , Marco Brambilla, Jordi Cabot, Manuel Wimmer, prólogo de Richard Soley ( presidente de OMG ), Morgan & Claypool, EE. UU., 2012, Synthesis Lectures on Software Engineering # 1. 182 páginas. ISBN 9781608458820 (rústica), ISBN 9781608458837 (libro electrónico) http://www.mdse-book.com