検索
連載

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

第1回「MDAのメリットを考える」と第2回「開発の流れにMDAを取り込む」で、MDAの利用方法の紹介を終了しました。今回は、MDAがどのように働くかを解説します。実際にMDAの技術の利用者が詳細まで理解する必要はありませんが、利用しているテクノロジがどのようなものなのかはぜひ知っておいていただきたいと思います。

PC用表示 関連情報
Share
Tweet
LINE
Hatena
前のページへ |       

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に示します。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

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サイトがわかる本」(いずれもオーム社)がある。


前のページへ |       

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る