PR

詳細設計とは?目的と決めることをわかりやすく解説

システム
スポンサーリンク

はじめに

基本設計で注文履歴の表示項目や検索機能を決めても、実装に必要な判断がすべて終わったわけではありません。

入力された検索条件をどこで確認するのか、どの処理が注文情報を取得するのか、取得したデータをどのような形式で画面へ返すのかを決める必要があります。これらを決めずに実装を始めると、担当者によって処理の分け方やエラーへの対応が異なってしまいます。

こうした実装上の判断を、プログラムを作り始める前に整理する必要があります。

この記事で分かること

  • 詳細設計の目的
  • 詳細設計で決めること
  • 基本設計との違い
  • 詳細設計をどこまで行えばよいか

詳細設計とは

詳細設計とは、基本設計で決めた仕様を、実装に必要な内部構造や処理へ具体化する工程です。

基本設計では、利用者や他システムから見た仕様を決めます。詳細設計では、その仕様をどの処理が担当し、どのようなデータを受け渡し、どの条件で処理を分けるのかを決めます。

詳細設計の目的は、機能の実現方法に影響する主要な判断を共有し、担当者が変わっても同じ前提で実装、レビュー、テストを進められる状態にすることです。

詳細設計では何を決めるのか

詳細設計で決める内容は、大きく三つに整理できます。

処理をどのように分けるか

一つの機能は、役割の異なる複数の処理によって実現されます。

注文履歴を表示する機能であれば、検索条件を受け取る処理、入力内容を確認する処理、注文情報を取得する処理、画面へ返す情報を作る処理などが必要です。

詳細設計では、これらの処理をどの単位に分け、それぞれにどの役割を持たせるのかを決めます。必要に応じて、プログラムを構成するモジュール、クラス、メソッドなどの役割も整理します。

ここで決めるのは、機能を実現する処理の構成と、それぞれの責任範囲です。

データをどう受け取り、どこへ渡すか

処理の役割を分けたら、各処理がどのデータを受け取り、何を返すのかを決めます。

注文履歴であれば、認証された利用者のID、検索期間、商品名などを入力として受け取ります。その条件を使って注文情報や商品情報を取得し、注文日、商品名、個数、金額などの表示用データへ変換します。

詳細設計では、入力と出力、データを取得・更新する方法、処理間で受け渡すデータの形式などを具体化します。

ここで決めるのは、機能の内部をデータがどのように流れるのかです。

異常時や境界条件をどう扱うか

システムの処理は、常に同じ結果になるわけではありません。

例えば、検索期間が許可された範囲を超えている場合、注文履歴が存在しない場合、データの取得に失敗した場合では、それぞれ異なる対応が必要です。

検索結果が0件であることと、データを取得できなかったことを同じ結果として扱うと、利用者も運用担当者も状況を判断できません。

詳細設計では、入力値の不正、対象データの有無、処理の失敗、期間や件数の境界などを整理します。そのうえで、処理を継続するのか、結果を返すのか、エラーとして扱うのか、記録を残すのかを決めます。

基本設計を詳細設計するとどう変わるのか

基本設計では、注文履歴機能を次のように定義していたとします。

ログインした利用者は、自分の過去3年分の注文履歴を確認できる。一覧には商品名、個数、注文日、金額を表示し、日付や商品名で検索できる。

履歴がない場合はその旨を表示し、情報の取得に失敗した場合はエラーを表示する。他の利用者の注文履歴は閲覧できないようにする。

詳細設計では、この仕様を実現するために必要な内部の判断を具体化します。

基本設計で決めた仕様詳細設計で具体化する内容
ログインした利用者が自分の履歴を確認できる認証情報から利用者IDを取得し、注文情報の取得条件に必ず含める
過去3年分を確認できる検索開始日と終了日を受け取り、許可された期間内か確認する
日付や商品名で検索できる受け取る検索条件、未入力を許可する条件、データ取得時の検索条件を決める
商品名、個数、注文日、金額を表示する各情報の取得元と、画面へ返すデータの形式を決める
履歴がない場合はその旨を表示する取得件数が0件の場合に、正常な検索結果として0件を返す
情報の取得に失敗した場合はエラーを表示する取得処理の失敗を0件と区別し、エラーとして記録して画面へ返す

詳細設計では、新しい機能を追加しているわけではありません。

基本設計で決めた一つひとつの仕様に対して、どの処理と条件によって実現するのかを対応付けています。

基本設計と詳細設計の違い

基本設計と詳細設計では、判断する対象の粒度が異なります。

観点基本設計詳細設計
主な問い何を作るかどう作るか
主な対象画面、機能、データ、外部連携、権限、性能条件処理の分担、入出力、データの流れ、分岐条件、エラー時の処理
外部から見える内容利用者や他システムから見た仕様原則として見えない内部の実現方法
次工程へ渡す内容システムが満たすべき仕様実装と単体テストの基準となる設計

基本設計と詳細設計の名称や境界は、組織や開発方法によって異なります。

重要なのは工程名ではなく、利用者から見た仕様を決める段階と、その仕様を内部の処理へ具体化する段階を区別することです。

詳細設計はどこまで行えばよいのか

詳細設計では、細かく書くほどよいわけではありません。変数名や一行ごとの処理まで記載すると、コードを変更するたびに設計書も修正する必要があり、両者が一致しなくなる原因になります。

残すべきなのは、処理の役割、データの受け渡し、重要な判断条件、エラー時の方針など、実装方法に影響する判断です。

詳細設計が十分かどうかは、次の状態になっているかで確認できます。

  • 別の担当者が、基本設計の仕様を変えずに実装を進められる
  • レビューする人が、基本設計と内部処理の対応を確認できる
  • 正常時、異常時、境界値について、単体テストで確認する内容を判断できる

詳細設計中に基本設計の不足や矛盾が見つかった場合は、詳細設計側だけで仕様を変更してはいけません。基本設計へ戻り、どの仕様を修正するのかを確認します。

詳細設計は基本設計とは異なる仕様を作る工程ではなく、基本設計を実現する方法を決める工程です。

まとめ

詳細設計とは、基本設計で決めた仕様を、実装できる内部の処理へ具体化する工程です。

処理の分担、データの受け渡し、異常時や境界条件の扱いなどを決めます。基本設計が「何を作るか」を決めるのに対し、詳細設計は「どう作るか」を決めます。

ただし、コードと同じ内容を細かく文書化することが目的ではありません。実装、レビュー、テストに必要な判断を共有し、基本設計との対応を確認できる状態にすることが重要です。

関連記事


コメント

タイトルとURLをコピーしました