モデル駆動型アーキテクチャ

モデル駆動型アーキテクチャ（モデルくどうがたアーキテクチャ、"Model-Driven Architecture"、MDA）とは、Object Management Group (OMG) が2001年に公式に発表したソフトウェア設計手法である。MDA はソフトウェアシステムにおけるモデル駆動工学サポートを意図したものである。
概要.
モデル駆動型アーキテクチャ (MDA) は、モデルとして表現される構造的仕様のガイドラインを提供するソフトウェア開発手法である。MDAでは、システムの機能はまず適切なドメイン固有言語を使ってプラットフォーム独立モデル (PIM) として定義する。CORBAや .NET といったプラットフォーム定義モデル (PDM) が与えられると、PIM は別のドメイン固有言語や汎用のプログラミング言語（Java、C#、Python など）に対応したプラットフォーム特化モデル（PSM）へと変換される。PIMとPSMとの変換は通常、モデル変換ツールなどの自動化されたツールを使って行われる（例えば OMG が標準化したQVT）。工程全体は文書化され、OMG が MDAガイド（MDA Guide）として保守している。
MDAモデルは、統一モデリング言語 (UML)、Meta-Object Facility (MOF)、XML Metadata Interchange (XMI)、Enterprise Distributed Object Computing (EDOC)、Software Process Engineering Metamodel (SPEM)、Common Warehouse Metamodel (CWM) といった複数の標準規格と関連している。モデル駆動型アーキテクチャの「アーキテクチャ」とはモデル化対象のシステムのアーキテクチャのことではなく、MDA を構成する各種標準やモデル形式のアーキテクチャを意味する。
Object Management Group (OMG) は、「MDA」や「Model Driven Architecture」を商標として登録しており、他にも関連する用語を商標として登録している。OMG が現状で商標登録していない略語としては MDE（モデル駆動工学の略語）がある。
手法.
MDAの主たる目的として、アーキテクチャから設計を分離し、設計とアーキテクチャがそれぞれ独立して変更できるような技術を確立するということが上げられる。設計とは機能的な要求仕様（ユースケース）の実装に対応するもので、アーキテクチャは機能とは無関係なスケーラビリティ・信頼性・性能などの要求仕様の実現に対応する。MDA は、実装技術やソフトウェアアーキテクチャが変化しても、機能的要求仕様の概念設計を表現したプラットフォーム独立モデル (PIM) が依然として利用可能となることを意図している。
モデル駆動型アーキテクチャでも特に重要となるのはモデル変換に関する部分である。OMG はQVTと呼ばれるモデル変換のための標準言語を定義した。
ツール.
MDAツールは、モデルやメタモデルの開発・翻訳・比較・調整・計測・検証・変換などに使われる。以下では、モデルもメタモデルも総称して「モデル」と表記する。MDAには基本的に2種類のモデルがある。「初期モデル; initial model」は主に人間が手動で作成するものであり、「導出モデル; derived model」はプログラムによって自動的に生成されるものである。例えば、アナリストがビジネスの現状を観察してUMLの初期モデルを作成し、そのUMLモデルにモデル変換を施して自動的に Java モデルを生成する。
MDAツールは以下の種類に分類される。
ツールによってはこれらの機能を複数備えている。例えば作成ツールによっては変換や評価の機能も持っている。もちろん、作成のみのツール、グラフィカルな表現のためだけのツール、変換だけを行うツールなどもある。
MDAツールの特徴は、モデル（MOFモデルやメタモデル）を入力とし、別のモデルを出力する点である。ただし、文書とモデルとの変換ツールなどではMDAの範囲外のパラメータの入力が必要となることもある。
MDAツールは、いくつかのベンダーやオープンソースプロジェクトで開発されている。Rational Rose はベンダー作成のツールである。マイクロソフトはMDAに準拠しない類似のツールを提案している。Eclipseでは各種オープンソースツールを開発中である。
MDAツールはUMLツールよりも範囲が広い点に注意されたい。これは、ベースとしているメタモデルが可変か固定かの違いである。UMLツールのメタモデルは一般に固定であり、特定のUMLメタモデル（例えば UML 2.1）上でのみ動作する。一方 MDAツールは任意のメタモデルに対応できる仕組みを用意しているか、複数のメタモデルをサポートしている。
MDAツールは基本的なアーキテクチャ仕様を扱うことが多いが、アーキテクチャ（およびプラットフォーム）に依存しないツールもある。ここでいうアーキテクチャ仕様とは次のようなものを意味する:
懸案事項.
2001年に始まったMDAの基盤となる概念は、1980年代後半にとして初めて明確化された。その後、標準化がなされないまま Shlaer-Mellor Action Language を利用したMDA的手法がいくつかのベンダーで試みられた。しかし、この間のMDA的手法は業界に広く受け入れられることはなかった。ガートナーは2006年現在もMDAを "on the rise"（成長中）の技術であるとしている。フォレスターリサーチは2006年に MDA は死に体（D.O.A.）であるとした。OMGのMDAに関する懸案事項としては次のようなものがある: