stringtranslate.com

Transformación del modelo

Una transformación de modelo , en ingeniería basada en modelos , es una forma automatizada de modificar y crear modelos específicos de una plataforma a partir de modelos independientes de la plataforma . Un ejemplo de uso de la transformación de modelos es garantizar que una familia de modelos sea consistente, en un sentido preciso que el ingeniero de software pueda definir. El objetivo de utilizar una transformación de modelo es ahorrar esfuerzo y reducir errores automatizando la construcción y modificación de modelos cuando sea posible.

Descripción general

Las transformaciones de modelos pueden considerarse como programas que toman modelos como entrada. Existe una amplia variedad de tipos de transformación de modelos y usos de ellos, 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 ellas se han clasificado de muchas maneras. [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 un mismo lenguaje. Las transformaciones exógenas son transformaciones entre modelos expresados ​​utilizando diferentes lenguajes. [4] Por ejemplo, en un proceso que se ajusta a la arquitectura basada en modelos OMG , un modelo independiente de la plataforma podría transformarse en un modelo específico de la plataforma mediante una transformación del 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 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, a veces se puede introducir el mismo tipo de modelo y otras veces se puede generar. Las transformaciones bidireccionales son necesarias en situaciones en las que las personas trabajan en más de un modelo y los modelos deben mantenerse consistentes. Entonces, un cambio en cualquiera de los modelos podría requerir un cambio en el otro, para 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. Casos especiales importantes son:

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 innecesariamente o descartar cambios realizados deliberadamente. [5]

Idiomas para transformaciones de modelos.

Una transformación de modelo puede escribirse en un lenguaje de programación de propósito general, pero también hay disponibles lenguajes de transformación de modelos especializados. Las transformaciones bidireccionales, en particular, se escriben mejor en un lenguaje que garantice que las direcciones estén relacionadas adecuadamente. Los lenguajes de transformación de modelos estandarizados por 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 es 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

  1. ^ Czarnecki; Helsen (2006). "Encuesta basada en características de enfoques de transformación de modelos". Revista de sistemas IBM . 45 (3): 621–645. CiteSeerX 10.1.1.124.9674 . doi :10.1147/sj.453.0621. 
  2. ^ Stevens, Perdita (2008). "Un panorama de transformaciones de modelos bidireccionales". Técnicas Generativas y Transformacionales en Ingeniería de Software II . Apuntes de conferencias sobre informática. vol. 5235. Saltador . págs. 408–424. doi :10.1007/978-3-540-88643-3_10. ISBN 978-3-540-88642-6.
  3. ^ Jakumeit; Buchwald; Wagelaar; Dan; Hegedüs; Herrmannsdörfer; Bocina; Kalnina; Laño; Leproso; Rensink; Rosa; Wätzoldt; Mazanek (2014). "Un estudio y comparación de herramientas de transformación a partir del concurso de herramientas de transformación". Ciencia de la programación informática . 85 : 41–99. doi : 10.1016/j.scico.2013.10.009 .
  4. ^ Tom Mens, Pieter Van Gorp: una taxonomía de transformación de modelos. eléctrico. Notas teóricas. Computadora. Ciencia. 152: 125-142 (2006)
  5. ^ Stevens, Perdita (2010). "Transformaciones de modelos bidireccionales en QVT: cuestiones semánticas y preguntas abiertas" (PDF) . Modelado de Software y Sistemas . 9 : 7–20. doi :10.1007/s10270-008-0109-9. S2CID  371579.
  6. ^ Tisi, Massimo (2009). "Sobre el uso de transformaciones de modelos de orden superior". Arquitectura basada en modelos: fundamentos y aplicaciones . LNCS. vol. 5562. Saltador . págs. 18–33. doi :10.1007/978-3-642-02674-4_3. ISBN 978-3-642-02673-7. {{cite book}}: |journal=ignorado ( ayuda )

Otras lecturas