Requirementsの外部性

Requirements(要求)はソフトウェアの外にある——ステークホルダーが世界に対して望む状態・結果であり、ソフトウェアの性質ではない。

核心

Requirements は「商品を検索できる」「月末に請求書が発行される」といった、環境(世界)に対する期待だ。ソフトウェアはその期待を実現する手段にすぎない。

この区別は Zave-Jacksonの枠組み の中核的な洞察であり、S ∧ D ⊨ R という定式化において R(Requirements)が S(Specification)とは明確に分離されている。

なぜこの区別が重要か

「仕様」という言葉が Requirements と Specification(Contract)の両方を指してしまうことで、以下の混乱が生じる:

開発プロセスとの関係

開発プロセスでは Requirements → Contract → Implementation の順で考えるが、これは思考の順序であって因果の方向ではない。因果は逆向きで、Implementation が Contract を実現し、Contract が(Domain Knowledge と合わさって)Requirements を達成する。

関連