詳細設計で考えることについて、記載してみました。
詳細設計とは
詳細設計は、システムの開発工程のうち、プログラムの実装をする前に行う工程です。
そして、詳細設計では、プログラムを実装するために、システムの内部構成を検討するフェーズとなります。
そのため、詳細設計では、入力チェックのタイミング、トランザクションやテーブルへのアクセス、想定外の動作に対する処理などの実装方法を検討します。
詳細設計の目的
詳細設計の目的は、システムの要件や仕様を実際のシステムへ落とし込むこととなります。
そのため、詳細設計では、システムの要件や仕様を満たすための実装方法や、テーブル定義などの、実際にシステムを作るために必要な情報を決めるために行います。
そして、詳細設計で決めた内容は、設計書としてアウトプットを行うことで、
以下の役割を持つようになります。
詳細設計で考えること
詳細設計では、実際にシステムを作るために必要となる内容を検討する必要があります。
そして、システムを作るために必要となる情報は、以下の内容となります。
①テーブル定義
テーブルのカラム名や、データ型、桁数などの実際のテーブルの定義をします。
また、カラムごとに登録される値(コードで登録、実際の値を登録等)の検討も行います。
②画面項目
画面に配置される項目ごとに、入力可能桁数、入力されるデータ型、活性・非活性などの検討を行います。
なお、画面イメージについては、通常は、詳細設計より前の工程で決まっています。
③入力チェック
必須項目が未入力である場合や、入力可能桁数を超えている場合などの入力エラーについての検討を行います。
具体的には、入力エラーとなる項目が複数あった場合のエラーの表示方法
(すべてのエラーを表示orエラー項目のうち一番左上の項目のみエラー表示)や、
表示するエラーメッセージ、複数の項目における整合性チェックなどを検討します。
④テーブルへのアクセス
各画面で必要となるデータを取得するための条件および、取得するテーブルについて検討します。
また、テーブルへアクセスするタイミング(ロード時にのみ取得、登録後に再取得等)についても検討します。
⑤データの登録
画面入力情報をテーブルに登録する際の登録方法(登録、更新、削除ご登録など)について検討します。
また、複数テーブルの登録・更新を行う場合は、トランザクションや、テーブルへの登録順序の検討を行います。
WEBシステムのような、複数人が同時アクセスするようなシステムでは、排他制御についての検討も必要になります。
(楽観ロックによる排他制御など)
⑥ビジネスロジック
各画面ごとの必要な機能の実装方法の検討を行います。
また、レアケースの扱いについての検討も必要になります。
⑦異常系
DBエラー、ファイル入出力エラーなどの異常系についての検討を行います。
ユーザーが想定外の処理を行った場合にシステムが異常終了しないような仕組みの検討を行います。
また、万が一想定外のエラーが起きた際にも、
エラー原因の追跡ができるようにエラーログを出力するための仕組みも検討します。
⑧クロスサイトスクリプティング、SQLインジェクション対策など
入力文字のエスケープ文字への変換や、SQLを生成する際は、パラメータを使用するようにするなどの対策を行います。
または、禁則文字として入力不可とするなどの検討を行います。
最後に
詳細設計では、特にレアケースが入力された場合の動作や、入力チェック、入力エラー時の処理、異常系などのユーザーによる想定外の操作を十分に検討する必要があると考えております。
なぜなら、ユーザーによる想定外の操作を十分検討することで想定外の動作や、想定外のエラーによるシステムの異常終了の確立を下げることができるためです。
そして結果として、バグの少ない、高品質なシステムとなると考えています。
システム設計の本をいくつか載せておきますので、興味のある方はぜひ読んでみてください。
設計者に必要なソフトウェアの基礎知識―これだけは知っておきたいソフトウェアの知識と考え方 (実際の設計選書)
- 作者: 藤田和彦,実際の設計研究会
- 出版社/メーカー: 日刊工業新聞社
- 発売日: 2011/11/01
- メディア: 単行本
- この商品を含むブログ (1件) を見る
システム設計の謎を解く 改訂版 強いSEになるための機能設計と入出力設計の極意 (Informatics&IDEA)
- 作者: 高安厚思
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2017/12/16
- メディア: 単行本
- この商品を含むブログを見る
なぜ重大な問題を見逃すのか?間違いだらけの設計レビュー改訂版(日経BP Next ICT選書)
- 作者: 森崎修司
- 出版社/メーカー: 日経BP
- 発売日: 2015/10/06
- メディア: Kindle版
- この商品を含むブログを見る