ストラタジーナム メニュー

2007年10月5日金曜日

UML中級講座 第120回 メタモデルのインスタンス表現

タイプ(型)レベルとインスタンス・レベル

OCUPファンダメンタルをお持ちの方は、ご存知だと思いますが、UMLでは、型レベルの視点とインスタンス・レベルの視点があります。具体的には、クラス図の通常の(型レベル)のクラス図と、そのオブジェクトに着目した図(インスタンス・レベル)が、その典型例です。

同様にして、メタモデルにも、この2つの視点が取れ、図形表現にもその違いが反映されます。

図I10は、前回(第119回)にも登場した、"Clock"と言うステレオタイプのメタモデル図です。



この図を、インスタンス表現すると、図I12のようになります。
図中のすべてのクラス名には下線が引かれ、メタクラスのインスタンスである事を示しており、属性"name"は、分類子名(クラス名等)を表しています。
このようなメタモデル図の読み書きは、中級レベルを超えた内容であり、通常のモデラーはあまり気にする必要はありませんが、更に上位のモデリング技術を身に付けたい方(プロファイリング等を駆使したモデリングや概念モデリングを行う必要のある方)のために、簡単に解説致します。
図中に、"iscomposite"という属性があります。これは、拡張(Extension)と言う概念が、コンポジットの性質を使って構成される事に起因します。
ステレオタイプが定義されると、そのインスタンス(ここでは"Clock")は、拡張される側のメタクラス(ここでは"class")のインスタンスを(内部に)所有します。(コンポジット関連を思い出して下さい。)
これらの性質を2つのメタクラス、PropertyとExtensionEndを用いて表しています。
また、拡張の性質を表すメタクラス、Extensionには、"isRequired"と言う論理値を持つ属性があり、以前紹介した通り、この値がTrueであると、拡張される側の分類子は必ずステレオタイプで示される性質を持つ事になります。 (参考までに言いますと、頭に"is"が付く属性名は、通常論理値を持つ性質に付けられます。これは、文法的に決められている訳ではなく一種の慣習です。(ネーミング・コンベンション))

図I12