ソースコードだけではダメです

http://d.hatena.ne.jp/sakuneko/20060415#p1

せっかくTBもらったんで、フォローしときます。
車にしろ家にしろ、最終的な設計図面を作る前に、外観のイメージ図を書いたり、間取り図を書いたりします。設計というのは非常に創造的な作業なので、高い抽象度のスケッチを繰り返し、イメージを固めていきます。
ソフトウェアでも同じで、仕様設計で仕様書を書く以外にも、ソースコードじゃないドキュメントを書きます。プログラムをどうモジュール分けするかとか、モジュールがどう相互作用して機能を実現するかとか、どういうアルゴリズムで攻めるかとか、初期段階で紙の上にスケッチしながら考えます。イメージが固まったら、最終的なスケッチを捨てずに残しておくなり、電子書類として書き直したりすると、そのイメージを他の人と共有するのに役立ちます。

私が「ソースコードが設計書」と言っていたのは、コーディングは最終的な設計作業なのに、製造作業だと勘違いしている人がいるから。ソースコードが最終的な、完全な設計書であり、それ以外の設計書はただのイメージ図程度でしかありません。
「家は図面と見比べたら正しく製造できているか判るのに、ソフトウェアは(ソースコード以外の)設計書とソースコードを見比べても正しく製造できているのか判らない」のは当たり前なのです。本当に正しく製造できているかどうかをチェックしたいなら、実行ファイルをバイナリエディタで見て、ソースコードがどういうバイナリに変換されているか確認したらいいのです。

このブログに乗せているコードは引用を除き CC0 1.0 で提供します。