UTI UML教育研究所
トップページ> 読み物> コラム> 使えるUML 第8回
はじめるUML(全12回)
  はじめてみよう!
  モデル要素の整理整頓
  システム全体の構造(1)
  システム全体の構造(2)
  システム全体の構造(3)
  システム化対象の業務(1)
  システム化対象の業務(2)
  システムの動き(1)
  システムの動き(2)
  状態の移り変わり
  OCUPにチャレンジ!
  UML2.0総括(最終回)
続はじめるUML(全10回)
  使ってみよう!
  UMLによる業務分析
  営業職のOCUP受験体験記
  UMLによる要求分析
  インターメディエイト受験体験記
  UMLによるシステム分析
  アドバンスト受験体験記
  UMLによるシステム設計
  情報システム管理者が利用するUML
  続はじめるUML総括
使えるUML(全10回)
  使いこなしてみよう!
  物事を分けてとらえる
  コンポーネント図のいくつかの表現方法
  枠組みを使用してとらえる
  内容とその表現方法をわける
  パターンの表現
  続・パターンの表現
  モデルのモデル
  あいまいさを排除する
  「どのように(How)」から「何を(What)」へ
  大人のオブジェクト指向(最終回)
資格取得までのステップ
FAQ
教育コンテンツ
キャンペーン
ブックプラス
パートナープログラム
認定ユーザープログラム
メールマガジン登録
お問合わせ
使えるUML 第8回

パターンウィーバー(PatternWeaver) ver2.2
さらに使いやすく、新機能満載!
  • 多言語によるモデル開発をサポート
  • モデル駆動型のSOA(サービス指向アークテクチャ)をサポート
  • MS-Word形式へのドキュメント出力をサポート
  • RCP(Rich Client Platform)版の提供を開始
  • 洗練された各種ダイアグラム
  • 操作性の強化
  • リポジトリ(UML要素管理機能)の強化
  • ソースコード連携の強化

評価版がダウンロードできますので、ぜひお試しください。
http://pw.tech-arts.co.jp/download/community_edition.html

●商品に関するお問い合わせ
株式会社テクノロジックアート
e-mail : pw@tech-arts.co.jp
http://pw.tech-arts.co.jp/

パターンウィーバー無料プライベートセミナー 〜知らなかったこんな使い方〜
申込受付中!第二回目は9/19(水)開催
2007.9.6 掲載
モデルのモデル
今回はUMLの構造について説明します。
皆さんの中には既にUMLを使用してモデルを作成している方も多いと思います。しかし、UMLでモデリングを行っていくにあたり、UML自体の構造の知識を必要とすることは、ほとんどなかったのではないでしょうか。
それは、ハンドルやアクセル、ブレーキを知っていれば車を運転することができ、その内部のエンジンの仕組みを知る必要がないことに似ています。しかしその内部を知れば、燃費の良い運転方法で行ったり、車自体をカスタマイズしたりすることができます。同じように、UML構造を知ることは効率の良いモデリングや、UMLをカスタマイズするための基礎知識として役立つのです。また、最近注目を集めているMDA(モデル駆動アーキテクチャ)を実践する際にも役立ちます。

◇UMLをモデリングする
私たちがUMLを使用して、例えば現実世界をモデリングする際には、現実世界のインスタンスを抽象化してモデルを作成します。それでは、今度はさらにUML自体を抽象化してモデルを作成するとどうなるでしょうか?

図1 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のメタモデルの例(一部)
図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 第3版
【著作】 株式会社テクノロジックアート
【監修】 長瀬嘉秀/橋本大輔
【出版】 株式会社翔泳社

また、UMLによる設計/開発・支援に関しましては、弊社テクノロジックアートで提供しておりますトレーニングコースや、コンサルティングサービスをご活用いただけます。


■筆者紹介
山下 智也/Tomonari Yamashita
株式会社テクノロジックアート テクニカルデプト UMLモデリングチーム