概要設計・外部設計
マップされていない要件はないか。
未定義の要件に対応する機能部分は明確にされているか。
設計は実現可能か。
新しい機能の説明は正確/完全か。
ハードウェアとソフトウェアの切り分けは明確になっているか。
コンポーネント分割における、処理の局所化、共通化は、妥当か。
ソフトウェアとして実現する機能を網羅しているか。
コンポーネント分割において、処理の局所化、共通化は、妥当か。
各コンポーネントは、詳細設計担当者に割り振れるようなレベルに細分化されているか。
ソフトウェアの動作シナリオ、動作シーケンスは、明確か。
振る舞い設計は、状態遷移モデルなどモデリングの手法を利用して整理されているか。
並行処理、異常処理、性能に考慮して振る舞いを設計しているか。
異常状態が整理され、異常コードや例外コードを割り振っているか。
エラー処理は、設計されているか。
コンポーネント間インタフェースは設計されているか。
共通定数など共通情報が一元化されているか。
排他的処理が必要な共通データのLock/Unlockのタイミングは、明確か。
データベースの正規化レベルは妥当か。
ユーザインタフェースを含む全外部インタフェースが漏れなく設計されているか。
外部とのデータ送受信に関する一覧が作成されているか。
性能要件を満たす設計になっているか。
使用可能なメモリ容量、ネットワーク帯域、ディスク容量の中で、動作可能な設計になっているか。
変更時の影響範囲の特定が容易はあるか。
テストケース、範囲の設定が容易にできるか。
ユーザインタフェースは、オペレータのスキルを考慮したものか。
使用するソフトウェア、ハードウェア等に実績があるか。
未決事項、要検討事項が明確で、その確定は確実であるか。
データデータベースやファイルの仕様
他システム/ソフトウェアとのインタフェース仕様
サブシステム間、コンポーネント間のインタフェース仕様
機能仕様の分割の程度が、内部設計を行える程度に詳細化されているか。
内部設計
『外部設計書』の全ての内容を網羅しているか。
未定義の要件に対応する機能部分は明確にされているか。
設計内容についての説明は正確/完全か。
モジュールが識別され定義されているか。
モジュール毎の処理内容が明確か、また妥当か。
コンポーネントレベルの機能仕様が構造化記述されているか。
共通機能を抽出し、処理内容が明確か。
プログラムのカプセル化や結合度、再利用性、扱うデータの流れに注意して分割されているか。
詳細設計で明確になった条件から、アーキテクチャ設計で明確になった性能/容量の要件が満たされていることを裏付ける資料があるか。
扱うデータは明確か。
プログラム構造と扱うデータが確定し定義されているか。
モジュールは実装、コンパイル、単体テストを実施する最小のレベルに分割されているか。
全てのモジュールについて詳細化しているか。
ハードウェア機能の制御方法、タイミング、設定値を設計したか。
OSシステムコール、ライブラリ関数の機能を設計したか。
処理内容およびロジックは明確か。
例外処理を全て定義したか。
異常処理を全て定義したか。
初期状態を定義したか。
アーキテクチャ設計で定義した全てのコンポーネント間ソフトウェアインタフェース設計を詳細化しているか。
コンポーネント間でやり取りするデータおよび制御は明確か。
コンポーネントの全ての入出力情報のデータ構造、サイズ、初期値、意味を明確に定義しているか。
コンポーネントが参照するデータ、設定するデータのメモリ上の配置を明確に定義しているか。
モジュール間インタフェースの詳細化を行っているか。
単体テストのテストケースを考慮して行っているか。
モジュールの全ての入出力情報のデータ構造、サイズ、初期値、意味を明確に定義しているか。
モジュールが参照するデータ、設定するデータのメモリ上の配置を考慮しているか。
入出力/イベントおよびその関連が明確か。
割込み処理のタイミングを考慮して設計しているか。
使用可能なメモリ容量の中で、動作可能な設計になっているか。
ソフトウェアが共通で使用するデータ領域を検討しメモリ容量を見積もったか。
モジュールごとにコードサイズ、データ領域を検討し、メモリ使用量を見積もったか。
OSやライブラリが使用するメモリ量を見積もったか。
スタック領域、ヒープ容量を見積もったか。
データ構造は明確に定義されているか。
エラー処理は、設計されているか。
とくに例外条件の処理において、論理エラーまたは処理漏れはないか確認したか。
割り込み、排他制御、多重起動、機能間連携の対策を考慮したか。