1.2 仕様書 vs 設計書
1.2.1 What vs How
仕様書と設計書の最大の違いは「What(何を)」と「How(どのように)」の違いである。
| 観点 | 仕様書(Specification) | 設計書(Design) |
|---|---|---|
| 答える問い | 何を作るか?(What) | どう作るか?(How) |
| 記述内容 | システムの振る舞い・機能 | 実現方法・内部構造 |
| 読み手 | 顧客、開発者、QA | 開発者 |
| 作成時期 | 開発前(要件確定後) | 開発前〜開発中 |
| 変更時 | 顧客との再合意が必要 | 開発チーム内で判断可 |
1.2.2 具体例での比較
ECサイトのログイン機能を例に、仕様書と設計書の記述の違いを示す。
仕様書の記述例
・ユーザーはメールアドレスとパスワードでログインできる
・ログイン失敗時はエラーメッセージを表示する
・5回連続失敗でアカウントをロックする
・パスワードリセット機能を提供する
・ユーザーはメールアドレスとパスワードでログインできる
・ログイン失敗時はエラーメッセージを表示する
・5回連続失敗でアカウントをロックする
・パスワードリセット機能を提供する
設計書の記述例
・認証にはJWTトークンを使用(有効期限24時間)
・パスワードはbcryptでハッシュ化(コスト12)
・ログイン試行回数はRedisで管理(TTL 30分)
・パスワードリセットトークンはUUID v4で生成
・認証には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
[1] IEEE 830-1998 Software Requirements Specifications
[2] IEEE 1016-2009 Software Design Descriptions