MDAの誤解について

OMGのMDAですが、初期の宣伝がたたったのか大きな誤解が一人歩きしていると思います。ちゃんと理解されている方もおられますが、いろいろな人がこの点を指摘してもなかなか誤解が解けないようですのでちょっと書いてみます。

MDAではモデルの種類をCIM/PIM/PSM(各々Computation Independent Model, Platform Independent Model, Platform Specific Modelです)に分類しており、特に初期の頃はPIM/PSMだけだったため、MDAを使う場合この2種類のモデルしか存在しないと思われています。特に問題なのは、一つのPIMと一つのPSMだけ作成すれば良いと思われている点です。MDA Guideという文書で説明されていますが、PIM/PSMはプラットフォームの選択により相対的なものです。つまり、あるモデルがプラットフォーム独立だとか、プラットフォーム依存だという場合、プラットフォームを特定しないと何を言っているのか訳が分りません。そしてプラットフォームは通常何層にもなっています。例えば、対象システムをハイレベルのビジネスモデルで表現したものをPIMと呼び、コンポーネントモデルで表現したものをPSMと呼ぶ場合、そのコンポーネントモデルのベースとなっているものがプラットフォームになり、コンポーネント表現したものがPSMになります。そしてこのコンポーネントモデルのPSMは、次のプラットフォームとしてEJBを選んだ場合にはPIMとなり、EJBシステム用にマッピングしたモデルをPSMと呼ぶことになります。更に、このEJB用モデルは各社のEJB製品(実装)というプラットフォームに対してはPIMという位置づけになります。

このようにPIM/PSMは本来何度も再帰的に使われる概念なのですが、分りやすく説明したつもりの記事などで「これがPIMでこちらがPSMになります」という書き方がされてしまい、この2種類を各々一つ用意すればよいという誤解が広がってしまいました。是非このような記事に惑わされないようにして下さい。

ところでプラットフォームですが、これはある意味プログラミング言語のようなものだと思った方が近いかもしれません。何かのプラットフォーム(例えばアプリケーションサーバ)を選ぶと、そのAPIが提供されます。そのAPIを使って出来る世界を抽象的に表現したものがプラットフォームの定義に近いと思います。コンポーネントモデルではコンポーネント定義の記法やルールがあり、それがプラットフォームになりますし、EJBではご存知のように標準インタフェースがあるためそれがプラットフォームになります。また、LinuxやAndroidもプラットフォームですし、ロボットの実行環境もプラットフォームでしょう。BPMのビジネスプロセス定義・実行環境もプラットフォームだと思います。

MDAが他のMDDと異なるのは、MOFというOMGのメタメタモデル標準をベースにしているという点くらいだと思います。

MDAの誤解について

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中