第1回「MDAのメリットを考える」と第2回「開発の流れにMDAを取り込む」で、MDAの利用方法の紹介を終了しました。今回は、MDAがどのように働くかを解説します。実際にMDAの技術の利用者が詳細まで理解する必要はありませんが、利用しているテクノロジがどのようなものなのかはぜひ知っておいていただきたいと思います。
図1にMDAの動作の概要を示しました。第1回の繰り返しになりますが、再度概要を解説します。実際にMDAを利用して開発者が開発を行う場合、テクノロジとして意識して利用するのは、図にあるPIM、PSM、UML Profileです。
第1回で解説したように、分析段階でPIMを作成します。これをMDA対応ツールがPSMへと自動変換します。さらに、MDA対応ツールは、PSMからソースコードへも自動変換を行います。MDA対応ツールは、この自動変換を逆方向に対しても行います。
PIM、PSMには、UMLプロファイルを定義することが可能です。UMLプロファイルは、UMLの拡張の機能を利用して特定用途向けの拡張を行うための仕組みです。これを利用して、会計処理用のUMLプロファイルをPIMに適用したり、EJB用のUMLプロファイルをPSMに適用することが可能です。標準のUMLプロファイルを利用することにより、特定用途向けのモデルがツール間で相互運用可能になるメリットがあります。また、ユーザーが自らUMLプロファイルを定義して、PSMへの変換ルールを決めてPIMからPSMへの変換を行うことも可能です。第1回で解説したPIM上にアーキテクチャを導入する方法などもこのUMLプロファイルを用いて実現することも可能です。
UML Profile for CORBA
UMLを使って、CORBA IDLの意味を表現するためのものです。これによって、UMLのツールを使うことが可能になります。
UML Profile for EJB
UMLを使ってEJBアーキテクチャに基づいたシステムの設計を行うためのものです。JCP(Java Community Process) の中で UML/EJB Mapping Specification として始まったものです。Java 言語仕様に基づくものや EJB 仕様に基づくものをモデル上に表現するためのステレオタイプやタグ付き値が提案されています。図2にEntity Beanの例を示します。リモートインターフェイスには、<<EJBRemoteInterface>>というステレオタイプ、ホームインターフェイスには、<<EJBEntityHomeInterface>>、実装クラスには、<<EJBImplementation>>のステレオタイプが付いています。
PIMからPSMの変換をUMLプロファイルを用いて行う場合、あるステレオタイプの付いているクラスを認識して、あるステレオタイプのクラスへ変換するといった動作をすることになります。実際には、<<entity>>のステレオタイプの付いたクラスから、<<EJBRemoteInterface>> <<EJBEntityHomeInterface>> <<EJBImplementation>>の3つのクラスが生成されることになります。
図3のCustomerクラスから、図2の3つのクラスが生成されます。このように、UMLプロファイルを用いてPIMからPSMの変換を行うためには、どのクラスがどのクラスにマッピングされているかを定義する必要があります。変換を行うためには、このマッピングを定義する必要があります。これは、ツールがデフォルトで持っているケースもありますが、独自のUMLプロファイルを適用する場合は、マッピングを新たに定義する必要があります。
次にMDAを構成する技術的な要素について解説します。ここからの解説は、実際にMDAを利用するエンジニアにとって必須となる知識ではありませんが、MDAがどのような仕組みで成り立っているかは、知っておいても損はないと思います。
Copyright © ITmedia, Inc. All Rights Reserved.