Skip to content

Latest commit

 

History

History
197 lines (153 loc) · 12.2 KB

Home.md

File metadata and controls

197 lines (153 loc) · 12.2 KB

要件定義

要件定義 / 基本設計 / 詳細設計
基本:共通仕様 / 機能一覧 / テーブル一覧 / 画面一覧 / 画面遷移
詳細:テーブル定義書 / 画面定義書 / イベント仕様書


1. 背景と目的

Microsoft が MIT ライセンスで提供するサンプル データベース「Northwind」を題材に、 要件定義 → 基本設計 → 詳細設計 のドキュメント・フォワードを行い、 その詳細設計をコーディング・エージェントに渡して実装させることを目的とする。

したがって本成果物は「読み物」ではなく実装の入力であり、実装者が判断に迷う余地(行間)を残さないことを最優先とする。

README.md に記載されたモジュール一覧は検討の出発点であり、確定した要件は本書を正とする。

2. システム概要

Northwind が表す「食品卸売業者」の業務を対象とした、社内向けの Web 業務アプリケーション。 受注を中心とした日常業務(登録・照会・更新)と、蓄積データの分析・可視化の 2 系統からなる。

項目 内容
利用者 自社の営業担当者・営業事務・管理者(社内利用)
利用形態 ブラウザからのマルチユーザ利用
対象データ Northwind データベース(顧客・商品・仕入先・社員・受注・配送)
想定データ量 顧客 100 件程度、商品 100 件程度、受注 1,000 件程度(サンプル規模)

3. スコープ

3.1 スコープ内

  • 3 節のモジュール一覧に挙げた 9 モジュールの機能
  • Northwind 原典のテーブル構造を保った DB 設計(Web 化に必要な最小限の追加を含む)
  • 画面からの CRUD、検索、集計・分析の表示、印刷用の帳票画面

3.2 スコープ外

本システムはサンプルであり、次は対象外とする。

対象外 理由
認証・認可、ロールによる権限制御 サンプルとして過剰。全利用者が全機能を利用できるものとする
多言語対応・多通貨対応 表示は日本語、金額は単一通貨として扱う
外部システム連携(会計・EDI・決済) 対象業務の外
変更履歴・監査ログ、論理削除 サンプルとして過剰
非同期処理(バッチ・ジョブ・帳票のサーバ生成)、データ・キャッシュ層 サンプルとして過剰。帳票は同期の印刷用画面とする
ワークテーブル・採番テーブル 採番は IDENTITY を用いる
ドメイン駆動設計(DDD)に基づく設計 サンプルとして過剰

4. 前提・制約

区分 内容
データベース Microsoft SQL Server の Northwind サンプル DB。テーブル・列の削除や改名は行わない
技術スタック 特定のフレームワークに依存しない。詳細設計は一般的な Web アプリケーションの用語で記述する
排他制御 複数利用者による同時更新があり得るため、更新系の機能は楽観排他とする
顧客 ID Northwind の仕様どおり利用者が入力する 5 桁の英大文字コードとし、自動採番しない
分析機能 集計はリアルタイムに DB へ問い合わせて算出する(集計済みテーブルや事前計算は持たない)

5. モジュール一覧

# モジュール コード 主要テーブル 区分
1 受注管理 ORD Orders / Order Details 業務
2 顧客管理 CUS Customers / CustomerDemographics 業務
3 商品管理 PRD Products / Categories 業務
4 仕入先管理 SUP Suppliers 業務
5 担当者管理 EMP Employees / Territories / Region 業務
6 配送管理 SHP Shippers 業務
7 売上分析 SLS Orders / Order Details(集計) 分析
8 在庫分析 INV Products / Categories(集計) 分析
9 パフォーマンス分析 PRF Employees / SalesTargets 分析

「業務」モジュールは登録・更新を伴う。「分析」モジュールは原則として参照のみで、 例外はパフォーマンス分析の売上目標設定(登録・更新あり)。

6. 各モジュールの要件

6.1 受注管理(ORD)

# 要件
ORD-R1 受注を一覧表示し、顧客・担当者・受注日の範囲・出荷状況で絞り込み検索できること
ORD-R2 受注 1 件の詳細(受注情報・明細・小計・送料・合計)を照会できること
ORD-R3 受注を新規登録できること。明細は複数行を追加・削除でき、金額は入力に応じて再計算されること
ORD-R4 受注および明細を編集できること。ただし出荷済みの受注は編集できないこと
ORD-R5 受注を削除できること。削除時は明細もあわせて削除されること
ORD-R6 出荷ステータス(出荷日・配送業者・送料)を更新でき、出荷を取り消せること
ORD-R7 受注 1 件について納品書・請求書を印刷できること
ORD-R8 廃番商品は新規の明細に指定できないこと
ORD-R9 出荷確定時に在庫数が引き落とされること

6.2 顧客管理(CUS)

# 要件
CUS-R1 顧客を一覧表示し、会社名・担当者名・国・地域で絞り込み検索できること
CUS-R2 顧客の詳細(会社情報・連絡先)を照会できること
CUS-R3 顧客を新規登録・編集・削除できること。受注が存在する顧客は削除できないこと
CUS-R4 顧客の購買履歴(受注一覧と取引サマリ:累計受注件数・累計売上・最終受注日)を確認できること
CUS-R5 売上金額による顧客ランキングを、期間を指定して確認できること

6.3 商品管理(PRD)

# 要件
PRD-R1 商品を一覧表示し、商品名・カテゴリ・仕入先・廃番区分で絞り込み検索できること
PRD-R2 商品の詳細(仕入先情報・カテゴリ・単価・在庫数・発注済数・発注点)を照会できること
PRD-R3 商品を新規登録・編集・削除できること。受注明細が存在する商品は削除できないこと
PRD-R4 在庫数が発注点以下の商品を、一覧上で識別できること
PRD-R5 商品を廃番に設定・解除できること。廃番商品は新規受注に使用できないこと
PRD-R6 カテゴリを一覧表示し、登録・編集・削除できること。商品が存在するカテゴリは削除できないこと

6.4 仕入先管理(SUP)

# 要件
SUP-R1 仕入先を一覧表示し、会社名・国で絞り込み検索できること
SUP-R2 仕入先の詳細(担当者・連絡先・ホームページ)を照会できること
SUP-R3 仕入先を新規登録・編集・削除できること。商品が存在する仕入先は削除できないこと
SUP-R4 仕入先の取扱商品一覧を、在庫数・発注点とあわせて確認できること
SUP-R5 発注が必要な商品(在庫数 <= 発注点)を対象に、仕入先単位の発注書を印刷できること

6.5 担当者管理(EMP)

# 要件
EMP-R1 社員を一覧表示し、氏名・役職・上司で絞り込み検索できること
EMP-R2 社員の詳細(連絡先・入社日・上司・担当テリトリー)を照会できること
EMP-R3 社員を新規登録・編集・削除できること。受注または部下が存在する社員は削除できないこと
EMP-R4 上司・部下の関係を木構造で表示できること
EMP-R5 社員が担当する受注の一覧と売上実績を確認できること
EMP-R6 社員へテリトリーを割り当て・解除できること

6.6 配送管理(SHP)

# 要件
SHP-R1 運送会社を一覧表示し、新規登録・編集・削除できること。受注が存在する運送会社は削除できないこと
SHP-R2 出荷ステータス(未出荷・出荷済・納期遅延)で受注を追跡できること
SHP-R3 運送会社ごとの実績(取扱件数・配送コスト合計・平均送料・納期遅延率)を比較できること
SHP-R4 配送先の国別に実績を集計して確認できること
SHP-R5 納期遅延は「出荷日 > 要求納期」、未出荷の遅延は「出荷日が未設定かつ要求納期 < 当日」と定義すること

6.7 売上分析(SLS)

# 要件
SLS-R1 期間を指定して売上サマリ(売上合計・受注件数・平均受注単価)を確認できること
SLS-R2 月次・四半期・年次の粒度で売上推移を確認できること
SLS-R3 商品カテゴリ別の売上構成比を確認できること
SLS-R4 出荷先の国別・地域別に売上を集計して確認できること
SLS-R5 前年同期比と成長率を確認できること
SLS-R6 売上は「受注明細の明細金額の合計」とし、送料を含めないこと。集計の基準日は受注日とすること

6.8 在庫分析(INV)

# 要件
INV-R1 在庫切れ(在庫数 = 0)および低在庫(在庫数 <= 発注点)の商品を一覧で確認できること
INV-R2 カテゴリ別の在庫金額(Σ 単価 × 在庫数)を確認できること
INV-R3 在庫回転率(期間内の出荷数量 ÷ 現在庫数)を商品別に確認できること
INV-R4 滞留在庫(指定期間に出荷実績がなく在庫がある商品)を確認できること
INV-R5 発注が必要な商品(在庫数 + 発注済数 <= 発注点)を発注候補として一覧できること
INV-R6 廃番商品を集計対象に含めるかを切り替えられること

6.9 パフォーマンス分析(PRF)

# 要件
PRF-R1 担当者別の売上ランキングを、期間を指定して確認できること
PRF-R2 担当者別の受注件数と客単価(売上合計 ÷ 受注件数)を比較できること
PRF-R3 テリトリー別・地域別に実績を集計して確認できること
PRF-R4 担当者別・年月別の売上目標を設定・更新できること
PRF-R5 目標に対する実績の達成率と進捗を確認できること

7. 非機能要件

サンプルとして必要最小限に留める。

区分 要件
性能 一覧・検索は 20 件のページ単位で取得し、全件をメモリに読み込まないこと。分析画面の応答は想定データ量で 3 秒以内を目安とする
同時実行 更新系機能は楽観排他により、他利用者の更新を上書きしないこと
整合性 受注と明細のように複数テーブルを更新する処理は 1 トランザクションで行うこと
可用性・運用 特段の要件を設けない(サンプルのため)
セキュリティ SQL インジェクション対策としてパラメータ化した問い合わせを用いること。認証・認可は対象外

8. 後続成果物

工程 成果物
基本設計 Home / 共通仕様 / 機能一覧 / テーブル一覧 / 画面一覧 / 画面遷移
詳細設計 LLD / テーブル定義書 / 画面定義書 / イベント仕様書