モデル駆動工学におけるモデル変換は、ソフトウェア開発において重要な役割を果たします。これは、モデルのファミリ間の一貫性を保証する自動化されたプロセスであり、ソフトウェア技術者が正確に定義できます。主な目的は、モデルの作成と変更を自動化し、成果物の保存とエラーの削減を実現することです。
モデル変換の概要
モデル変換は、モデルを入力として受け取るプログラムと捉えることができます。入力モデルと出力モデルの表現方法は多岐にわたり、変換の種類と使用法も様々です。一般的に、モデル変換では入力モデルと出力モデルが準拠すべき
メタモデルが指定されます。
モデル変換の分類
モデル変換とそのための言語は、さまざまな観点から分類できます。以下に主な分類を示します。
入出力の数と種類
モデル変換は、複数の入力モデルと複数の出力モデルを扱うことがあります。少なくとも1つの入力モデルが必要であり、出力モデルを持たない変換はモデル分析やモデルクエリと呼ばれます。
内因的変換と外因的変換
入力モデルと出力モデルが同じ言語で記述されている場合、その変換は「内因的」と呼ばれます。異なる言語を使用する場合は「外因的」と呼ばれます。例えば、OMGの
モデル駆動型アーキテクチャにおける
プラットフォーム独立モデルから
プラットフォーム特化モデルへの変換は、外因的モデル変換の一例です。
一方向性変換と双方向性変換
一方向性モデル変換は、常に同じ種類の入力を受け取り、別の種類の出力を生成します。これはコンパイルの状況で役立ち、出力モデルはリードオンリーとなります。一貫性は単純で、入力モデルは変換によって生成される出力モデルと一貫しているのみです。
双方向性モデル変換では、同じ種類のモデルが入力と出力の両方になります。これにより、複数のモデル間での一貫性を保つことが可能になります。あるモデルに変更が加えられた場合、他のモデルも変更して一貫性を保つ必要が生じます。双方向性モデル変換には、
全単射的変換とビュー変換という重要な特殊ケースがあります。
全単射的変換: 各モデルに対して、常に一貫性のあるモデルが1つだけ存在します。これは、モデルのペアが一貫性全単射で関連付けられている場合にのみ一貫していることを意味します。両方のモデルは同じ情報を持つものの、異なる表現を使用しています。
ビュー変換: 具体的なモデルが単一のビューモデルを決定しますが、同じビューモデルが複数の具体的なモデルから生成されることもあります。ビューモデルは具体的なモデルを抽象化したものであり、ビューが更新される際には双方向性変換が必要です。例えば、
関係データベースのビューを更新する場合などがこれに該当します。任意の具体的なモデルは、対応するビューと一貫性を保ちます。
双方向性モデル変換を適切に機能させるには、不必要な変更を加えないことや意図的な変更を保持することが特に重要です。
モデル変換は汎用
プログラミング言語でも記述できますが、専用の
モデル変換言語を使用することが推奨されます。双方向性モデル変換では、特に両方向の関係性を適切に記述できる言語が有効です。OMGによって標準化された
モデル変換言語群は
QVTとして知られています。
一部の
モデル変換言語では、変換自体もモデルとして扱われます。つまり、その言語の定義の一部である
メタモデルに従います。これにより、モデル変換を入力とし、別のモデル変換を出力する高階変換(HOT)が定義できます。
参考文献
Model Driven Software Engineering in Practice, Marco Brambilla, Jordi Cabot, Manuel Wimmer
Model Driven Architecture: Applying MDA to Enterprise Computing, David S. Frankel
Classification of Model Transformation Approaches, Czarnecki, K, and Helsen, S
関連項目
モデル駆動工学 (MDE)
モデル駆動型アーキテクチャ (MDA)
ドメイン固有言語 (DSL)
モデル変換言語
QVT
MOF
XMI
詳細化
外部リンク
Portal site MDA and Model Transformation
Model-Driven Architecture: Vision, Standards And Emerging Technologies at omg.org
An Introduction to Model Driven Architecture at ibm.com