MDAは,モデリングのための言語であるUML(Unified Modeling Language)でモデルを記述することにより,最終的なソフトウエアまで開発してしまおうという考え方です。日本語では「モデル駆動型アーキテクチャ」などと訳します。UMLの標準化などを行っているOMG(Object Management Group)が標準化しています。

 ただ,MDAは誤解されやすい概念でもあります。最もメジャーといえる誤解は「MDAはCASE(Computer Aided Software Engineering)と同じものである」という誤解です。MDAはあくまで標準仕様です。にもかかわらず,MDAに準拠していない,従来からあるCASEツール/コード生成ツールが,MDAを宣伝文句として販売されているという現実があります。

 「MDAの変換は一対一である」という誤解もあります。そうではなく,MDAではモデルから“複数の”モデルあるいは“複数の”テキストを生成できる点が重要です。例えば,一つのモデルを,JavaやC#のソースコード,XMLといった様々なテキストに変換できます。モデルさえ確定すれば複数の実装を生成できるため,「異なるプラットフォームで動作するソフトウエア製品のラインナップを作りたい」という企業や「開発の途中でプラットフォームが変わる可能性がある」といったケースで威力を発揮します。

 MDAの問題点は,実際に動作するソフトウエアを実現しようとすると,モデルがどんどん複雑になってしまう点です。MDAで必要になる精度の高いモデリングを実現するために,UML 2.0にOCL(Object Constraint Language,オブジェクト制約言語)という記述言語を組み合わせることが提唱されています。もっとも,MDAのモデリングに大変な労力をかけるくらいなら,最初からソースコードを書いたほうが早いということになりかねません。この問題については,まだ明確な解決策は示されていません。

 なお,米Microsoftが提唱している「ソフトウエア・ファクトリ」という開発方法論もMDAの影響を受けています。違いは,MDAはプラットフォームに依存しないのに対して,ソフトウエア・ファクトリは .NET Frameworkに特化している点です。