「MDA モデル駆動アーキテクチャ(ISBN:4434038133)」

第9章「CWMによるモデル変換」を読んで
この章は次の10章と併せて第3部「高度なトピック」となっているのですが,ということはこれまでの章は高度ではなかったということでしょうか? そうですか... 無念です.
CWM(Common Warehouse Metamodel)は,UMLと同じレベル(MOFのメタレベルで言うとともにM2)に位置づけられるメタモデルですが,オブジェクト指向のモデルではなく,RDB,多次元DB,レコード構造(ISAMとかでしょうか),XMLなどのモデルを扱うものらしいです.
そのCWMによるモデル変換についての話なんですが,さすがに高度なトピック,なかなか大変です.(;_;)
ふつう変換というと,例えばあるDB(のデータ)を別のDBへ移行するために変換するとかありますよね.この場合,変換ツールを作るとすると,それぞれのDBのテーブル定義すなわちモデル(M1)を参照しながら作業することになります.そして,その結果できあがったツールはデータ(すなわちインスタンス,M0)を変換することになります.ですよね?(と,自分に確認)
これをもう一段階あげると,M2を参照して作られた変換ツールはM1を変換する,ということになります.これがどういうことかというと,UMLとかCWMとか(で記述されたモデルではなく,UMLやCWMのメタモデル)を参照しながら変換ツールを作成すると,そのツールはクラス定義からテーブル定義に変換できたりするよ,ということらしいんですね.分かりますか?(と,自分に確認)
このようなことを実現するには,UMLとCWMを同じように扱えなくてはならないわけですが,現状UMLとCWMでは微妙にそのメタモデルが異なっているために,いろいろ問題があるのだということが書かれています.そのため,UML2.0とCWM2.0はともにMOF2.0に従う(メタモデルのコアを共有する)ように修正する作業が行われることになっているそうです*1.分かりますか?(と,自分に確認) そうですか... 無念です.
それほど難しく考えなければ,例えばテーブル定義と同等な情報を持つDTDを生成するツールなんて,どうにか作れそうな気がします.クラスの静的な側面と同等な情報を持つDTDを生成するツールも作れそうな気がします.こういうツールというのは,メタモデルを参照し,モデルを変換するツールなんですよね.このような変換ツールを,様々なメタモデルの全ての組み合わせについて作るのは大変なので,MOFと各メタモデルとのマッピングを作ればいいよね,ということが書いてある... のかなぁ.
ま,いつか理解できる日が来る,ということにしよう.

*1:原書執筆時点の話なので,現在はすでに作業中ではないかと思われます