メタモデリングについて

日本語版のWikipediaによると、「メタモデル(Metamodel)とは、所定の問題領域でのモデリングに適用可能で有益なフレーム/規則/制限/モデル/理論を意味する。メタモデリング(Metamodeling)とは、メタモデルの分析/構築/開発を意味する。この用語はメタモデルという用語の組み合わせである。」(リンクはこちら)とあります。

IT業界の関係者の方であれば、eclipseのEMFをご存知の方も多いと思います。このオープンソースツールでメタモデルを作成する事が出来ます。何しろEMFが実装しているのはOMGのメタメタモデル標準であるMOFの基本部分ですから、EMFを使って描けるモデルはメタモデルになるという訳です。そしてそのメタモデルに基づくモデルエディタを生成することが出来ます。この部分については、当初(現在でも可能ですが)GEFというグラフィカル面を定義するツールと併せて用いることになっており、慣れた方以外使うのが難しい状況でした。現在ではこのあたりを改善したGMFを利用出来るようになっています。

EMF/GMFで作成するメタモデルはダイアグラムを意識したものになります。例えば、ネットワーク図というものがあります。ノード(クライアントやサーバのマシン)がリンク(通信路:ケーブルやワイヤレスのLAN/WANでの接続)により結ばれている図で、四角い箱が実践や点線で結ばれている図です。このメタモデルを考えると、その主要要素はノードとリンクの二つで、リンクはノードとノードの間を結ぶという関連を持ちます。そしてモデルは図ですので、ノードとリンクを含む親の役を果たすメタモデル要素(ネットワーク図)も追加します。これらにより構成されるUMLのクラス図を想定してもらうと、それがネットワーク図のメタモデルになります。EMFで作成する場合はXML文書の操作になり、GMFの場合はグラフィカルな操作になります。

OMGのホームページから公開されている標準仕様を調べるといくつものメタモデル標準が出てきます。

個人的に気がかりなのは、メタモデルが独立している(重なり合いがない)うちは良いと思いますが、重なり合いが出てきた場合に、将来的に複数のメタモデルを同時に扱うと(重なって現れるメタモデル要素について)どのメタモデルに属する要素なのか区別つかなくなるのではないか、という点です。これが名称空間などで区別出来たとしても、名前が同じだが少し意味の違うメタモデル要素を同じモデルの中でどう扱うかという問題もあります。Ontologyなんて使うのでしょうか?

上でネットワーク図の話を例にあげましたが、ちょっとご存知のアーキテクチャ図というものを思い起こしてください。多分、ほとんどのものが箱形図形要素と線の組み合わせで出来ていたのではないでしょうか?箱形図形がネストしていたり凸凹していたりというバリエーションはあると思いますが。そうすると例であげたメタモデルはアーキテクチャ図のメタモデルのベースになる要素があります。違いが、例えば箱の種類や構造、線の種類だけだとすると、上のメタモデルの箱の部分にサブクラスとして異なる種類の箱を追加するといったカスタマイズをすればかなり良い線まで近づけそうです。興味のある方は試してみてください。ただ、振る舞いの要素を表現しようとするとこれでは不充分で、ステートマシン・状態遷移図やシーケンス図・アクティビティ図に対応するようなものも必要になってくると思います。

広告
メタモデリングについて

コメントを残す

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

WordPress.com ロゴ

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

Google フォト

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

Twitter 画像

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

Facebook の写真

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

%s と連携中