MDA(モデル駆動型アーキテクチャ)をどう思うか

投稿日:2007年07月09日 作成者:yasunaka

最近ちょっと下火になってきた感はありますが、一時、MDA(モデル駆動型アーキテクチャ)というのが盛んに提唱された時期がありました。これはOMG (Object Management Group)が提唱したソフトウェアの設計手法で、一言で言えば(乱暴ですが)アーキテクチャ非依存のモデルを書いてしまえばどのアーキテクチャにも変換して対応できるようにするよ、という方法です。モデルを書いておまじないをすると、アーラ不思議、システムが自動的にできあがり!ってことです。(いや、もちろんそんなことはないですが)

ここまで聞くとすごいいいもののように聞こえますが、私はこの手の技術には非常に懐疑的です。理由はひとつ。メリットが見えない。そんな回り道をして何が得たいのか?ということです。もっと具体的にいうと、以下のようなことになります。

1.アーキテクチャ中立を叫んでいるが、Javaで実現していること(OSに依存しないプログラミング環境)で十分なのではないか? ということ。

2.モデルを作って枠を自動生成し、それに実装を入れていくという方法は美しいが、それだけでは詳細設計やコーディングの工程が自動化されることはないだろうということ。(そこまで自動化するためには、結局モデル上で一生懸命実装する羽目になる)

3.MDAの仕組み上の制約によってかえって実装が難しくなる場合があること。特にモデルと実装を分離しなければならないがために、簡単にできるはずのことが簡単にはできなくなったりする場合があること。

4.そもそも実装からかけ離れて定義された枠に縛られて、トンでもないプログラミングを強いられるプログラマーがかわいそうだということ。モデルを設計する人の知恵がプログラマーの知恵をいつも上回っていて、モデルの設計結果がいつも完全だ、なんて保障はどこにあるのでしょうか。極めてウォーターフォール的な香りのする発想だと思います。

この手の方法がうまくいかないことは大昔のCASEツールのときの失敗(言い過ぎか?)で明らかだと思うのですが、懲りていないというか、歴史に学ばない人が多いということなのでしょうね。