モデル駆動エンジニアリングにおけるモデル変換は、プラットフォームに依存しないモデルからプラットフォーム固有のモデルを変更および作成する自動化された方法です。モデル変換の使用例としては、ソフトウェア エンジニアが定義できる正確な意味で、モデルファミリの一貫性を確保することが挙げられます。モデル変換を使用する目的は、可能な限りモデルの構築と変更を自動化することで、労力を節約し、エラーを減らすことです。
概要
モデル変換は、モデルを入力として受け取るプログラムと考えることができます。モデル変換にはさまざまな種類があり、その用途は入力と出力、表現方法によって異なります。
モデル変換では通常、モデルが準拠する必要がある メタモデルを指定することにより、入力として受け入れ可能なモデルと、適切な場合は出力として生成できるモデルを指定します。
モデル変換の分類
モデル変換とその言語はさまざまな方法で分類されてきました。[1] [2] [3] よく使われる分類には次のようなものがあります。
入力と出力の数と種類
原則として、モデル変換にはさまざまなタイプの入力と出力が多数含まれる場合があります。唯一の絶対的な制限は、モデル変換が少なくとも 1 つのモデルを入力として受け取ることです。ただし、出力としてモデルを生成しないモデル変換は、一般的にモデル分析またはモデル クエリと呼ばれます。
内因性と外因性
内生的変換とは、同じ言語で表現されたモデル間の変換です。外生的変換とは、異なる言語を使用して表現されたモデル間の変換です。[4]たとえば、OMG モデル駆動アーキテクチャに準拠したプロセスでは、プラットフォームに依存しないモデルが外生的モデル変換によってプラットフォーム固有のモデルに変換される場合があります。
一方向と双方向
一方向モデル変換には実行モードが 1 つだけあります。つまり、常に同じタイプの入力を受け取り、同じタイプの出力を生成します。一方向モデル変換は、出力モデルが読み取り専用であるコンパイルのような状況で役立ちます。この場合、一貫性の関連する概念は非常に単純です。入力モデルは、変換によって出力として生成されるモデルとのみ一貫性があります。
双方向のモデル変換では、同じタイプのモデルが、入力になることもあれば、出力されることもあります。双方向の変換は、複数のモデルで作業していて、モデルの一貫性を保つ必要がある場合に必要です。この場合、いずれかのモデルを変更すると、モデル間の一貫性を保つために、もう一方のモデルも変更する必要があります。各モデルには、もう一方のモデルに反映されていない情報が組み込まれることがあるため、特定のモデルと一貫性のあるモデルが多数存在する可能性があります。重要な特殊なケースは次のとおりです。
- 全単射変換では、任意のモデルと一致するモデルが 1 つだけ存在します。つまり、一貫性関係は全単射です。モデルのペアは、一貫性の全単射によって関連付けられている場合にのみ一貫性があります。両方のモデルには同じ情報が含まれていますが、表現方法が異なります。
- ビュー変換では、具体的なモデルが単一のビュー モデルを決定しますが、同じビュー モデルが多くの異なる具体的なモデルから生成される可能性があります。ビュー モデルは、具体的なモデルの抽象化です。ビューが更新される可能性がある場合は、双方向の変換が必要です。この状況は、データベース分野ではビュー更新と呼ばれます。具体的なモデルはすべて、そのビューと一致しています。
双方向モデル変換が適切に動作するために適切な特性を持つことが特に重要です。たとえば、不必要な変更を行わないこと、意図的に行われた変更を破棄することなどです。[5]
モデル変換のための言語
モデル変換は汎用プログラミング言語で記述できますが、専用のモデル変換言語も利用できます。特に双方向変換は、方向が適切に関連していることを保証する言語で記述するのが最適です。OMG標準化モデル変換言語は、総称してQVTと呼ばれます。
いくつかのモデル変換言語、例えばQVT言語では、モデル変換自体がモデルであり、つまりモデル変換言語の定義の一部であるメタモデルに準拠しています。これにより、高階変換(HOT) [6]、つまり他の変換を入力および/または出力として持つ変換の定義が容易になります。
参照
- モデル駆動エンジニアリング(MDE)
- モデル駆動型アーキテクチャ(MDA)
- ドメイン固有言語(DSL)
- モデル変換言語
- 改良
- 変換(曖昧さ回避)
- プログラム変換
- データ変換
- グラフ変換
参考文献
- ^ Czarnecki 、 Helsen ( 2006)。「モデル変換アプローチの特徴ベースの調査」。IBM Systems Journal。45 ( 3): 621–645。CiteSeerX 10.1.1.124.9674。doi :10.1147/sj.453.0621。
- ^ Stevens, Perdita (2008)。「双方向モデル変換の展望」。ソフトウェアエンジニアリングにおける生成的および変換的テクニック II。コンピュータサイエンスの講義ノート。Vol. 5235。Springer。pp . 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). 「変換ツールコンテストに基づく変換ツールの調査と比較」.コンピュータプログラミングの科学. 85 :41–99. doi : 10.1016/j.scico.2013.10.009 .
- ^ Tom Mens、Pieter Van Gorp: モデル変換の分類。Electr. Notes Theor. Comput. Sci. 152: 125-142 (2006)
- ^ Stevens, Perdita (2010). 「QVT における双方向モデル変換: 意味上の問題と未解決の問題」(PDF) .ソフトウェアおよびシステムモデリング. 9 : 7–20. doi :10.1007/s10270-008-0109-9. S2CID 371579.
- ^ 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=無視されました (ヘルプ)
さらに読む
- モデル駆動型ソフトウェア エンジニアリングの実践、Marco Brambilla、Jordi Cabot、Manuel Wimmer、序文: Richard Soley ( OMG会長)、Morgan & Claypool、米国、2012 年、Synthesis Lectures on Software Engineering #1。182 ページ。ISBN 9781608458820 (ペーパーバック)、ISBN 9781608458837 (電子書籍) http://www.mdse-book.com
