詳細設計で考えること

詳細設計で考えることについて、記載してみました。

詳細設計とは

詳細設計は、システムの開発工程のうち、プログラムの実装をする前に行う工程です。
そして、詳細設計では、プログラムを実装するために、システムの内部構成を検討するフェーズとなります。

そのため、詳細設計では、入力チェックのタイミング、トランザクションやテーブルへのアクセス、想定外の動作に対する処理などの実装方法を検討します。

詳細設計の目的

詳細設計の目的は、システムの要件や仕様を実際のシステムへ落とし込むこととなります。
そのため、詳細設計では、システムの要件や仕様を満たすための実装方法や、テーブル定義などの、実際にシステムを作るために必要な情報を決めるために行います。

そして、詳細設計で決めた内容は、設計書としてアウトプットを行うことで、
以下の役割を持つようになります。

  1. プログラマーがシステムの要件や仕様の実装を行うためのインプット資料
  2. 単体テストを行うためのインプット資料
  3. システム保守を行う際の参考資料

詳細設計で考えること

詳細設計では、実際にシステムを作るために必要となる内容を検討する必要があります。
そして、システムを作るために必要となる情報は、以下の内容となります。

①テーブル定義
テーブルのカラム名や、データ型、桁数などの実際のテーブルの定義をします。
また、カラムごとに登録される値(コードで登録、実際の値を登録等)の検討も行います。

②画面項目
画面に配置される項目ごとに、入力可能桁数、入力されるデータ型、活性・非活性などの検討を行います。

なお、画面イメージについては、通常は、詳細設計より前の工程で決まっています。

③入力チェック
必須項目が未入力である場合や、入力可能桁数を超えている場合などの入力エラーについての検討を行います。
具体的には、入力エラーとなる項目が複数あった場合のエラーの表示方法
(すべてのエラーを表示orエラー項目のうち一番左上の項目のみエラー表示)や、
表示するエラーメッセージ、複数の項目における整合性チェックなどを検討します。

④テーブルへのアクセス
各画面で必要となるデータを取得するための条件および、取得するテーブルについて検討します。
また、テーブルへアクセスするタイミング(ロード時にのみ取得、登録後に再取得等)についても検討します。

⑤データの登録
画面入力情報をテーブルに登録する際の登録方法(登録、更新、削除ご登録など)について検討します。
また、複数テーブルの登録・更新を行う場合は、トランザクションや、テーブルへの登録順序の検討を行います。

WEBシステムのような、複数人が同時アクセスするようなシステムでは、排他制御についての検討も必要になります。
(楽観ロックによる排他制御など)

ビジネスロジック
各画面ごとの必要な機能の実装方法の検討を行います。
また、レアケースの扱いについての検討も必要になります。

⑦異常系
DBエラー、ファイル入出力エラーなどの異常系についての検討を行います。
ユーザーが想定外の処理を行った場合にシステムが異常終了しないような仕組みの検討を行います。

また、万が一想定外のエラーが起きた際にも、
エラー原因の追跡ができるようにエラーログを出力するための仕組みも検討します。

クロスサイトスクリプティングSQLインジェクション対策など
入力文字のエスケープ文字への変換や、SQLを生成する際は、パラメータを使用するようにするなどの対策を行います。
または、禁則文字として入力不可とするなどの検討を行います。

最後に

詳細設計では、特にレアケースが入力された場合の動作や、入力チェック、入力エラー時の処理、異常系などのユーザーによる想定外の操作を十分に検討する必要があると考えております。
なぜなら、ユーザーによる想定外の操作を十分検討することで想定外の動作や、想定外のエラーによるシステムの異常終了の確立を下げることができるためです。

そして結果として、バグの少ない、高品質なシステムとなると考えています。

システム設計の本をいくつか載せておきますので、興味のある方はぜひ読んでみてください。

アプリの開発も行っています

①概算家計簿
家計簿を毎日つけれれないあなたのための家計簿アプリです。
f:id:b-kimagure:20190722205238p:plain:w120
Google Play で手に入れよう

②ToDoボタン
忙しくてついつい放置してしまう家事
そんな家事の最後にやった日を記録するアプリです。
f:id:b-kimagure:20190805230012p:plain:w120
Google Play で手に入れよう