実装して確認してない仕様が信用できる?

こういう文書をみかけました。

部品としてのコードをいきなり書き始めるのではなく、全体の設計書であるモデルの設計からはじめるべきで、それがOMGがモデル駆動型アーキテクチャを推進する理由だ。
モデル駆動型アーキテクチャは革命などではない

そう、そしてそれが、ぼくがモデル駆動型アーキテクチャをやりたくない理由です。
「モデルの設計から始めるべき」という前提にあるのは、モデル化が可能ということです。
モデル化が不可能と思ってたら、こんなこといいませんよね。
前提として、モデル化が可能というのがあるわけです。


でもね、そこまでのモデル化、不可能ですから。


コードを書くことによって仕様が決まっていくことは、たぶんプログラムを組んだ人なら誰でも経験しているはずです。で、それはあらかじめ仕様を決めておかなかった怠惰によるものではなく、実際にコードを書くことによって決まった仕様だからです。あらかじめ仕様を決めることができなかった部分です。
プログラムというのは、そういうものです。
例えばJavaの仕様として一度も実際のコードで検証されていないものが正式リリースされたら、どんなに完璧なモデルに基づくものだと主張しても、「そんな仕様は使い物にならない」と叫びだすでしょう。
それなら、業務アプリの場合でも仕様を渡されてその通り作れと言われたときに、完全にモデル化されてるから大丈夫とか言われても、それが実際のコードで検証されていなければ「そんな仕様は使い物にならない」と叫んじゃって構わないと思います。


システムは、ところにより構造化がよかったりオブジェクト指向がよかったりERがよかったり直接コード書いた方がよかったりするわけですよ。
使いやすいものを使いやすいように使うべきで、どれがだめでどれがいいってもんじゃないわけです。
入れ子構造を基本にした構造化だったり継承構造を基本にしたオブジェクト指向だったり2次元表を基本にしたERだったり、直で書くのが一番やりやすかったり、それぞれ似てはいるけど全部違うわけです。
諸般の事情により一つのモデルでやる場合には、一つのモデルでは無理をしないといけない部分があることを踏まえておいた方がよいとおもいます。


どんな業務でも、大切なのは人の動きなんですけど、その部分がモデル化不可能なんですね。
語りえぬものです。沈黙すべき。