En la ingeniería dirigida por modelos , la transformación de modelos es un método automatizado para modificar y crear modelos específicos de una plataforma a partir de modelos independientes. Un ejemplo de uso de la transformación de modelos es garantizar la coherencia de una familia de modelos , en un sentido preciso que el ingeniero de software puede definir. El objetivo de utilizar la transformación de modelos es ahorrar esfuerzo y reducir errores mediante la automatización de la creación y modificación de modelos siempre que sea posible.
Descripción general
Las transformaciones de modelos pueden considerarse programas que toman modelos como entrada. Existe una amplia variedad de tipos de transformaciones de modelos y sus usos, que difieren en sus entradas y salidas, así como en la forma en que se expresan.
Una transformación de modelo generalmente especifica qué modelos son aceptables como entrada y, si procede, qué modelos puede producir como salida, especificando el metamodelo al que debe ajustarse un modelo.
Clasificación de las transformaciones de modelos
Las transformaciones de modelos y los lenguajes para ellas se han clasificado de muchas maneras. [ 1 ] [ 2 ] [ 3 ] Algunas de las distinciones más comunes que se han establecido son:
Número y tipo de entradas y salidas
En principio, una transformación de modelo puede tener múltiples entradas y salidas de diversos tipos; la única limitación absoluta es que tomará al menos un modelo como entrada. Sin embargo, una transformación de modelo que no produzca ningún modelo como salida se denomina 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 lenguajes diferentes. [ 4 ] Por ejemplo, en un proceso que se ajusta a la arquitectura OMG Model Driven Architecture , un modelo independiente de la plataforma podría transformarse en un modelo específico de la plataforma mediante una transformación de modelo exógena.
Unidireccional versus bidireccional
Una transformación de modelo unidireccional tiene un único modo de ejecución: siempre toma el mismo tipo de entrada y produce el mismo tipo de salida. Las transformaciones de modelo unidireccionales son útiles en situaciones similares a la compilación, donde cualquier modelo de salida es de solo lectura. La noción de consistencia relevante es entonces muy simple: el modelo de entrada es consistente únicamente con el modelo que la transformación produciría como salida.
En una transformación de modelo bidireccional, el mismo tipo de modelo puede ser a veces la entrada y otras veces la salida. Las transformaciones bidireccionales son necesarias cuando se trabaja con más de un modelo y es preciso mantener la coherencia entre ellos. En ese caso, un cambio en un modelo podría requerir un cambio en el otro para mantener la coherencia. Dado que cada modelo puede incorporar información que no se refleja en el otro, puede haber muchos modelos que sean coherentes con un modelo dado. Algunos casos especiales importantes son:
- Transformaciones biyectivas, en las que existe exactamente un modelo 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án relacionados por la biyección de consistencia. Ambos modelos contienen la misma información, pero presentada de forma diferente.
- Las transformaciones de vista, en las que un modelo concreto determina un único modelo de vista, pueden generarse a partir de varios modelos concretos diferentes. El modelo de vista es una abstracción del modelo concreto. Si la vista se puede actualizar, se requiere una transformación bidireccional. Esta situación se conoce en el ámbito de las bases de datos como actualización de vista . Cualquier modelo concreto es coherente con su vista.
Es particularmente importante que una transformación de modelo bidireccional tenga propiedades apropiadas para que se comporte de manera sensata: por ejemplo, no realizar cambios innecesarios o descartar cambios realizados deliberadamente. [ 5 ]
Lenguajes para transformaciones de modelos
Una transformación de modelo puede escribirse en un lenguaje de programación de propósito general, pero también existen lenguajes especializados para transformaciones de modelos. Las transformaciones bidireccionales, en particular, se escriben mejor en un lenguaje que garantice la relación adecuada entre las direcciones. Los lenguajes de transformación de modelos estandarizados por la OMG se conocen colectivamente como QVT .
En algunos lenguajes de transformación de modelos, como 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 (HOTs), [ 6 ] es decir, transformaciones que tienen otras transformaciones como entrada y/o salida.
Véase también
Referencias
- ↑ Czarnecki; Helsen (2006). "Revisión basada en características de los enfoques de transformación de modelos". IBM Systems Journal . 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" . Técnicas generativas y transformacionales en ingeniería de software II . Notas de clase en ciencias de la computación. Vol. 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; Horn; Kalnina; Lano; Lepper; Rensink; Rose; Wätzoldt; Mazanek (2014). "Un estudio y comparación de herramientas de transformación basado en el concurso de herramientas de transformación" . Science of Computer Programming . 85 : 41–99 . doi : 10.1016/j.scico.2013.10.009 .
- ↑ Tom Mens, Pieter Van Gorp: Una taxonomía de la transformación de modelos. Electr. Notes Theor. Comput. Sci. 152: 125-142 (2006)
- ↑ Stevens, Perdita (2010). "Transformaciones de modelos bidireccionales en QVT: problemas semánticos y preguntas abiertas" (PDF) . Software and Systems Modeling . 9 : 7–20 . doi : 10.1007/s10270-008-0109-9 . S2CID 371579 .
- ↑ Tisi, Massimo (2009). "Sobre el uso de transformaciones de modelos de orden superior". Arquitectura dirigida por modelos: fundamentos y aplicaciones . LNCS. Vol. 5562. Springer . pp. 18–33 . doi : 10.1007/978-3-642-02674-4_3 . ISBN 978-3-642-02673-7.
{{cite book}}:|journal=ignorado ( ayuda )
Lecturas adicionales
- Ingeniería de software basada en modelos en la práctica , 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(tapa blanda), ISBN 9781608458837(libro electrónico) http://www.mdse-book.com
- Ingeniería de sistemas
- Lenguaje Unificado de Modelado