DFDは、システム開発のさまざまな段階、初期の要件収集から詳細設計、さらにはシステム文書作成まで幅広く使用されます。開発者、アナリスト、最終ユーザーを含むステークホルダーが、システム内でデータがどのように処理され、変換されるかを明確に理解するのに役立ちます。これらの相互作用を可視化することで、DFDはより良いコミュニケーションを促進し、潜在的なボトルネックや非効率を特定し、システムが機能要件を満たしていることを保証します。
このチュートリアルの目的は、データフロー図の理解と作成に関する包括的なガイドを提供することです。DFDの基盤となる重要な概念を深く掘り下げ、その構成要素間の関係を検討し、効果的で洞察に富んだ図を作成するための実用的なヒントとガイドラインを提供します。DFDに初めて触れる方、あるいはスキルを磨きたい方の両方にとって、このチュートリアルはプロジェクトでDFDを効果的に活用するために必要な知識と技術を提供します。
DFD要素の表記法
データフロー図(DFD)は、システム内のさまざまな要素を表すためにさまざまな表記法を使用します。ご提示いただいた画像は、DFD要素の4つの異なる表記法を示しています:Yourdon DeMarco、Gane & Sarson、SSADM、およびYourdonとCoadです。それぞれの表記法と、外部エンティティ、プロセス、データストア、データフローの表現方法について見ていきましょう:
1. Yourdon DeMarco表記法
- 外部エンティティ:矩形ボックスとして表され、ラベルは「エンティティ」です。システムの制御外のデータの発信元または受信先を示します。
- プロセス:ラベル「プロセス」の円として描かれます。システム内でデータに対して実行される操作や変換を表します。
- データストア:ラベル「データストア」の開口部のある矩形として表示されます。データが保存され、プロセスによってアクセス可能な場所を表します。
- データフロー:矢印として描かれ、エンティティ、プロセス、データストア間でのデータ移動の方向を示します。
2. Gane & Sarson表記法
- 外部エンティティ:ラベル「エンティティ」の矩形ボックスとして表示され、Yourdon DeMarco表記法と同様です。
- プロセス:ラベル「プロセス」と番号(例:1.0)を備えた丸みを帯びた矩形として表され、プロセスのレベルまたは順序を示します。
- データストア:左側に垂直線を備えた開放型の長方形として表示され、「データストア」とラベル付けされている。垂直線には参照番号(例:D1)が含まれる場合がある。
- データフロー:要素間のデータフローの方向を示す矢印として描かれる。
3. SSADM(構造化システム分析設計手法)表記
- 外部エンティティ:「エンティティ」とラベル付けされた楕円として描かれており、他の表記と区別される。
- プロセス:「プロセス」とラベル付けされた丸みを帯びた長方形として表示され、Gane & Sarsonと同様だが、追加の番号は付けられていない。
- データストア:「データストア」とラベル付けされた長方形として表され、Gane & Sarsonに見られる垂直線は含まれない。
- データフロー:データの移動方向を示す矢印によって示される。
4. YourdonとCoad表記
- 外部エンティティ:「エンティティ」とラベル付けされた長方形のボックスとして描かれており、Yourdon DeMarcoおよびGane & Sarsonと同様である。
- プロセス:「プロセス」とラベル付けされた円として表示され、Yourdon DeMarcoと同様である。
- データストア:「データストア」とラベル付けされた開放型の長方形として表され、Yourdon DeMarcoと同様である。
- データフロー要素間のデータフローの方向を示す矢印として図示される。
主な違い
- 形状とラベル付け各記法は、外部エンティティ、プロセス、データストアに対して異なる形状とラベル付けの規則を使用する。
- プロセスの表現Gane & SarsonおよびSSADMはプロセスに丸角長方形を使用するが、Yourdon DeMarcoおよびYourdonとCoadは円を使用する。
- データストアの表現Gane & Sarsonでは参照番号付きの垂直線を含むが、他の記法では単純な長方形を使用する。
これらの記法を理解することで、アナリストや設計者はプロジェクトのニーズや好みに最も適したものを選択でき、システム設計の明確で効果的な伝達が保証される。

主要な概念
1. 外部エンティティ
外部エンティティは、システムとやり取りするが、その制御外にあるデータの発信元または受信先である。ユーザー、他のシステム、または外部データベースであることがある。
- 例提供された画像では、「顧客」と「ブローカー」が外部エンティティである。
2. プロセス
プロセスは入力データを出力データに変換する。データに対して実行される操作または操作の集合を表す。
- 例「注文入力」プロセスは「発注書」を入力として受け取り、「注文データ」を出力として生成する。
3. データストア
データストアは、プロセスによってアクセスおよび変更可能なデータを保持する。データを将来の利用のために保管する場所を表す。
- 例: 「Order」データストアは、プロセスによって取得または更新可能な注文の詳細を保持しています。
4. データフロー
データフローは、外部エンティティ、プロセス、データストア間でのデータの移動を表します。矢印で表され、データの移動方向を示します。
- 例: 「Customer」から「Enter Orders」への矢印は、顧客からプロセスへの「購入依頼」の流れを表しています。
DFDコンポーネント間の関係
外部エンティティからプロセスへ
- 相互作用: 外部エンティティはプロセスに入力データを提供するか、プロセスからの出力データを受け取る。
- 例: 「Customer」は「Enter Orders」プロセスに「購入依頼」を提供する。
プロセスからデータストアへ
- 相互作用: プロセスはデータストアから読み取りまたは書き込みを行う。
- 例: 「Enter Orders」プロセスは「Order」データストアに「注文データ」を書き込む。
データストアからプロセスへ
- 相互作用: データストアは、必要なときにプロセスにデータを提供する。
- 例: 「注文」データストアは、必要なプロセスに注文の詳細を提供する。
プロセスから外部エンティティへ
- インタラクション: プロセスは出力データを外部エンティティに送信する。
- 例: 「注文入力」プロセスは注文確認を「顧客」に送信する。

トップダウン分解
この図は、注文処理システムのより詳細なデータフロー図(DFD)を表しており、顧客、ブローカー、注文処理プロセスの間の相互作用に焦点を当てている。以下の通り、コンポーネントとその相互作用の概要を示す。

-
外部エンティティ:
- 顧客: このエンティティは注文を提出することでプロセスを開始する。
- ブローカー: このエンティティは注文プロセスにおける仲介者として機能し、顧客から取引の詳細を受け取り、注文の詳細をシステムに転送する。
-
プロセス:
- 注文の提出(オンライン): このプロセスは顧客がオンラインで行った注文を処理する。顧客から直接注文の詳細を受け取る。
- 取引の詳細:このプロセスは取引の詳細を管理し、顧客からの入力を受信してブローカーに転送します。
- 注文の提出(電話):このプロセスは電話による注文を処理します。ブローカーから注文の詳細を受け取ります。
-
データストア:
- 注文の詳細:このデータストアはオンラインプロセスを通じて注文された注文の詳細を保持します。
- 取引の詳細:このデータストアは処理され、ブローカーに転送される取引の詳細を保持します。
-
データフロー:
- 注文の詳細(顧客からオンライン注文へ):このデータフローは、オンラインで注文を提出する際に顧客が提供する注文情報を表します。
- 取引の詳細(顧客から取引の詳細へ):このデータフローは、顧客が提供する取引情報を表します。
- 取引の詳細(取引の詳細からブローカーへ):このデータフローは、ブローカーに転送される取引情報を表します。
- 注文の詳細(ブローカーから電話注文へ):このデータフローは、電話で注文を提出する際にブローカーが提供する注文情報を表します。
-
プロセス番号:
- 0, 1, 2: これらの数字は、システム内のプロセスの順序または識別を示している可能性があります。プロセス0は、オンライン注文プロセスと電話注文プロセスの両方とやり取りする中心的なプロセスのようです。
解釈
- この図は、注文がオンラインまたは電話で行えるシステムを示しています。
- オンライン注文は、「注文の提出(オンライン)」プロセスによって直接処理され、注文の詳細が保存されます。
- 電話注文の場合、顧客から取引の詳細を受け取り、注文の詳細を「注文の提出(電話)」プロセスに転送するブローカーが関与します。
- ブローカーは仲介者として機能し、電話注文の取引および注文処理プロセスを円滑にします。
- 焦点は、注文および取引の詳細を収集・管理することにあり、注文方法(オンラインまたは電話)に関わらず、正しく処理・保存されることを確保することです。
このDFDは、注文処理システムのより詳細なビューを提供し、注文および取引の処理における異なるエンティティやプロセスの役割を強調しています。
ヒントとテクニック
- シンプルに始める: システムの概要を把握するために、まずコンテキストレベルのDFDから始め、段階的に詳細なレベルへと進んでください。
- 一貫性: プロセス、データストア、データフローに対して一貫した命名規則を使用して、混乱を避けてください。
- 明確さ: データフローが明確にラベル付けされ、矢印が正しく方向付けられて、データの流れを示していることを確認してください。
- モジュール化: 複雑なプロセスを、より明確で理解しやすい小さなサブプロセスに分割してください。
- 検証:ステークホルダーと定期的にDFDを検証し、システムのデータフローを正確に表現していることを確認する。
ガイドライン
- 境界を特定する:システムの境界を明確に定義し、内部プロセスと外部エンティティを区別する。
- データに注目する:制御フローまたは処理の順序よりも、データの流れに重点を置く。
- 詳細度:高レベルのDFD(レベル0)から始め、段階的に詳細度の高いレベル(レベル1、レベル2など)へと洗練していく。
- 標準記号を使用する:プロセス、データストア、外部エンティティ、データフローに標準記号を適用し、明確さと一貫性を保つ。
- 仮定を記録する:DFDに関連するすべての仮定や制約を記録し、文脈を提供し、誤解を避ける。
結論
データフロー図は単なる視覚的補助手段以上のものであり、システム分析および設計に関与するすべての人にとって不可欠なツールである。明確で構造的なデータフローの表現を提供することで、DFDは抽象的なシステム要件と具体的な実装詳細の間のギャップを埋める。ステークホルダーがシステム内のデータの取り扱い方を可視化し、改善すべき領域を特定し、システム設計がその意図された機能と一致していることを確認できる。
本チュートリアルを通じて、外部エンティティ、プロセス、データストア、データフローを含むDFDの基本的な概念を検討してきました。これらの要素がどのように相互作用するかを検証し、効果的なDFDを作成するための実用的なヒントとガイドラインを提示しました。これらの概念と技術を習得することで、システムのデータフローを正確に表現するだけでなく、開発ライフサイクル全体で貴重なコミュニケーションツールとして活用できるDFDを作成できるようになります。
DFDを継続して使用する際には、明確さ、一貫性、そして細部への注意が重要であることを忘れないでください。システムに対する理解が進むにつれて、図を繰り返し検証し、改善・精緻化することをためらわないでください。実践とDFDの原則に基づく堅実な基礎があれば、最も複雑なシステム分析の課題にも対応できるようになります。データフロー図の力を活かし、システム設計の取り組みにおいて新たな洞察と効率を引き出してください。










