MDA

MDAとは、アプリケーションの機能を図で表し、そのモデル情報によってソフトウェア等を開発する手法. Model Driven Architecture、モデル駆動型アーキテクチャ.

MDAの概要
MDAとは、ソースコードではなくモデルを中心にしてソフトウェア等の開発を進めていく手法である. MDAでは、業務の分析、設計段階でプラットフォームに依存しないモデルを作成する. モデルは特定のプラットフォームに依存しないので、一度作成すれば複数のソフトウェアや個別のプラットフォームに合わせたソフトウェア等を開発する際にも、それぞれに合わせて業務プロセスを分析しモデルを作成する必要はない. モデルが定義されれば、自動的に特定言語や製品へマッピングすることやシステム管理やシステム統合などもモデルを中心として行うことができる.

MDAの大きなメリットは、OSや言語などに依存せず業務をモデル化することで、業務とシステムを別々に変更することが可能になった点である. 業務プロセスの実行を支援させるソフトウェア等の機能をコンポーネント化することで、個々の機能をそれぞれ開発・変更できる. MDAは、2001年に標準化団体のOMG（Object Management Group）が中心となって提唱したものである.

MDAの手順
通常、ソフトウェア等の開発は業務分析、設計、開発、保守といったサイクルで実行される. MDAでは、 のモデルを作成し、ソフトウェア等を開発する.
 * CIM・・・ソフトウェア等で自動化する機能をモデル化. 計算処理非依存モデル（Computation-Independent Model）.
 * PIM・・・OSや言語に依存しないビジネスモデル. 分析段階で作成. プラットフォーム非依存モデル（Platform-Independent Model）.

また、PIMを作成した後に、

PSM・・・特定のOSや言語などのプラットフォームに特化したモデル. 詳細設計の段階で作成する. プラットフォーム特化モデル（Platform-Specific Model）.

を作成することもある. PIMからPSMへの変換やPSMからソースコードの作成はツールを利用すれば自動で行える.

開発手順は、
 * 1) ユーザの要求や業務分析の結果から、CIMを作成する.
 * 2) CIMを受けて、ソフトウェア等の機能を利用したビジネスプロセスとしてPIMを作成する.
 * 3) PIMをベースに個別のプラットフォーム技術に特化したPSMを作成する.
 * 4) PIMもしくはPSMの情報から、ツールを使って実際のソースコードに変換して実装作業を進めていく. 変換に関しては、標準規格のQVTがある.

MDAでは、開発の各工程におけるモデルを独立して規定することで、それぞれのモデルの再利用性を高めている.

MDAを提唱するツールは、大きく二つに分けることができる.
 * データモデリングを中心とした骨格作成を目的としたのもの
 * ビヘイビアモデリングを中心としたコードの自動生成を目的としたもの

UML
UML（Unified Modeling Language）は、システム開発で用いられるさまざまなモデルの表記法を統一し、標準化した言語. PIM、PSMを表現するために利用される. また、特定の用途向けのモデルを交換するためのUMLプロファイルというものもある.

MOF
MOF（Meta Object Facility）は、モデル作成をするためのモデルであり、プログラミング言語で必須となる概念を定義する.

XMI
XMI（XML Metadata Interchange）は、MOFを基盤にしたモデル情報をXML形式に変換する. そして、開発における各ステップで使用するツール間でモデルを交換可能にするための技術仕様.

CWM
CWM（Common Warehose MetaModel）は、データベース（データウェアハウス）用にモデルを定義する技術仕様.

MDAに関する懸案
MDAについて、OMGが提唱している内容と一般に理解されている内容にずれがある. OMGのMDAの特徴は、 「視覚的なモデリングツールによって、他の設計ツールやアプリケーション、データベースと情報のやり取りができる」点である. しかし、一方で、一般に理解されている内容は、「モデリングツールによって自動的にコードが作成できソフトウェアなどの開発が行える」というものである. 両者の内容には若干の誤差があり、MDAという概念の定義は未だ完全には整備されていない.

この他にも、次のような懸念材料もある.
 * 本来環境に依存しない手法のMDAのツールを提供するベンダーが、各ツールを抱き合わせ顧客の囲い込みを行っている.
 * MDAに関する標準化が遅れている.
 * MDAに基づいた開発には特別のスキルが必要になり、MDAのモデル作成にも大きな労力が必要.
 * 実際にソフトウェア等の開発のためのモデルを作成すると非常に複雑になってしまう.

BPM・BPMNとMDAの関係
MDAに基づいて個々のソフトウェア等が開発されていることにより、BPMによる継続的なプロセス改善はいっそう効果的になる. プロセス内で利用される個々のソフトウェア等がコンポーネント化されていることで、ビジネスプロセスの部分的な変更や新しいソフトウェア等の導入が可能になる. また、プロセス志向でソフトウェア等を開発・導入することも可能になる.

また、UMLとは異なるモデリング記法として、BPMNがある. UMLもBPMNも、どちらもOMGによって提供されているが、BPMNはワークフローとしてビジネスプロセスをモデル化するための表記法の標準とされている. 今後、MDAの段階におけるモデルもBPMNに従って作成され、そのモデルをやり取りするようになることが期待される.

関連記事

 * OMG
 * BPM
 * BPMN
 * SOA