MDAはどのように作動するかMDAのしくみ(3)(2/2 ページ)

» 2004年04月23日 12時00分 公開
[樫山雄一(ボーランド),@IT]
前のページへ 1|2       

MDAの構成要素

 MDAは、以下の要素で構成されています。

  • UML 2.0:PIM、PSMを表現するために利用される
  • MOF(Meta Object Facility):UMLや各言語の相互運用性を確保するために、これらを定義するために利用される
  • XMI(XML Metadata Interchange):ツール間でのモデルの交換を行うために利用される

 各要素がどのようにMDAで利用されているかを以下、順を追って解説します。

OMGの4層メタモデル

 PIM、PSM変換を実現するために、MDAを実現するためのメタモデルの階層として、OMGでは、4層メタモデルを定義しています。階層を表1に示します。

M3:メタメタモデル(MOF)
この層にOMGのモデルの最も基礎となるメタメタモデルが入ります。ここでは、UMLやJava、C++といった言語のクラスという概念の定義などを行っています。この層の定義は、MOF(Meta Object Facility)で行われています。
M2:メタモデル(UMLメタモデル)
この層では、UMLやJava、C++といった各言語のクラスの定義や属性、操作の定義などが入ります。この層は、M1層のモデルのメタモデルに当たります。
M1:モデル(UML)
開発者がシステムを開発するために設計するモデルがこの層のモデルです。UMLで記述されたモデルは、もちろんこの層に入ります。また、各言語で書かれたソースコードもこの層のモデルとなります。
M0:インスタンス
実際に動作しているインスタンスがこの層に当たります。
表1 モデルの階層

MOF(Meta Object Facility)

 MDAを実現させるには、モデル、プログラミング言語をすべて詳細まで定義する必要があります。これらの定義は、共通の基盤上の定義でなければ相互運用を実現することができません。これを実現するための仕組みがMOFになります。

 MOFでは、CLASS、ASSOCIATIONS、PACKAGE、DATATYPEなどプログラミング言語で必須となる概念を定義しています。MOFを利用して、UMLやJavaの定義を行うことが可能です。この仕組みを利用すると各言語(UMLやJavaなど)のモデルが相互運用することが可能になります。

 UMLをOMGの4層メタモデルに当てはめると図4のようになります。

ALT 図4 4層メタモデルの例(クリックすると拡大)

 M1層が従来UML 1.xで利用していた層です。通常の分析・設計を行う層であると思ってください。図4の例では、PersonクラスとCompanyクラス、その関連が定義されています。このモデルをインスタンス化したものがM0層になります。これもUMLで記述しています。 オブジェクト図に当たります。

 M2層はUMLメタモデルといい、ここではUMLダイヤグラムにおけるクラスとは何か、関連とは何か、といったUMLモデル要素の意味付けがされています。言い換えるとUMLダイヤグラムの記述の仕方が定義されていることになります。 M1層で記述できるモデルは、UMLメタモデルのインスタンスであると考えられます。そしてM3層(MOF)は、M2層で使用されるすべてのモデル要素を定義しています。この例では代表として「Class」を挙げています。

 図5は、UMLメタモデルから「Class」に関する部分を抜粋したものです。

ALT 図5 UMLメタモデル(抜粋)

 ここから読み取れることは、UMLモデルに現れるクラスは、その上位概念として「Classifier」を持ち、それは「Feature(特徴)」を複数持つといっています。「Feature」は「StructuralFeature(構造的特徴)」と「BehavioralFeature(振る舞い的特徴)」に分かれています。さらに「StructuralFeature」は「Attribure(属性)」に、「BehavioralFeature」は「Operation」と「Method」にそれぞれ具体化されています。

 このことは、まさにUMLモデルに登場する“クラス”を表現していることが分かります。さらにクラスは、関連でほかのクラスと結ぶことができたり、汎化の関係で上位概念のクラスに結び付けることができます。このメタモデルは抜粋ですので、そこまで読み取ることはできませんが、UML仕様ではすべてがカバーされています。

XMI(XML Metadata Interchange)

 これは、XMLを用いてメタデータの交換を行うための仕様です。MDAを実現するうえで、欠かせないのがモデルやメタモデルのツール間での交換です。これを実現するための仕様がXMIです。XMIは、UMLやMOFと非常に関係が深い仕様です。XMIで実際に定義されるDTDをOMGの4層メタモデルに合わせて考えると図6のようになります。それぞれのレイヤでのモデルを交換するためのDTDが定義されます。

 XMI 1.1は、UML 1.3メタモデルの物理的表現を定義するDTDを作るために使われました。

ALT 図6 XMIと4層メタモデル

UML 2.0

 MDAやCWM(Common WareHouse Model)、MOFはすべてUML 2.0ベースとなるため、ここで少しUML 2.0に触れておきましょう。UML 2.0はCWM( Common WareHouse Model)やMOF( Meta Object Facility)と密接な関連を持つ仕様です。以下の4つの部分で構成されています。

・UML 2.0 Infrastructure

・UML 2.0 SuperStructure

・UML 2.0 OCL(Object Constraint Language)

・UML 2.0 Diagram Interchange

 UML 2.0 Infrastructureは、UMLの仕様の一部分であるコアの定義とコアを利用するUML Profileを作成するための定義が入っています。このコアは、MOFと共通のものであり、メタメタモデルを定義するものとなります。UML 2.0 SuperStructureは、UMLの仕様の中でUML自身の使用を定義します。UML 1.xは、ここで再定義されることになります。

 OCLに関しては、今回はでは解説しませんでしたが、すでにUML 1.1で導入されています。主にUMLメタモデルの記述に用いられています。OCLは、UMLを用いたモデリングを行うために用いられる言語です。しかし、通常のプログラミング言語のようにオペレーションを正確に記述することができず、オブジェクトの制約条件を記述するにとどまります。

 Diagram Interchangeはその名のとおり、UMLツール間でUMLの図を交換するための仕様です。


 MDAの動作を詳細まで理解することは、かなり難しいことだと思います。特にMOFの役割やメタメタモデルなど、理解しにくいキーワードがたくさんあります。これらを理解したうえでMDAを利用することができればベターですが、必ずしもすべてのエンジニアが理解する必要はありません。MDAを実現するツールベンダが開発者にとって扱いやすいようにMDAの難しさを隠ぺいしてツールを提供します。現状では、まだまだMDAを実現するうえでは、十分なツールが出そろってはいませんが、今後より良いツールが提供されてきます。その前に、開発プロセスを含めた改善を考えておくことが必要です。

この記事に対するご意見をお寄せください

managemail@atmarkit.co.jp


著者紹介

▼樫山友一

 大手電機メーカー研究所でオブジェクト指向によるシステム開発に従事する。1996年よりJavaへの取り組みをはじめ、J2EEアプリケーションサーバを活用したWebシステム構築のコンサルタントとして多数のプロジェクトを手掛ける。2003年4月に日本ボーランド株式会社プロフェッショナルサービス本部・本部長に就任。著書に「わかりやすいUML入門」、「Webサイトがわかる本」(いずれもオーム社)がある。


前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.