モデル変換

モデル駆動型エンジニアリングにおけるモデル変換とは、プラットフォームに依存しないモデルからプラットフォーム固有のモデルを自動的に変更・作成する手法です。モデル変換の一例として、ソフトウェアエンジニアが定義できる正確な意味で、モデル群の一貫性を確保することが挙げられます。モデル変換を使用する目的は、可能な限りモデルの構築と変更を自動化することで、労力を節約し、エラーを削減することです。

概要

モデル変換は、モデルを入力として受け取るプログラムと考えることができます。モデル変換には多種多様な種類があり、その用途は入力と出力、そして表現方法も異なります。

モデル変換では通常、モデルが準拠する必要がある メタモデルを指定することによって、入力として受け入れ可能なモデルと、適切な場合は出力として生成できるモデルを指定します。

モデル変換の分類

モデル変換とその言語は様々な方法で分類されてきました。[ 1 ] [ 2 ] [ 3 ] 一般的な区別としては以下のようなものがあります。

入力と出力の数と種類

原則として、モデル変換は様々な種類の多くの入力と出力を持つことができます。唯一の絶対的な制限は、モデル変換は少なくとも1つのモデルを入力として取る必要があるということです。ただし、出力としてモデルを生成しないモデル変換は、一般的にモデル分析またはモデルクエリと呼ばれます。

内因性と外因性

内生的変換とは、同じ言語で表現されたモデル間の変換です。外生的変換とは、異なる言語で表現されたモデル間の変換です。[ 4 ]例えば、OMGモデル駆動アーキテクチャに準拠したプロセスでは、プラットフォームに依存しないモデルが外生的モデル変換によってプラットフォーム固有のモデルに変換されることがあります。

一方向と双方向

一方向モデル変換には実行モードが1つしかありません。つまり、常に同じ型の入力を受け取り、同じ型の出力を生成します。一方向モデル変換は、出力モデルが読み取り専用となるコンパイルのような状況で有用です。この場合、一貫性の概念は非常に単純です。入力モデルは、変換によって生成される出力モデルとのみ一貫性があります。

双方向モデル変換では、同じ種類のモデルが入力となる場合と出力となる場合があります。双方向変換は、複数のモデルで作業し、それらのモデルの一貫性を維持する必要がある場合に必要です。そのため、一方のモデルに変更を加えると、モデル間の一貫性を維持するために、もう一方のモデルにも変更が必要になる場合があります。各モデルには、もう一方のモデルには反映されていない情報が組み込まれる可能性があるため、あるモデルと一貫性のあるモデルが複数存在する可能性があります。重要な特殊なケースとしては、以下のものがあります。

  • 全単射変換とは、任意のモデルと整合するモデルが1つだけ存在する変換のことです。つまり、整合関係は全単射です。2つのモデルが整合するのは、整合全単射によって関連付けられている場合のみです。どちらのモデルも同じ情報を含んでいますが、表現方法が異なります。
  • ビュー変換では、具体的なモデルは単一のビューモデルを決定しますが、複数の異なる具体的なモデルから同じビューモデルが生成される場合があります。ビューモデルは具体的なモデルの抽象化です。ビューが更新される可能性がある場合は、双方向の変換が必要です。この状況は、データベース分野ではビュー更新と呼ばれます。具体的なモデルはすべて、そのビューと整合性があります。

双方向モデル変換が適切に動作するために適切な特性を持つことが特に重要です。例えば、不必要な変更を行わないこと、意図的に行われた変更を破棄することなどです。[ 5 ]

モデル変換のための言語

モデル変換は汎用プログラミング言語で記述できますが、専用のモデル変換言語も利用可能です。特に双方向変換は、変換方向が適切に関連付けられる言語で記述するのが最適です。OMG標準化モデル変換言語は、総称してQVTと呼ばれます。

QVT言語などの一部のモデル変換言語では、モデル変換自体がモデルであり、つまり、モデル変換言語の定義の一部であるメタモデルに準拠しています。これにより、高階変換(HOT)[ 6 ] 、つまり他の変換を入力および/または出力として持つ変換の定義が容易になります。

参照

参考文献

  1. ^ Czarnecki; Helsen (2006). 「モデル変換アプローチの特徴ベース調査」. IBM Systems Journal . 45 (3): 621– 645. CiteSeerX 10.1.1.124.9674 . doi : 10.1147/sj.453.0621 . 
  2. ^ Stevens, Perdita (2008). 「双方向モデル変換の展望」 .ソフトウェア工学における生成的・変換的技術 II . コンピュータサイエンス講義ノート. 第5235巻. Springer . pp.  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). 「変換ツールコンテストに基づく変換ツールの調査と比較」 . Science of Computer Programming . 85 : 41–99 . doi : 10.1016/j.scico.2013.10.009 .
  4. ^トム・メンズ、ピーター・ヴァン・ゴープ:「モデル変換の分類法」Electr. Notes Theor. Comput. Sci. 152: 125-142 (2006)
  5. ^ Stevens, Perdita (2010). 「QVTにおける双方向モデル変換:意味論的問題と未解決の問題」(PDF) .ソフトウェアとシステムモデリング. 9 : 7–20 . doi : 10.1007/s10270-008-0109-9 . S2CID 371579 . 
  6. ^ Tisi, Massimo (2009). 「高階モデル変換の利用について」.モデル駆動型アーキテクチャ - 基礎と応用. 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=無視されました (ヘルプ)

さらに読む