システム開発のプロセスを学ぶ中で、「要件定義」「基本設計」「詳細設計」という言葉が登場しますが、それぞれの違いと役割を正確に把握していない方も多いでしょう。
これらは開発プロセスの連続したフェーズであり、前工程の成果物が後工程のインプットとなる密接な関係があります。
本記事では、要件定義・基本設計・詳細設計それぞれの定義・成果物・違い・相互関係について詳しく解説していきます。
SE・プログラマー・プロジェクトマネージャーをはじめ、システム開発に関わるすべての方に役立つ内容をお届けします。
要件定義・基本設計・詳細設計の基本的な定義と違い
それではまず、三つのフェーズの基本的な定義と違いについて解説していきます。
それぞれのフェーズは「何を決める工程か」という観点で明確に区別できます。
要件定義の定義と成果物
要件定義は「システムが何をすべきか(WHAT)」を定義するフェーズです。
発注者のビジネス課題・ニーズを具体的なシステム要件として整理し、機能要件・非機能要件を明確に定義します。
要件定義の成果物は「要件定義書」であり、機能一覧・業務フロー・非機能要件・システム境界などが記載されます。このドキュメントが後続のすべての設計工程の基準となります。
基本設計の定義と成果物
基本設計(外部設計)は「要件定義で定義した要件をどのように実現するか(HOW)」をシステムの外側から設計するフェーズです。
ユーザーがシステムを通じて見る・触れる部分(画面設計・帳票設計・インターフェース設計・データベース概念設計など)を定義します。
基本設計の成果物としては画面設計書・テーブル定義書(概念レベル)・インターフェース定義書・システム方式設計書などがあります。
詳細設計の定義と成果物
詳細設計(内部設計)は基本設計で定義した「外側の仕様」をプログラムとして実装するために必要な「内側の仕様」を定義するフェーズです。
クラス設計・モジュール設計・アルゴリズム設計・データベース物理設計・エラー処理の詳細などプログラマーが実装に必要なすべての仕様を記述します。
要件定義:「受注データを検索できること」(何を実現するか)
基本設計:「受注検索画面の画面レイアウト・検索条件・表示項目の設計」(外から見た仕様)
詳細設計:「受注検索の処理ロジック・SQL・エラー時の動作の設計」(内部の実装仕様)
要件定義と基本設計の関係と違いの詳細
続いては、要件定義と基本設計の関係と違いを詳しく確認していきます。
両者の最大の違いは「要件定義が発注者視点」「基本設計が開発者視点(ただし外側)」という観点にあります。
要件定義と基本設計の担当者の違い
要件定義は発注者(ユーザー企業)とITコンサルタント・上流SEが共同で進めることが多く、ビジネス的な視点が強く求められます。
基本設計はプロジェクトのSE(システムエンジニア)が主体となって進め、要件定義で定義された要件をシステムとして実現するための設計判断を行います。
要件定義と基本設計の境界は「発注者の承認が必要な範囲」とも言い換えられ、基本設計以降は技術的な判断が中心となり発注者の関与が薄くなる傾向があります。
要件定義から基本設計への移行における注意点
要件定義から基本設計に移行する際は、要件定義の内容が十分に固まっていることを確認することが非常に重要です。
曖昧な要件が残ったまま基本設計に進むと、設計段階で要件の解釈が分かれて手戻りが発生したり、要件定義書の改訂が頻発してプロジェクトが遅延したりするリスクがあります。
要件定義書に対する発注者の正式承認を取得してから基本設計を開始することが、プロジェクト管理の基本的なルールといえるでしょう。
各工程の成果物の対応関係
| 工程 | 主な成果物 | 主な担当者 |
|---|---|---|
| 要件定義 | 要件定義書・業務フロー図 | 発注者・コンサルタント・上流SE |
| 基本設計 | 画面設計書・テーブル定義書・IF定義書 | SE(システムエンジニア) |
| 詳細設計 | プログラム設計書・クラス図・ER図 | SE・PG(プログラマー) |
| 実装 | ソースコード | プログラマー |
| テスト | テスト計画書・テスト結果報告書 | SE・テスター |
詳細設計と基本設計の関係および各工程のテストとの対応
続いては、詳細設計と基本設計の関係および各設計工程とテスト工程の対応を確認していきます。
V字モデルと呼ばれる開発モデルでは、各設計工程に対応するテスト工程が存在します。
V字モデルにおける設計とテストの対応
V字モデルはウォーターフォール開発の工程を視覚的に表したモデルであり、左側の設計工程と右側のテスト工程が対応する形で表現されます。
要件定義 ↔ 受け入れテスト(ユーザー受け入れテスト)
基本設計 ↔ システムテスト(結合テスト)
詳細設計 ↔ 単体テスト(コンポーネントテスト)
V字モデルでは各設計工程の成果物がそのまま対応するテスト工程のテスト基準として使われるため、設計書の品質がテストの質を直接左右します。
設計工程における品質管理の重要性
要件定義・基本設計・詳細設計の各工程において、設計レビューを実施して品質を確認することが非常に重要です。
各工程の完了時に設計書のレビューを行い、矛盾・漏れ・誤りを早期に発見することで、後工程でのバグ・手戻りコストを大幅に削減できます。
設計品質への投資はテスト・修正コストの削減という形で後工程に大きなリターンをもたらすでしょう。
アジャイル開発での設計工程の考え方
アジャイル開発では要件定義・基本設計・詳細設計という明確なフェーズ区分は存在しませんが、各スプリントの中でミニ版の設計作業が繰り返し行われます。
ジャストインタイム設計(必要になったときに設計する)の考え方が基本であり、過度な事前設計よりも変化への対応を優先するのがアジャイルの特性です。
ただし大規模・高品質が求められるシステムではアジャイルであっても一定の設計工程を設けることが現実的な対応となるでしょう。
まとめ
本記事では、要件定義・基本設計・詳細設計の定義・違い・相互関係・V字モデルとの対応について解説してきました。
要件定義は「何を作るか」を定義し、基本設計は「外側をどう作るか」を定義し、詳細設計は「内側をどう作るか」を定義するという階層的な関係にあります。
各工程の成果物が次工程のインプットとなる連続したプロセスを正しく理解し、各フェーズで適切な品質の成果物を作ることが、システム開発プロジェクト成功の根本的な条件となります。
開発の上流工程への理解を深めることで、プロジェクト全体の品質と効率が大幅に向上するでしょう。