仕様書はシステムにおいて最重要とも言えるドキュメントです。発注者からの要望をまとめ、コンピュータで実現するためのプログラムの土台となるものです。仕様書には扱うデータ、データの処理方法、エラー時の対応方法などが事細かく書かれます。全体像が分からずとも作れる理由はここにあります。
システムは複雑に絡み合ったモジュールでできていることが多いですが、各モジュール間の関係性は薄ければ薄いほどよいと言われています。これは疎結合とも呼ばれ、他のモジュールに影響を受けやすいモジュールだと開発も大変になりますし、障害時にも切り分けが難しくなります。仕様書は他のモジュールとは関係なく、データのやり取りのみ、もしくは単独で動くまで小さくした上で設計されます。システムが巨大でもプログラマ一人あたりの開発数を出来る限り小さくすることが目標とされています。
小さな塊はモジュールと言われますが、仕様書を見た段階で不具合に気づく場合も少なくありません。この場合、プログラマは不備を指摘しますが、合わせて修正案も提示が求められることがありますが、疎結合のために修正してもデータの入出力に問題がなければ採用されることがお多いようです。仕様が疎結合でなく、他のモジュールと関係性が強い場合にはプログラマの段階では修正ができないことも多いのですが、仕様書としてはあまり良くない状態と言われることが多いようです。この場合は修正に時間がかかることになります