stringtranslate.com

Transformación de modelos

Una transformación de modelo , en ingeniería basada en modelos , es una forma automatizada de modificar y crear modelos específicos de la plataforma a partir de modelos independientes de la plataforma. Un ejemplo de uso de la transformación de modelo es garantizar que una familia de modelos sea consistente, en un sentido preciso que el ingeniero de software puede definir. El objetivo de utilizar una transformación de modelo es ahorrar esfuerzo y reducir errores automatizando la creación y modificación de modelos cuando 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 usos de las mismas, 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 las transformaciones del modelo

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 son:

Número y tipo de entradas y salidas

En principio, una transformación de modelo puede tener muchas entradas y salidas de distintos 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 produzca ningún modelo como salida 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 ​​utilizando lenguajes diferentes. [4] Por ejemplo, en un proceso que se ajuste 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 de modelo exógena.

Unidireccional versus bidireccional

Una transformación de modelo unidireccional tiene un solo modo de ejecución: es decir, 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 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.

En el caso de una transformación de modelo bidireccional, el mismo tipo de modelo puede ser a veces la entrada y otras la salida. 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. En ese caso, un cambio en uno 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 determinado. Algunos 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 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 hay disponibles lenguajes de transformación de modelo especializados. Las transformaciones bidireccionales, en particular, se escriben mejor en un lenguaje que garantice que las direcciones estén relacionadas de forma adecuada. Los lenguajes de transformación de modelo 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 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

  1. ^ Czarnecki; Helsen (2006). "Estudio basado 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. 
  2. ^ Stevens, Perdita (2008). "Un panorama de transformaciones de modelos bidireccionales". Técnicas generativas y transformacionales en ingeniería de software II . Apuntes de clase en informática. Vol. 5235. Springer . 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; Horn; Kalnina; Lano; Lepper; Rensink; Rose; Wätzoldt; Mazanek (2014). "Una encuesta y comparación de herramientas de transformación basadas en el 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 la transformación de modelos. Electr. Notes Theor. Comput. Sci. 152: 125-142 (2006)
  5. ^ Stevens, Perdita (2010). "Transformaciones de modelos bidireccionales en QVT: cuestiones semánticas y preguntas abiertas" (PDF) . Software and Systems Modeling . 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. Springer . págs. 18–33. doi :10.1007/978-3-642-02674-4_3. ISBN . 978-3-642-02673-7. {{cite book}}: |journal=ignorado ( ayuda )

Lectura adicional