いい設計書はいいソフトウェアにつながるか

先日お客さんと話しをしていた時にプログラムの品質が悪くてどうにもならないということで、ある会社ではドキュメントをしっかり書くことが大切と言うことになったらしい。そしてプログラムが書ける優秀な技術者を何とか集めて精度の高い設計書を作成するように会社の方針として決めたというお話しを聞きました。

ん〜〜  もう何十年も前からこのフレーズを聴いているけど...うまくいった例をさっぱり聞かないな〜
と思いながらお客さんと何故それがうまくいかないかを話し合った。

私の偏見も入っているが、そのようなことを言う会社はたいてい設計と実装を分けて考えている。

そしてその分ける動機が問題なのだが、たいていの場合その設計書をもとに実装を別の会社で行おうとしている。

つまり、品質の高い設計書を作成しそれを外部の会社に出したら、品質の高いソフトウェアが出来上がるという論法である。

これはもっともな話のように聞こえるが大きく2つの問題を抱えている。

・そもそもそのような精度の高い設計書は実現できない
・ドキュメントがあればソフトウェアが出来上がるという迷信

この二つの大きな考え違いによって役に立たない膨大な設計書を作成し、時間とコストを無駄にしているプロジェクトが非常に多い。

ここで私の言う「設計書」を補足しておくと、ソフトウェアをどのように作るかという、Howの視点で書かれたものを「設計書」と呼んでいる。
もう一つ何をやりたのかを表すWhatの視点で書かれたものを分析ドキュメントなどと呼んでいる。

何回かに渡ってこの設計書の問題を考えてみたい