http://martinfowler.com/bliki/ModelDrivenArchitecture.html

モデル駆動型アーキテクチャ(MDA)は、ソフトウェア開発において、アセンブラから初期の高レベル言語への転換以来の大きな転換となるだろう、という人がいます。一方で、単なる『ナイト・オブ・ザ・リビング・CASEツール/ゾンビの誕生(訳注:『ナイト・オブ・ザ・リビング・デッド/ゾンビの誕生』ジョージ・A・ロメロ)』に過ぎないという人もいます。私は後者の立場ですが、こういった’‘うまい’‘言い回し以上の何かが必要だと感じています。

今までにMDAについて語られてきたことは、80年代にCASEツールコミュニティーで語られてきたこととまったく同じです。CASEツールが失敗したのにはいくつかの理由がありますが、根本的な理由は「一般的なエンタープライズアプリケーションを他の選択肢よりも生産的に構築できる統合プログラミング環境」ではなかったという点でしょう。

CASEツールはある特定のタスクをこなすには便利な代物です。私もデータベースのスキーマを構築するときは、Text PadにSQLを書くよりもグラフィカルなスキーマデザイナーを使うようにしています。ですが、CASEツールでは出来ないこと、難しいことはあまりにも多いのです。

MDAはこういった状況を変えることが出来るのでしょうか。UMLは元々、設計アイデアをやり取りするための表記法でした。私はUMLをスケッチとして頻繁に使っていますから分かりますが、UMLを(MDAが動くような)完全なるソリューションにするほど厳密に記述するのは、相当難しいことです。もちろんUML2では、多くの人たちがUMLを理論上完璧なものにしようと懸命になっています。しかし、これらは所詮、机上のものでしかありません。どういったプラットフォームならば実践的にUMLを使用できるかといった実例はまだありません。仮にUMLが理論上完璧なものだとしても、UMLは他の選択肢よりも生産性の高いソフトウェア開発環境でなければなりません。ですが他の選択肢と比べてみて、UMLが生産的だとは……私には思えません。

例えば、振る舞いのロジックを考えてみましょう。コーディングしてしまうより、シーケンス図やアクティビティ図を描くほうが生産的だなんて(ましてどちらかひとつを描くほうがさらに生産的だなんて)ことがあるでしょうか。コーディングがダイアグラムに比べて精密で膨大な量であったとしても、コーディングするほうがまだ生産性は高いと思います。コーディングすることで、実行したいときに実行でき、テストしたいと思ったときにテスト出来るわけですから。

仮にUMLが生産性の高いプログラミング環境だったとしても、有名にならなければ意味がありません。元Smalltalkerの私は、(悲しいかな)最高の言語であっても、必ずしもメインストリームになるわけではないことをよく知っています。

その他の反論は補助的なものですが、やはり説明しておかねばなりません。

  • OMGが標準化を行っているということは、80年代のCASEツールには無かったことですが、どれだけたくさんの人が標準化にこだわり続けるのかを見届けるべきでしょう。唯一、私にいえるのは、どれだけのMDAファンがUMLのことをUnwantedModelingLanguageと考えているかということです。
  • MDAの提案者たちは「プラットフォーム独立」について話していますが、すでに私は「プラットフォーム独立の誤用」として論破しています。
  • パターンの自動生成によって、MDAはソフトウェア開発を簡単にするということを耳にしたことがあります。しかし、UMLで出来ることと優れたライブラリやフレームワークを用いて出来ることの違いが私には分かりません(パターンの自動生成による実装では、パターンの半分も適応されていないということもありますが)。
  • UMLはどうやら「図のほうがテキストよりも良い」という前提に基づいて後押しされているようです。これは間違いではないにせよ、一般的に言える事ではありません。フローチャートと擬似コードを比べたことがあるひとならば、答えは自ずとわかると思います。

色々な意味で、私の考えが間違っていればとは思います。 ソフトウェア開発が抽象レベルまで上がって欲しいのは(UMLの成功が私にとって意義があるわけではありません)やまやまです。ですが、実際にUMLが抽象的なレベルまでジャンプできるかというと……それは分かりません。抽象的なレベルにならないと、MDAは成功しないんですけどね。

面白いことに、OMG標準を使わずにMDAをやりたいというグループが増えてきているようです。OMG標準以外のMDAツールを使ったモデル駆動開発という話もよく耳にします。

MDAに対する思慮深い批判がいくつかあります:

  • Steve CookがMicrosoft’s views on MDAとモデル駆動開発の包括的な話をしています。SteveはイギリスにおけるOO黎明期を支えた人物であり、UMLの中心的な貢献者でもあります。
  • “Bedarra” Dave ThomasがOOPSLAのパネルセッションでMDAへの懐疑論を爆発させていたようです。残念なことにその時のビデオは持っていませんが、以前の彼のjotコラムから論点の核心を垣間見ることが出来ます。

SA:

*Martin Fowler speaks out on MDA

Comment:

*2004-02-19 (木) 11:23:13 ‘’[[名無しさん]]’’ : http://cept.cocolog-nifty.com/ceptfield/2004/02/mda.html