システム開発

初心者向け、詳細設計書の書き方を解説

プログラミング初心者の方は詳細設計書の書き方が全くわからないと思います。
かく言う私も新卒入社して半年ほど経った頃、いきなり詳細設計書を新規に作成しろと言われ、
訳もわからず作成した設計書を上司からぼろぼろに言われ、泣きながら帰っていました。
そこで今回は詳細設計書の書き方を解説します。
これさえ抑えておけば、どんな機能を作るとしても的を外さない詳細設計書が書くことができます。

詳細設計書は大きく3つの構成に分けられる。
①入力パラメータを受け取る処理や入力チェックを行うINPUT処理
②データ取得やデータ更新を行うメイン処理
③パラメータ返却用に編集し、設定を行うOUTPUT処理

まずは作成する機能の基本設計書を確認する。
会社によって基本設計書の種類は様々だが、大体が以下の設計書が作成される。
 ・処理概要
 ・画面仕様書
 ・テーブル定義書

 処理概要はその機能のおおまかな処理の流れ、どういった機能で、何がしたいのかを記載している。
 処理の流れは以下の通りで、今回の詳細設計書では、MAIN処理の設計書作成方法を解説する。

 ■処理概要
  顧客識別番号を入力することで、顧客情報と取引情報を表示させる機能を作成する。

 画面仕様書は画面のレイアウトを記載したり、細かな処理(例えばこのボタンを押せばメニューが表示されるなど)を記載する。
 画面仕様書はHTML形式で簡単に作成し、設計書に貼り付けるなどを行うが、今回は画面イメージは割愛し、以下の項目を定義する。
 ■画面仕様書

入力画面

表示項目:・顧客識別番号(入力形式)
     ・実行ボタン(ボタン形式)

完了画面

表示項目:・顧客識別番号
     ・顧客名
     ・電話番号
     ・住所
     ・メールアドレス      
     【取引1〜取引N】※
      ・取引番号
      ・商品名
      ・値段
      ・取引日時
     ※取引情報が取得できない場合、「データなし」を表示する。

 テーブル定義書は、データを登録するための構造を記載している。
 今回は以下のように記載する。




詳細設計書を作る上で最も重要な処理で、これを押さえることで詳細設計書の8割は完成しているといっても過言ではない。

この処理の入り口ではどんなデータが送られてくるのかを決めましょう。
基本設計書を確認すると、画面仕様書では「顧客識別番号」のみ記載されているので、INPUTは「顧客識別番号」
型は何か?(文字は含まれるのか?数値なのか?数字なのか?)
基本的には画面仕様書に記載されているはずで、記載されていなければ確認しましょう。
また、数字の場合、1が設定される場合は「00001」のように0埋めされた固定長の文字列がくるのか、はたまた「1」だけの数値がくるのかを確認する。
今回は以下のように定義しました。

次に、この処理は何を返却するのかを決めましょう。
MAIN処理の返却先となる完了画面に表示するのは、画面仕様書に記載されている項目のため、それらをMAIN処理のOUTPUTに記載する。
また、画面上には表示しないが、隠し項目(hidden項目)として画面上に持っておく値等もあるため、注意。
また、画面表示する際のフォーマットに指定があり、MAIN処理でそのフォーマットに編集する場合はここで記載しましょう。
今回は以下のように定義しました。


NPUT/OUTPUTが決まったら次はデータ取得処理を書きましょう。
後続の入力チェック処理から記載しても良いと思うが、データ取得処理から書くと、どういったチェック処理を書けばいいかわかりやすい。
今回登場するテーブルは顧客情報テーブルと取引情報テーブルの2つ存在するが、
1回のデータ取得で顧客情報と取引情報、両方のデータを取得する方法と、顧客情報と取引情報それぞれ分けてデータ取得する方法の2通りの方法が検討できる。
どっちが正しいかは、その時々やプロジェクトの方針によって様々であるが、今回は説明がしやすいという理由から後者の設計を採用する。


データが取得できない場合を考慮し、取得件数が0件の場合はエラーとする。


ポイントは、データは複数件取れる可能性があるため、リスト形式でデータを設定する。
ループ分を使ってデータ設定する場合は、その旨を記載すること。
取引情報が0件の場合は、画面仕様書には「データなし」を表示すると記載があるため、エラーとはせず、空文字を設定し、完了画面の処理にて、それを表示するようにする。

最後に入力チェックを記載します。
INPUTの項目は顧客識別情報のみのため、その項目の入力チェックを記載する。
入力チェックは様々あるが、大体が以下の通りです。

・必須入力チェック
・形式チェック
・桁数チェック
・整合性チェック

その項目が処理上必ず値が入っていないといけない場合、このチェックを行う。
今回の顧客識別番号は、データ取得時の条件に設定する必要があり、これがないとデータ取得ができないので、必須チェックは必要。

その項目が文字列型の場合、記号は含まれていいのか、半角文字は含まれていいのか、といったチェックを行う。
今回の顧客識別番号は数値型であるが、マイナス値や0が入ってくる必要がないため、その点のチェックを行う。

桁数チェックは、その項目でデータ更新を行う時などに必要となる。
例えばテーブルの項目の桁数が10に対して、入力項目の桁数が20の場合、桁溢れのエラーが発生してしまうため、それを防ぐためのチェック処理を設ける。
今回の場合、データ更新を行わないため、特段のチェックは不要。

定められた区分値通りの値が設定されているかといったチェックを行う。
例えば1:服 2:机 3:パソコンというふうに区分値を定義している場合、0や4といった値は不正な値としてエラーにする必要がある。
今回の場合、区分値は定義していないため、特段のチェックは不要。

これらの処理をまとめると以下のような設計書になる。



詳細設計書のおおまかな書き方を解説しましたが、変数の初期値やデータ取得後のチェック処理など、詳細設計書に必要な処理が多くあります。ただ、この概要だけを抑えておけば、大きな手戻りが発生することもなく、わかっている人の詳細設計書を作ることができます
細かな点はプロジェクトごとに変わるため、それぞれに合わせた詳細設計書を作りましょう。