 |
使えるUML 第8回 |
2007.9.6 掲載
モデルのモデル
今回はUMLの構造について説明します。
皆さんの中には既にUMLを使用してモデルを作成している方も多いと思います。しかし、UMLでモデリングを行っていくにあたり、UML自体の構造の知識を必要とすることは、ほとんどなかったのではないでしょうか。
それは、ハンドルやアクセル、ブレーキを知っていれば車を運転することができ、その内部のエンジンの仕組みを知る必要がないことに似ています。しかしその内部を知れば、燃費の良い運転方法で行ったり、車自体をカスタマイズしたりすることができます。同じように、UML構造を知ることは効率の良いモデリングや、UMLをカスタマイズするための基礎知識として役立つのです。また、最近注目を集めているMDA(モデル駆動アーキテクチャ)を実践する際にも役立ちます。
◇UMLをモデリングする
私たちがUMLを使用して、例えば現実世界をモデリングする際には、現実世界のインスタンスを抽象化してモデルを作成します。それでは、今度はさらにUML自体を抽象化してモデルを作成するとどうなるでしょうか?
図1 UMLのメタモデルの例(一部)
そうして得られた上記のようなモデルをメタモデルと呼びます(実際には、先にメタモデルが仕様として存在していると考える方が自然かもしれません)。メタとは「超えた」とか「上位の」といった意味を持つ言葉です。
UMLのクラス図のようなもので記述されていますが、正確にはこれはMOF(Meta Object Facility)と呼ばれるUMLの姉妹言語で記述されています。
MOFはUMLのクラス図と似ているので、UMLのクラス図だと思って上記の図を読んでいただいて問題ありません。
実はUMLの仕様書では自然言語およびOCL(オブジェクト制約言語)と、このMOFを組み合わせて、より正確にUML仕様を記述しています。上記の例は主にクラス図に関係したメタモデルの例ですが、これ以外にもユースケースやステートマシンなどのあらゆるUMLの要素がMOFによって定義されています。
◇メタモデルの階層は4つのレベル
UMLをモデリングするための言語としてMOFが存在することを説明しました。それならば今度はMOFを定義する言語が存在するように思えてしまいます。しかし、結論からいうとそのような言語は存在しません。というのは、MOFのメタモデルはMOFを用いて定義することができるように定義されているからです。つまり、メタレベル階層を抽象的な方に上がっていくとMOFにたどり着き、それより先は存在しないのです。
さて、現実世界のインスタンスからはじまってMOFに終わるまでのメタレベル階層を、OMGではM0〜M3として定めています。
| レベル |
説明 |
例 |
| M3 |
メタモデルを定義する言語。メタメタモデル。 |
MOF |
| M2 |
モデルを定義するための言語。メタモデル。 |
UML、CWM、SPEM |
| M1 |
モデル。メタモデルのインスタンス。 |
UMLやCWMなどで記述されたモデル |
| M0 |
オブジェクト。モデルのインスタンス。 |
モデルのインスタンス、データ。 |
表1 メタレベル階層
普段UMLにてモデリングする場合にはM0とM1しか使用しませんが、M2とM3がそのためのバックボーンとして存在しているのです。
◇UML以外の言語を作成する
ところで、MOFはUMLを定義している言語ですが、UMLのみを定義するための言語ではありません。MOFはUML以外の新たな言語を定義することができる言語です。例えばCWM(Common Warehouse Metamodel)という仕様が存在します。これはデータウェアハウスのメタモデルをMOFによって定義した仕様です。語弊がありますが、ERモデルのメタモデルを定義しているといえば分かりやすいかもしれません。
図2 CWMのメタモデルの例(一部)
モデリングを行うにあたってUMLのような汎用モデリング言語を使用する方法に対し、モデリング対象に特化した新たな言語を定義してモデリングを行う方法も注目を集めています。このようなモデリング対象に特化した言語をDSL(Domain Specific Language)と呼びますが、MOFはこのDSLを定義する目的に使用することができます。
◇まとめ
- UMLモデル自体のモデルはメタモデルとして定義されている。
- UMLのメタモデルはMOFによって定義されている。
- メタ階層がM0〜M3まで存在しており、M3にあたるMOFはMOF自体によって定義されている。
- MOFによって新たな言語を作成することもできる。
今回の話は、UMLのモデリングと直接結びつかないため、あまり関係のない話のように思われる方もいたかもしれませんが、より上級のUMLモデリングを行うための基礎知識として必要です。特にMDAではM2およびM3での思考が要求されるために混乱することが多いかもしれません。しっかり整理しておくとよいでしょう。
◇書籍紹介
今回の記事に関して詳しく学習したい方は、弊社の技術者が著しました「独習UML 第3版」をご参照ください。
 |
独習UML 第3版 |
【著作】 株式会社テクノロジックアート
【監修】 長瀬嘉秀/橋本大輔
【出版】 株式会社翔泳社
|
また、UMLによる設計/開発・支援に関しましては、弊社テクノロジックアートで提供しておりますトレーニングコースや、コンサルティングサービスをご活用いただけます。
■筆者紹介 山下 智也/Tomonari Yamashita 株式会社テクノロジックアート テクニカルデプト UMLモデリングチーム
|