詳細設計(内部設計)とは、システム開発において基本設計(外部設計)で決定した「何を作るか」をベースに、プログラマーが迷わずコードを書けるよう「どのように実装するか」という具体的な処理手順や内部構造を定義する工程です。 [1, 2]
プログラマーへの具体的な「指示書」としての役割を持ち、専門的な技術用語や図表を用いて作成されます。 [1, 2]
🏛️ 開発工程における位置づけ
ウォーターフォール開発では、最上流の要件定義から順に噛み砕いていき、実装(コーディング)の直前に行われます。 [1, 3]
要件定義 ──> 基本設計 ──> 【詳細設計】 ──> 実装(プログラミング) ──> テスト
🔁 基本設計(外部設計)との違い
システム開発の設計は、大きく「基本設計」と「詳細設計」の2つに分かれます。 [4]
| 比較項目 [2, 4, 5] | 基本設計(外部設計) | 詳細設計(内部設計) |
|---|---|---|
| 設計の視点 | ユーザー・発注者目線(What) | 開発者・プログラマー目線(How) |
| 主な対象者 | 発注者、業務担当者 | 開発エンジニア、プログラマー |
| 設計の範囲 | 画面の見た目、機能一覧、操作方法 | プログラムの内部ロジック、データ構造 |
| 主な成果物 | 画面設計書、業務フロー図 | クラス図、シーケンス図、フローチャート |
📄 詳細設計で作成される主な成果物(ドキュメント)
実際にプログラミングを行うために、以下のような図表(主にUMLなど)や定義書を作成します。 [4, 5]
- クラス図:システムを構成するプログラムの部品(クラス)の構造や関係性を可視化した図。
- シーケンス図:プログラムやオブジェクト間の処理のやり取りを、時系列に沿って表現した図。
- 処理フロー図(アクティビティ図):条件分岐や繰り返しなど、具体的な処理アルゴリズムの流れを記述した図。
- データベース物理設計書:論理データを実際のデータベース(SQLなど)に格納するためのテーブル定義やインデックス設定。
- 入出力・API仕様書:プログラム間で受け渡すパラメータや、エラーコードの定義。 [1, 2, 4, 5, 6]
⚠️ 実務における重要なポイント
詳細設計の品質は、開発コストやバグの量に直結します。以下の点に注意して進められます。 [2]
- 開発者視点で徹底的に具体化する
「なんとなく」の仕様を残さず、正常な処理だけでなく例外・エラー処理(データ未入力時や通信エラー時など)まで厳密に定義します。 [2, 5] - ソースコードの「日本語訳」にしない
if文や変数名を事細かに書きすぎると、プログラムを少し直しただけで設計書の大幅な修正(メンテナンスコストの肥大化)が発生するため、実装の方針とロジックの流れを記述する粒度が理想です。 [7] - 要件定義との整合性(トレーサビリティ)を保つ
細かいロジックに集中するあまり、当初の目的や顧客の要求からズレてしまう「先走り」を防ぐため、常に前工程の設計と紐付けながら作成します。 [1, 5]
詳細設計について、さらに具体的な設計書の書き方やUML図の種類、あるいは発注者側がチェックすべきポイントなど、どの深さの情報が必要ですか?ご状況に合わせて詳しくお答えできます。 [2, 5]
