仕様書とは

プログラムはシステムの動作を記述しているモノだとすると、そりゃそのシステムの仕様書だろうなぁと、あるブクマコメントに書いたことをコネコネ考えてたんだけど。

プログラムは他の「仕様書」にはない厳密性とテスト可能性*1を備えた、唯一のモノ。そのモノが「仕様書」通りに出来てるかって言うと、厳密に言えば出来てない。だって、その通りにコーディングすればプログラムが出来上がるような「仕様書」は、既にプログラムだから。そんな「仕様書」はパンチカード時代にはあったかもしれないが、自分が仕事している範囲では見たことない。無意味だし。だから、一般的にプログラムは「仕様書」に書いてあることを満たすように記述し、そして「仕様書」に書いていないことを補足するように記述する。「仕様書」の記述は、動作し、かつユーザが受け入れ得るプログラムの必要条件であり、十分条件ではない。

詳細設計書も要件定義書も、「こういうようなシステム/プログラムを作ってください」という記述があるだけで、何も変わらない。「仕様書」って、要望書のことだったんだ。

*1:テスト可能性って言い換えれば反証可能性とも言えるのかな。