目次

  1. 基本設計とは
  2. 進め方の原則
  3. 主な成果物と記載のポイント
  4. 設計書の書き方
  5. レビューのポイント
  6. よくある失敗と対策
  7. アジャイル・近年の開発での考え方
  8. まとめ

1. 基本設計とは

基本設計(外部設計)は、要件定義で決めた「何を実現するか」を、システムとして「どう見え、どう振る舞うか」 に落とし込む工程です。

工程主な問い主な読み手
要件定義何を実現するか(What)発注者・業務部門
基本設計利用者・外部から見てどう動くか発注者・開発者の両方
詳細設計内部でどう作るか(How)開発者

ポイント: 基本設計書は「発注者が合意できる」ことと「開発者が詳細設計に進める」ことの両方を満たす必要がある。どちらか一方に寄りすぎないこと。


2. 進め方の原則

2.1 要件とのトレーサビリティを確保する

  • すべての設計項目に、対応する要件IDを紐づける(要件ID ⇔ 機能ID ⇔ 画面ID)
  • トレーサビリティマトリクスを作り、要件の漏れと要件にない機能(過剰設計) の両方を検出する
  • 要件が曖昧なまま設計を進めない。曖昧な点は「確認事項一覧」に起票し、期限と担当者を決める

2.2 全体から部分へ(トップダウン)

  1. システム全体構成・方式設計
  2. 機能一覧・業務フロー
  3. 画面・帳票・外部IF・データ
  4. 非機能・運用

いきなり画面レイアウトから入ると、機能の重複・抜けや整合性の崩れが起きやすい。

2.3 早く見せて早く合意する

  • 画面はモックアップやプロトタイプで早期に見せる(文章だけのレビューは認識齟齬の温床)
  • 成果物を一括で出さず、領域ごとに段階的にレビューする
  • 合意事項は議事録に残し、設計書に反映した版数を明記する

2.4 「決めたこと」と「決めていないこと」を明確にする

  • 未決事項・前提条件・制約条件を設計書内に明示する
  • 「TBD」は放置しない。いつまでに誰が決めるかをセットで書く

3. 主な成果物と記載のポイント

3.1 システム方式設計(アーキテクチャ)

  • システム構成図(サーバ、ネットワーク、外部システム、クラウドサービス)
  • 採用技術(言語、フレームワーク、DB、ミドルウェア)と選定理由
  • 処理方式(オンライン/バッチ/非同期、同期・非同期連携の使い分け)
  • 認証・認可方式、セッション管理方式
  • 共通方針(ログ出力、エラーハンドリング、トランザクション境界、文字コード、日時・タイムゾーン)

選定理由を書いておくと、後から「なぜこうなっているのか」で揉めない。ADR(Architecture Decision Record)形式での記録も有効。

3.2 機能設計

  • 機能一覧(機能ID、機能名、概要、対応要件ID、利用者)
  • 業務フロー図/システム化業務フロー(人の作業とシステム処理の境界を明確に)
  • 機能ごとの入力・処理概要・出力
  • 業務ルール・計算ロジック・状態遷移(ステータスの遷移図は特に重要)

3.3 画面設計

  • 画面一覧・画面遷移図
  • 画面レイアウト(ワイヤーフレーム)
  • 項目定義:項目名、型、桁数、必須/任意、初期値、入力チェック、表示形式
  • イベント定義:ボタン押下時の動作、エラー時の挙動
  • 権限による表示・操作制御
  • 共通UI規約(メッセージ表示位置、ボタン配置、日付形式、確認ダイアログの基準)

よくある漏れ: 0件時の表示、エラー時の入力値保持、二重送信防止、ページング・ソート、ブラウザバック時の挙動、長い文字列の表示崩れ

3.4 帳票設計

  • 帳票一覧、レイアウト、項目定義
  • 出力契機(オンライン/バッチ)、出力形式(PDF、CSV、Excel)
  • 改ページ条件、合計・小計の算出ルール、ソート順

3.5 外部インターフェース設計

  • 連携先一覧と連携方式(API、ファイル、DB連携、メッセージキュー)
  • データ項目定義、フォーマット、文字コード、改行コード
  • 連携タイミング・頻度、データ量
  • 異常系:タイムアウト、リトライ方針、冪等性、障害時の再送・リカバリ手順
  • 責任分界点(どこまでが自システムの責任か)

外部IFは相手先との調整に時間がかかるため、最優先で着手する。

3.6 データ設計

  • 概念/論理データモデル(ER図)
  • エンティティ一覧、主要項目、主キー・リレーション
  • コード定義(区分値の一覧と意味)
  • データ保持期間、削除・アーカイブ方針
  • 個人情報・機密情報の識別と取り扱い(暗号化・マスキング対象)

3.7 メッセージ設計

  • メッセージID、種別(情報/警告/エラー)、文言
  • 利用者が次に何をすればよいか分かる文言にする
  • 技術的な内部情報(スタックトレース等)を画面に出さない

3.8 非機能設計

IPA「非機能要求グレード」などを参考に、観点の漏れを防ぐ。

観点設計内容の例
可用性稼働時間、目標稼働率、冗長化、RPO/RTO
性能・拡張性応答時間目標、同時接続数、データ量の想定と増加見込み
運用・保守性監視項目、バックアップ、ジョブ運用、リリース方式
移行性移行対象データ、移行方式、切替手順
セキュリティ認証・認可、通信・保存データの暗号化、ログ監査、脆弱性対策
システム環境対応ブラウザ・OS・端末、法令・規制対応

数値で書く: 「高速に応答する」ではなく「主要画面は95%タイルで2秒以内」のように検証可能な形にする。

3.9 運用設計(概要)

  • 運用体制、運用スケジュール
  • バッチジョブ一覧・実行順序・依存関係
  • 障害時の連絡フロー・一次切り分け
  • 権限・アカウント管理の運用

4. 設計書の書き方

4.1 読み手を意識する

  • 業務用語と技術用語を混在させない。用語集を作り、表記を統一する
  • 発注者向けの説明は図・画面イメージ中心、開発者向けの定義は表形式で厳密に

4.2 一意に解釈できる書き方をする

  • 「など」「適宜」「必要に応じて」を避ける
  • 条件分岐は表(デシジョンテーブル)で書く
  • 境界値を明確にする(「以上/超える」「以下/未満」を正確に)

4.3 同じことを二か所に書かない

  • 共通ルールは共通設計書に一度だけ書き、各設計書からは参照する
  • 重複記載は修正漏れによる矛盾の原因になる

4.4 テンプレートと命名規約を統一する

  • ID体系(例:機能 F-001、画面 S-001、帳票 R-001、IF I-001)を最初に決める
  • 設計書のテンプレート・記載レベルをチームで揃える(記載例を1本作ってから展開する)

4.5 変更管理を行う

  • 版数管理と改訂履歴(変更箇所・理由・承認者)
  • 合意後の変更は変更管理プロセスを通し、影響範囲(他設計書・スケジュール・費用)を評価する

5. レビューのポイント

5.1 レビューの進め方

  • 目的別に分ける:業務妥当性(発注者)と実現性・整合性(開発者・アーキテクト)
  • 量が多い場合は一度に全部見せず、分割して短いサイクルで回す
  • 指摘は一覧化し、対応状況を追跡する。指摘の傾向は品質分析に使う

5.2 チェックリスト

  • すべての要件が設計に反映されているか(トレーサビリティ)
  • 要件にない機能が混入していないか
  • 画面・帳票・IF・データ間で項目名・型・桁数が整合しているか
  • 正常系だけでなく異常系・例外系が定義されているか
  • 権限ごとの振る舞いが定義されているか
  • 非機能要件が数値で定義され、検証可能か
  • セキュリティ・個人情報の扱いが明確か
  • 未決事項に期限と担当者がついているか
  • 実現性(技術的・コスト的・スケジュール的)に無理がないか
  • テスト(結合・総合テスト)の観点が導き出せる内容か

6. よくある失敗と対策

失敗結果対策
要件の曖昧さを残したまま設計後工程で手戻り確認事項一覧で期限管理、合意を記録
正常系しか書いていない実装者ごとに異常時の挙動がばらつく異常系・境界値の記載をテンプレートで必須化
非機能を後回し性能・セキュリティ問題が終盤で発覚方式設計の段階で非機能を確定
外部IFの調整が遅れる結合テストで不整合が多発最優先で着手、IF仕様書を相手先と相互承認
詳細設計レベルまで書き込みすぎる工数超過・発注者が読めない「外から見える振る舞い」に絞る
逆に粒度が粗すぎる詳細設計で解釈が割れる記載例を作り、粒度の基準を合わせる
文章だけで画面を合意リリース直前に「イメージと違う」モックアップ・プロトタイプで早期確認
設計書が実装と乖離保守時に設計書が信用されない変更管理を徹底、更新を完了条件に含める

7. アジャイル・近年の開発での考え方

  • ウォーターフォールでなくても「基本設計で決めるべきこと」(アーキテクチャ、共通方針、非機能、外部IF、データモデル)は早期に決める価値が高い
  • 画面詳細などは、スプリントごとにユーザーストーリー+受け入れ条件として段階的に詳細化してもよい
  • 設計書はWikiやMarkdown、OpenAPI等のコードに近い形式で管理すると、変更追従しやすい
  • 意思決定はADRで残すと、経緯が追跡できる

8. まとめ

  1. 要件と紐づける(トレーサビリティ)
  2. 全体から部分へ設計する
  3. 早く見せて早く合意する
  4. 異常系と非機能を後回しにしない
  5. 一意に解釈できる書き方をする
  6. 変更を管理し、設計書を生きた資料に保つ

0件のページ