1.2 仕様書 vs 設計書

1.2.1 What vs How

仕様書と設計書の最大の違いは「What(何を)」と「How(どのように)」の違いである。

観点仕様書(Specification)設計書(Design)
答える問い何を作るか?(What)どう作るか?(How)
記述内容システムの振る舞い・機能実現方法・内部構造
読み手顧客、開発者、QA開発者
作成時期開発前(要件確定後)開発前〜開発中
変更時顧客との再合意が必要開発チーム内で判断可

1.2.2 具体例での比較

ECサイトのログイン機能を例に、仕様書と設計書の記述の違いを示す。

仕様書の記述例
・ユーザーはメールアドレスとパスワードでログインできる
・ログイン失敗時はエラーメッセージを表示する
・5回連続失敗でアカウントをロックする
・パスワードリセット機能を提供する
設計書の記述例
・認証にはJWTトークンを使用(有効期限24時間)
・パスワードはbcryptでハッシュ化(コスト12)
・ログイン試行回数はRedisで管理(TTL 30分)
・パスワードリセットトークンはUUID v4で生成

仕様書は「何ができるか」を記述し、設計書は「どう実現するか」を記述する。

1.2.3 境界が曖昧なケース

実務では仕様と設計の境界が曖昧になることがある。以下のガイドラインで判断する。

判断基準仕様に含める設計に含める
顧客に影響するかはいいいえ
別の実現方法があるかいいえ(唯一の方法)はい(選択肢がある)
技術的詳細かいいえはい
参考資料
[1] IEEE 830-1998 Software Requirements Specifications
[2] IEEE 1016-2009 Software Design Descriptions