コードのない設計の信頼性が低い

[結] 2006年6月 - 結城浩の日記

ソフトウェアは、私たちの想像よりもずっと複雑より

http://www.hyuki.com/d/200606.html#i20060616093839

"テストのないコードの信頼性が低いように、 コードのない設計の信頼性は低いのではないか。



要するに、人間の能力はそれほど高くない。 「ソフトウェアは、私たちの想像よりもずっと複雑」 なのではないか。わたしはそんなことを考えています。"

 非常に共感できる。コードのない設計のひどさはよくわかる。
 大学の演習でやった、大規模ソフトウェア開発の授業では、たいしたコーディングもできない学生が妄想のごとく必死な設計をみせる。もちろん、実際に行われるコーディングは結構ひどいものがある。それまでは一切コーディングもされないし、テクニカルノートのようなメモもとられないからだと思う。
 問題なのは、ここでは、それは考えないので・・・と黙殺してしまう場面だ。思いついたら、何であったとしても、書きこみ・・・できればコードで試して、設計に生かすことが必要になるやもしれん。どう考えても、コーディングのときにまでその設計上の問題をおいておくのはありえない。


 それにたいして、言及のあった記事。
[鏡] しっぽのさきっちょ 2006年06月 -- Spiegel's Trunk
ソフトウェアは想像よりもずっと簡単より
http://www.baldanders.info/spiegel/log/200606.html#d16_t5

"コンピュータ・ソフトウェアとは, ぶっちゃけて言ってしまえば, 複雑なことを単純なものの組み合わせに置き換える作業である。 設計フェーズで大量のコードを書くのはそのためだ。 コンピュータは(特にノイマン型コンピュータは)単純なことしかできない。 だからそれを使う私達が複雑な問題をコンピュータでも扱える程度の簡単な手順に置き換えてあげなければならないのだ。 だから複雑な問題をより複雑にしてしまうような設計は設計じゃないのである。 この意味をちゃんと理解していないエンジニアや管理職は往々にして自らの首を絞めるような設計をやらかす。 そしてそれに付き合わされる私達は 「バグがとれない―― 設計がまずいから。きちんと設計してから作らないから」 と愚痴をこぼすのである。"

 こちらでは、簡単といっている。
 それは、設計をするものがソフトウェアを難解にするのだと。
 つまりだ。ソフトウェアを設計するのはなかなか難しいから、難解だといっているのと。設計によってソフトウェアが難解になってしまうのであって、本当は簡単であるべきだという話。結局内容は一致しているような感じだと思う。
 この場合は、上からみているか、下からみているかの違いなのかな?よくわかりません。
 複雑なものを簡単なものの組み合わせにっていうのは、共感。やっぱり素敵。でも、やっぱりそれって難しい。そういうデザインてなかなかできない。
 やっぱり、おくが深くて面白いんだよね。