http://www.martinfowler.com/bliki/ModelDrivenSoftwareDevelopment.html

モデル駆動ソフトウェア開発(MDSD)は、 伝統的なプログラミング方式の代替であると謳うソフトウェア開発手法のことです。 この手法は、ソフトウェアシステムのモデルの構築に主眼を置いています。 通常、こうしたモデルは、図を用いた設計記法によって表されます——たとえばUMLが選択肢の1つとなります。 これらの図を使い、 捉えたシステムをモデリングツールに描画して、 伝統的なプログラミング言語のコードを生成する というのが、基本的な考えになります。

MDSDの構想は、図を用いた設計記法とCASEツールから生まれました。 これらの技術の提唱者たちは、図を用いた設計記法をプログラミング言語よりも抽象度を高めるための方法であると考えており、開発の生産性を向上させるものであると見なしていました。 これらの技術は全く受け入れられるものではありませんでしたが、 核となる考えは今もなお生き永らえており、 現存するコミュニティによって開発が継続されています。

私もMDSDにはある程度関わったことがありますが、その未来には懐疑的です。 MDSD好きというのは、「モデルはプログラミング言語よりも抽象度が高い」ことが好きなのです。 しかし私は、その主張には賛成できません。 図を用いた設計記法を使ってうまく抽象化できることもあるでしょう。 しかし、常にそうであるとは限らないのです——うまくいくのは特殊な場合だけでしょう。 さらに言うと、MDSDを使うには RepositoryBasedCodeをサポートするツールが必要です。 現在のところ、こうしたツールにはいくつもの問題点があります——ソースコントロールがその典型的な例でしょう。

MDSDには用語の混乱も見られます。 MDSDの構想の1つは、OMGがUMLを基に提唱しているModelDrivenArchitecture(MDA)です。 しかし、MDSDコミュニティの多くの人たちは、MDAやUMLはMDSDの正しい行く末ではないと考えています。 モデル駆動開発(MDD)は一般的な概念であり、 MDAはOMG独自の構想であるという話は聞いたことがあります。 しかし、OMGは、いくつもの「モデル駆動ほげほげ」やら「モデルベースほげほげ」やらの商標権を持っているのです——MDDもそうです。 ですから、誰かと話すときは「それはどのモデル駆動?」と聞かなければなりません。 私がここでMDSDという言葉を使ったのは、 良書の書名になっているからです。