1. 概要
DFD(Data Flow Diagram:データフロー図)は、システム開発における業務分析や要件定義で使用される重要な手法です。DFDは、業務プロセスのデータの流れに注目し、それを視覚的に表現するためのツールであり、システムの機能やデータフローを非技術者でも理解しやすい形で表現できます。これにより、複雑なシステムの構造やデータの流れを簡潔にまとめ、ステークホルダー間のコミュニケーションを円滑にする役割を果たします。
DFDの主な目的は以下の通りです:
- システム内のデータの流れを明確に示す
- システムの機能や処理を明確化する
- システムの境界を定義する
- ステークホルダー間のコミュニケーションを促進する
DFDは、システム要件定義やソフトウェア要件定義の段階でよく使用される構造化分析法の一部です。これにより、プロジェクトの要件を明確にし、効率的なシステム開発をサポートします。
2. 詳細説明
2.1. DFDの基本要素
DFDは以下の4つの基本要素で構成されます:
- プロセス:データを変換または処理する機能。例:「顧客注文処理」
- データフロー:プロセス間でデータがどのように流れるかを示す矢印。例:「注文データ」
- データストア:データを保存する場所。例:「顧客データベース」
- 外部実体:システムの外部にある、システムとデータをやり取りする対象。例:「顧客」
これらの要素を組み合わせて、システム内でどのようにデータが流れ、処理されるかを表現します。
2.2. DFDの表現レベル
DFDは段階的なレベルで表現され、システムの詳細を徐々に明らかにしていきます。主なレベルは次の通りです:
- コンテキストダイアグラム:システム全体を1つのプロセスとして表現し、外部実体とのデータのやり取りを示す。
例:[図1 コンテキストダイアグラムの例を挿入] - レベル0図:システムを構成する主要なプロセスを描き、内部のデータフローを示す。
例:[図2 レベル0のDFD例を挿入] - レベル1図以降:レベル0の各プロセスをさらに詳細に分解し、細部までを図示する。
例:[図3 レベル1のDFD例を挿入]
この段階的詳細化により、システム全体の理解から個別のプロセスの理解まで、順を追って把握することが可能です。
2.3. DFDの作成手順
DFDを作成する際の基本的な手順は次の通りです:
- 外部実体を特定する
- システム内の主要なプロセスを特定する
- データストアを特定する
- 各プロセス間のデータフローを特定する
- 各プロセスの詳細な説明をミニスペックとして記述する ミニスペックとは、各プロセスが何を行うかを簡潔に文章でまとめたもので、プロセスの具体的な処理内容を明確にするために使用されます。
2.4. DFDの特徴
- 源泉と吸収:システム内外のデータの発生源と最終的な到達点を明確に示します。
- データの変換:プロセスによるデータの変換を視覚的に表現します。
- 階層構造:上位レベルの概要から下位レベルの詳細まで段階的に掘り下げることが可能です。
3. 応用例
DFDは多くの業界で活用されています。以下に代表的な応用例を示します:
- 銀行システム:口座開設、入出金、残高照会のプロセスを視覚化
- Eコマースサイト:商品検索、注文処理、在庫管理などのデータフローを図示
- 製造業の生産管理システム:受注、製造、出荷の流れを表現
- 医療情報システム:患者情報管理や処方箋発行プロセスの可視化
[図4 各応用例に対応するDFD図を挿入]
これらの例では、DFDを使用することで、複雑な業務プロセスの流れを明確に把握し、システム設計の効率を向上させることができます。
4. 例題
例題1: コンビニエンスストアのPOSシステムに関するDFDのコンテキストダイアグラムを作成してください。
回答例1:
graph LR A[顧客] -->|商品情報| B((POSシステム)) B -->|レシート| A C[従業員] -->|販売データ入力| B B -->|売上レポート| D[店長] B -->|在庫情報| E[本部] E -->|商品マスタ更新| B style B fill:#f9f,stroke:#333,stroke-width:4px
このダイアグラムは、コンビニエンストアのPOSシステムのコンテキストダイアグラムを表現しています。以下に要素の説明を記します:
- 中央の円(B)はPOSシステムを表しています。
- 矩形(A, C, D, E)は外部エンティティを表しています:
- A: 顧客
- C: 従業員
- D: 店長
- E: 本部
- 矢印はデータフローを表し、ラベルはデータの種類を示しています。
このダイアグラムにより、POSシステムと外部エンティティとの関係、およびそれらの間のデータの流れを視覚的に理解することができます。
例題2: POSシステムの「販売処理」プロセスのレベル1 DFDを作成してください。
回答例2:
graph LR A[顧客] -->|商品バーコード| B((POSシステム)) A -->|支払い| B B -->|レシート| A C[(商品マスタ)] -->|価格情報| B B -->|取引データ| D[(販売データストア)] style B fill:#f9f,stroke:#333,stroke-width:4px style C fill:#ffd,stroke:#333,stroke-width:2px style D fill:#ffd,stroke:#333,stroke-width:2px
コンテキストダイアグラム
このダイアグラムは、例題2のPOSシステムのコンテキストダイアグラムを表現しています。以下に要素の説明を記します:
- 中央の円(B)はPOSシステム全体を表しています。
- 矩形(A)は外部エンティティである顧客を表しています。
- 円柱(C, D)はデータストアを表しています:
- C: 商品マスタ
- D: 販売データストア
- 矢印はデータフローを表し、ラベルはデータの種類を示しています。
このコンテキストダイアグラムの特徴:
- システム全体を1つのプロセス(POSシステム)として表現しています。
- システムと外部エンティティ(顧客)との関係を示しています。
- システムが使用する主要なデータストア(商品マスタと販売データストア)を表示しています。
- 主要なデータフロー(商品バーコード、支払い、レシート、価格情報、取引データ)を示しています。
このコンテキストダイアグラムは、POSシステムの全体像を簡潔に表現しており、システムの境界と主要な相互作用を明確に示しています。これにより、ステークホルダーはシステムの大まかな機能と外部との関係を容易に理解することができます。
graph TD A[顧客] -->|商品バーコード| B(1.商品スキャン) B -->|商品コード| C(2.価格照会) D[(商品マスタ)] -->|価格情報| C C -->|価格| E(3.合計計算) E -->|合計金額| F(4.支払処理) A -->|支払い| F F -->|取引データ| G[(販売データストア)] F -->|レシート| A style B fill:#f9f,stroke:#333,stroke-width:2px style C fill:#f9f,stroke:#333,stroke-width:2px style E fill:#f9f,stroke:#333,stroke-width:2px style F fill:#f9f,stroke:#333,stroke-width:2px style D fill:#ffd,stroke:#333,stroke-width:2px style G fill:#ffd,stroke:#333,stroke-width:2px
レベル1DFD
このダイアグラムは、POSシステムの「販売処理」プロセスのレベル1 DFDを表現しています。以下に要素の説明を記します:
- 矩形(A)は外部エンティティ(顧客)を表しています。
- 円(B, C, E, F)はプロセスを表しています:
- B: 1.商品スキャン
- C: 2.価格照会
- E: 3.合計計算
- F: 4.支払処理
- 円柱(D, G)はデータストアを表しています:
- D: 商品マスタ
- G: 販売データストア
- 矢印はデータフローを表し、ラベルはデータの種類を示しています。
このダイアグラムにより、POSシステムの販売処理プロセスの流れを視覚的に理解することができます。具体的には:
- 顧客が商品バーコードを提示し、それが商品スキャンプロセスに入力される。
- スキャンされた商品コードを基に、商品マスタから価格情報が照会される。
- 価格情報を基に合計金額が計算される。
- 顧客から支払いを受け、支払処理が行われる。
- 取引データが販売データストアに保存され、顧客にレシートが発行される。
このレベル1 DFDは、コンテキストダイアグラムよりも詳細な情報を提供し、システムの内部プロセスとデータの流れを明確に示しています。これにより、システム開発者や stakeholder がシステムの機能要件をより深く理解することができます。
5. まとめ
DFD(データフロー図)は、システム開発における業務分析や要件定義において欠かせないツールです。プロセス、データフロー、データストア、外部実体といった基本要素を使用して、システム内のデータの流れや処理を視覚的に表現し、複雑なシステムを理解しやすくします。
DFDは、コンテキストダイアグラムからスタートし、レベル0図、レベル1図といった段階的詳細化を経ることで、システムの全体像から詳細な部分までを効率的に表現します。また、ミニスペックを用いることで、各プロセスの具体的な処理内容も明確化でき、要件定義においても役立ちます。