Skip to content.

Sections
Personal tools
You are here: Home » 技術文書 » UML » サルでもわかるUMLメタモデル

Document Actions
saruサルでもわかるUMLメタモデル
(株)永和システムマネジメント   平鍋健児
作成日:初版 2002, 11/25

UMLは非常に記述力に富んだ言語です.一般には,UML はソフトウェアを表現する分析・設計言語,と捉えられています.しかし,UML 自身も分析対象とすることができます.ここでは,

UML自身をUMLを使って表現

してみましょう. UMLの言葉で,UML を記述するのです.UML 自身を使って UML を記述した ものをUML メタモデルと呼びます.この記事で は,UMLメタモデルをやさしく紹介,解説していきます.

   まずはクラス

まず,口座というクラスを考えます.属性として, 「残高」,操作として,「預け入れる()」と「引き出す()」を持っています.

口座
図1 : 口座クラス

このクラスをじっくり見て下さい.このような,クラスのUML表記を一般化 して,「クラスとは何か」を考えて見ましょう.

クラスは1つの名前を 持ち、属性および操作 をそれぞれ複数持っています.これは,次のようなUMLクラス図で表現できます.

metamodel
図2 : クラスをUMLで表現する(メタモデル)

もう少し分析してみましょう.操作属性クラスに属する要素で あり,クラスを特徴付けるものです.可視性などの共通の属性もあるでしょう.よって,操作属性を汎化して特徴としましょう.

また,クラスは名前を持ちますが, 操作属性も名前を持ってい ます.UMLのすべての要素を表すモデル要素という 抽象クラスを導入して,名前をそのクラスの属性とします.さらに,残高クラス には出て来ませんが, クラスとよく似たものに,インター フェイスがあります.どちらも,特徴のリ ストを持っていますが,インターフェイスには実装がありません.クラスインターフェイスを 汎化したものを,新しくクラシファイアと名づけ ることにしましょう.これらをUMLクラス図で表現すると,以下のようになります.

metamodel
図3 : さらに分析したクラス(メタモデル)

このように,UMLをUMLを使ってより正確に定義して行くことができます. クラスの周辺についてのみ分析を行いましたが, クラス図だけでも,関連集約多重度などなど,まだまだ分析しなけ ればならないモデル要素があります.


  UML1.4メタモデル


さて,こうやって作られたUMLのモデルを, メタモデルと読んでいます. メタとは, 一段高い階層という意味です.UML 自身を,UML 自身で 定義したモデルと言うことができます.

図4に,クラス周辺の正式なメタモデル図を示します. ここで,「正式な」とは,「UML 1.4 として定義されている」,という意味です. この部分は,UML1.4メタモデルの中の,コア(Core)パッケー ジ-バックボーンと呼ばれている部分(の一部)です.



core-backbone
図4 : UML メタモデル(コアパッケージ - バックボーン)

この図を読み取ることは,UML の良い勉強になります.UML を読む勉強と UML を知る勉強です.これから,以下が読み取れます.

  • モデルに関する要素は,モデル要素のサブクラスである.


  • モデル要素のサブクラスとして,特徴名前空間汎化可能要素パラメータ,がここでは提示されている.


  • 名前空間は,それに属するモデル要素を持っている.


  • クラスインターフェイスを汎化したものとしてクラシファイアがある.


  • クラシファイア名前空間であり,汎化可能要素でもある.


  • クラシファイア特徴の列を持っている.


  • 特徴は,構造特徴振舞特徴の2種類に分かれる.


  • 属性構造特徴である.


  • 構造特徴は,型として,クラシファイアと対応づけられる.


  • 操作メソッドは,振舞特徴である.


  • 振舞特徴は,パラメータの列を持っている.


  • パラメータは,型として,クラシファイアと対応づけられる.


  • メソッドの仕様が,操作である.

どうでしょうか.UML の構造がより明確になっています.これも,UMLの表現能力の高さの現れだと言えます.


   モデル階層

では,UMLモデルの,このメタ構造はどの ようになっているのでしょうか.「モデル」と言った場合,次のレベルが 考えられます. 一番下が,現実のユーザオブジェクトレベル(M0), その上が,ユーザが作った UML モデルレベル(M1), そして,その上が,UML 自身をUMLで分析したメタモデル(M2)です. M0, M1, M2 は3層の階層構造となります.

例えば,先程の「口座」クラスを考えて見ましょう.

M1
図1(再掲) : 口座クラス(M1)

これが,一般的にUMLクラス図と言われているものです.これは, 3階層の真ん中,M1 となります. この図は,UMLのユーザのあるモデルを示しています.

次に,実際のインスタンスレベル(具体的なオブジェクト)では, この状況はどのようになるでしょうか.M1 の下にある,M0 を考えます. このモデルのオブジェクトモデル(データの一例)としては, 以下の「佐藤さんの口座例」が考えられます.

M0
図5 : 口座のオブジェクトモデル(M0)

この例では,佐藤さんの口座として,残高2,000円の状態をもった あるオブジェクトが示されています. これは,UMLのオブジェクト図として表されています. これは先のモデルの一つのデータ例,インスタンス例ということができますし, 逆に,先のモデルは,このようなデータを一般的に記述したものということができます.

最後に,M1の上のM2 です. さまざまなユーザのクラス図をさらに一般化して, UMLで表しているのがメタモデル(M2)でした.このメタモデルは, 例えば以下のように表現されます.

M2
図2(再掲) : クラスをUMLで表現する(メタモデル M2)

ここでも,先のモデル(口座モデル - M1)は,UMLメタモデル(M2)の一つのデータ例, インスタンス例といえますし,逆に,メタモデルは,モデルを一般的に 記述したものということができます.

最後に,これらの階層を表して見ます.この階層は, 「実例モデル」←→「一般化モデル」の階層となります.

メタモデル(M2) M2
モデル(M1) M1
ユーザオブジェクト(M0) M0
図7: メタモデルの階層

階層を上に上がる方向をメタといいます.つま り,現在の階層をモデル化して一般化したものがメタ です.階層を下に下がる方向がインスタンス化です.モデルの一つの 実例が下にあると考えられます.これは,実例(インスタ ンス)抽象化(クラス)の関係とも捉えられます.


   メタモデルの上は?

メタモデルをさらに一般化することはできるでしょうか?それは何でしょう? 答えはイエスで,このモデルをメタメタモデルと呼びます.しかし, ここまで来るとその実質上の意味を捉えることが難しくなります. UMLでは,ユーザオブジェクト,モデル,メタモデル,メタメタモデル の4階層で,UML自身を正確に定義しようとしています.


Kenji Hiranabe <hiranabe@esm.co.jp>
Last modified: Mon Nov 25 19:03:56 2002




この記事への評価にご協力をお願いします。

良かった 普通 イマイチ