プログラム仕様
ウォーターフォール・モデルなどの古典的開発手法では、以下のようにプログラム仕様を分け、トップダウン的に作成していく。
基本仕様(Basic specification)は、要求仕様に基づいて、機能概要、機能構成、ハードウェア構成、運用の前提条件、性能や品質の要件などを記述する。最近では、要求分析でかなり詳細な要求仕様が作成されるため、基本仕様という形態では文書を作成しないこともある。
機能仕様(Functional specification)は、ソフトウェア開発においてプログラムや大規模なソフトウェアシステムの動作を記述した一連の文書を指す。これら文書は、主にソフトウェアが受け付けるべき入力を列挙し、それら入力に対してそのシステムがどのように動作するかを記述する。
詳細仕様(Detail specification)は、具体的なコードの実装を説明する文書である。技術仕様とも呼ばれる。採用する開発手法によってはソースコードドキュメンテーションとしてソースファイル内に詳細仕様を記述することもある。例えばエクストリーム・プログラミングでは、このような仕様を独立した文書として書くことはない。
以下では機能仕様について解説する。