どこまでが設計か

まず、建築における設計図に当たるものは、ソフトウェアにおいてはソースコードに他ならない。日本語で詳細な設計を書くなんて論外。電気屋さんが回路設計の設計書を日本語じゃなくて回路図で書くように、設計には設計対象を詳細に表せるための表記法があって、ソフトウェアにおいてはそれはソースコードになる。コレを理解していないのは、実際にソフトウェア開発を行った事が無い「ソフトウェア工学専門家」が書いた教科書を読んで管理者になったバカくらい。

じゃぁ、いわゆる上流の人がやっている設計ってなんなんだろう?それは仕様設計だ。家の設計で言ったら、「こんな家がいいね」ていうスケッチをお客様と相談しながら書くのが仕様設計で、それを元に図面を書いていくのが詳細設計。

で、家のデザインをする人がユーザービリティや外観に影響が少ない部分までは見ないのと同じで、プログラマは上流の設計者から漏れの無い仕様書が出てくるとは思ってはいけない。出てくるのは「こんなんがいいなー」っていう程度のものだ。プログラマの仕事は、この仕様設計を完成させる事から始まる。

http://www.atmarkit.co.jp/fdotnet/nagilemind/nagilemind01/nagilemind01_01.html
↑で、ソースコードがわかりやすければ別のドキュメントは要らないっぽく書いているけど、ソースコードは詳細設計書であって仕様書にはなり得ない。ソースコードに何が書いてあっても、それが正しいかどうかは仕様書が無いと判らないからね。プログラマは設計書を書くよりも設計書が無くても判るようなソースコードを書かないといけない。けど、仕様書はプログラマ以外が読んでも判るように、かつ漏れができるだけ少ないように書かなければならない。

日本語の設計書通りに実装しているのが正しいプログラムではなく、仕様書どおりに動くプログラムが正しいプログラムである。

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