データフローダイアグラム(DFD)は、システム分析およびビジネスプロセスモデリングの分野において基盤となる存在です。ビジネスアナリストにとって、情報がシステム内でどのように移動するかを視覚化する能力を習得することは、単なる技術的スキル以上のものであり、コミュニケーションの強力な武器です。適切に構築されたDFDは、混乱していた場所に明確さをもたらし、ボトルネックや重複、最適化の機会を明らかにします。
本書は、ビジネス視点からDFDの実践的応用を検討します。基礎的な概念、構造的要素、抽象度の異なるレベル、特定のソフトウェアツールに依存せずに効果的な図を描くための手法について解説します。最終的に、これらの図を活用してステークホルダーのニーズと技術的実装の間のギャップを埋められるようになるでしょう。

データフローダイアグラムとは何か? 🧐
データフローダイアグラムとは、情報システム内を流れているデータの流れを図式化したものである。フローチャートとは異なり、フローチャートは制御論理や意思決定のステップに注目するが、DFDはデータの移動にのみ焦点を当てる。この図は次の問いに答える:データはどのように扱われるのか?
ビジネスアナリストにとって、DFDは発見のためのツールです。現在の状態(As-Is)を理解し、将来の状態(To-Be)を設計するのに役立ちます。システムの物理的詳細を無視して、情報の論理的な流れに注目できるようにします。
なぜDFDがビジネスアナリストにとって重要なのか 🤔
- 要件の明確化:ステークホルダーはしばしば、複雑なシステムを文章で説明することに苦労する。視覚的なモデルにより、要件が具体的に感じられるようになる。
- ギャップの特定:データフローをマッピングする際、欠落しているデータストアや外部エンティティがすぐに明らかになる。
- コミュニケーション:ビジネスのステークホルダーと技術チームの間で共通の言語を提供する。
- プロセス最適化:不要なデータ移動やワークフロー内のボトルネックを強調する。
DFDの核心的な構成要素 🧩
図を描く前に、構成要素を理解することは不可欠です。標準的なDFD表記では、4つの主要な記号が使用されます。特定のスタイル(例:Gane & SarsonやYourdon & DeMarco)はわずかに異なりますが、概念は一貫しています。
1. 外部エンティティ 👤
外部エンティティは、システム境界外のデータの発生源または到着先を表す。人物、グループ、別のシステム、または組織が該当する。システムはそれらとやり取りするが、内部論理の一部ではない。
- 例:顧客、仕入先、銀行、政府機関。
- 役割:データフローを開始するか、最終的な出力を受信する。
2. プロセス ⚙️
プロセスはデータの変換を表す。入力データを受け取り、何らかの処理(計算、検証、保存)を行い、出力データを生成する。DFDにおいて、プロセスは処理の「どのように」行われるかではなく、「何が」データに対して行われているかに注目する。どのように技術的な実行方法ではなく、何がデータに対して何が起こっているかに注目する。
- 例:税金の計算、注文の検証、レポートの生成。
- ルール:プロセスには少なくとも1つの入力と1つの出力が必要である。
3. データストア 📂
データストアは、後で使用するためにデータが保持される場所を表します。プロセスではなく、データを変更しません。受動的なリポジトリです。データベースのテーブル、ファイル、物理的なファイルボックス、またはクラウドのバケットである可能性があります。
- 例:顧客データベース、在庫ログ、アーカイブ済み注文。
- ルール:データは保存のためにストアに入り、取得のためにストアから出る。
4. データフロー 🔄
データフローは、エンティティ、プロセス、ストア間でのデータの移動を示します。システム内を移動する情報パケットを表します。矢印として描かれます。
- ラベル付け:すべての矢印には、データを明確に説明するラベルが必要です(例:「請求書」、「支払い詳細」)。
- 方向:矢印は移動の方向を示します。
抽象度のレベル 📉
DFDは階層的です。1ページにすべてを描くのではなく、システムを詳細度が増すレベルに分けて描きます。これにより、ステークホルダーはまず全体像を把握し、その後詳細に掘り下げることができます。
コンテキスト図(レベル0) 🌍
コンテキスト図は最も高いレベルの視点です。システムを単一のプロセス(しばしば「システム」または「企業」と呼ばれる)として示し、すべての外部エンティティとの相互作用を表します。プロジェクトの境界を定義します。
- 注目点:境界と外部インターフェース。
- <詳細:内部プロセスやデータストアは表示されません。
レベル1図 📋
レベル1図は、コンテキスト図の単一プロセスを主要なサブプロセスに分割します。主要なデータストアと、これらの主要機能間をデータがどのように移動するかを示します。
- 注目点:システムの主要な機能領域。
- 詳細: システムが論理的にどのように構成されているかを示します。
レベル2の図(以下) 🔍
レベル2の図は、レベル1から1つのプロセスを取り出し、さらに分解します。このレベルは、技術チームが特定の論理を理解するためによく使用されます。ビジネスアナリストにとっては、複雑なモジュールの詳細な要件を定義する際に役立ちます。
- 注目点:特定のサブプロセス。
- 詳細:細かいデータの移動と検証ステップ。
DFDの作成:ステップバイステップのアプローチ 🛠️
DFDを作成するには反復的なプロセスが必要です。情報収集、モデル化、検証が必要です。正確性を確保するために、この構造化されたアプローチに従ってください。
ステップ1:システム境界を定義する 🚧
何を描くかの前に、システムの内部と外部を明確にしましょう。これはコンテキスト図にとって非常に重要です。ステークホルダーに尋ねましょう。「誰のためにこのシステムを作っているのか?」、「入ってくるデータと出ていくデータは何なのか?」
ステップ2:外部エンティティを特定する 👥
プロジェクトとやり取りするすべての人、部門、またはシステムをリストアップしてください。内部ユーザーは、別個のシステムとして機能する場合を除き含めないでください。たとえば、マネージャーがリクエストを承認する場合、そのマネージャーは外部エンティティですが、「承認プロセス」はシステム内部にあります。
ステップ3:主要プロセスをマッピングする 🔄
システムが実行しなければならない重要なアクションを特定してください。動詞+名詞の表現(例:「支払い処理」、単に「支払い」ではない)を使って名前を付けましょう。すべてのプロセスが入力データを持ち、出力データを発生させることを確認してください。
ステップ4:データフローを接続する 📡
エンティティ、プロセス、ストアを矢印でつなぎましょう。すべての矢印にラベルを付けることを確認してください。データがカスタマーからシステムへ移動する場合は「注文リクエスト」とラベル付けます。システムからカスタマーへ移動する場合は「領収書」とラベル付けます。
ステップ5:検証とバランス調整 ⚖️
これが最も重要なステップです。入力と出力のバランスレベル間で維持されなければなりません。レベル1のプロセスが「注文詳細」を受け取る場合、そのプロセスのレベル2の分解も、「注文詳細」(またはその一部)を入力として受け取らなければなりません。これをデータ保存と呼びます。
DFDとフローチャートの違いを理解する 🔄
データフローダイアグラムとフローチャートを混同することはよくあります。両方とも図ですが、目的が異なります。違いを理解することで、モデル化の誤りを防げます。
| 特徴 | データフローダイアグラム(DFD) | フローチャート |
|---|---|---|
| 注目点 | データの流れ | 制御の流れ/論理 |
| 論理 | 決定ポイントを表示しない | 決定ポイントを表示する(はい/いいえ) |
| エンティティ | 外部のソース/宛先 | 開始/終了ポイント |
| 最適な用途 | システム分析、要件 | アルゴリズム設計、コーディング |
| 状態の変化 | データが変換される | プロセスが実行される |
避けるべき一般的な落とし穴 ⚠️
経験豊富なアナリストでさえ、データフローのモデル化において誤りを犯すことがあります。これらの一般的なミスに注意してください。
- 未連結のデータフロー:どこにも向かわない矢印。すべての線は2つのコンポーネントを接続しなければならない。
- ブラックホール:入力はあるが出力がないプロセス。データは消えることはできない。
- 重力の引き寄せ:出力はあるが入力がないプロセス。データは空から出現することはできない。
- データストアの混同:データストアをプロセスとして扱うこと。ストアはデータを保持するものであり、変更は行わない。データが変更される場合は、まずプロセスを経由しなければならない。
- DFDにおける制御フロー:DFDを使って決定論理(もし~なら)を示してはならない。そのためにフローチャートを使用する。DFDはデータの移動に関するものである。
- 複雑化:レベル1の図にあまり詳細を詰め込もうとすること。高レベルの図は高レベルのまま保つこと。
ビジネスアナリストのためのベストプラクティス ✅
DFDの最大の価値を得るためには、これらの原則に従ってください。
1. 一貫した命名を使用する 🏷️
すべての図においてデータフローに同じ用語を使用する。コンテキスト図で「Customer ID」と呼ぶなら、レベル1の図で「Client Number」に変更してはならない。一貫性があることで、レビュー時の混乱を減らすことができる。
2. 図ごとのプロセス数を制限する 📐
目安として、1つのレベル1図に7~9個のプロセスまでに抑えるのが良いです。これ以上になると、システムをサブシステムに分割することを検討してください。これにより、図の可読性が保たれます。
3. 物理的ではなく論理的な側面に注目する 🧠
論理的DFDは、技術にかかわらずビジネスがどのように機能するかを示します。物理的DFDは、特定のハードウェアやソフトウェアを使ってシステムがどのように動作するかを示します。論理的モデルから始めましょう。論理モデルでは、データベースやサーバーについて言及してはいけません。
4. ステークホルダーを早期に参加させる 🤝
図を描き、ステークホルダーと一緒にその図を確認します。特定の取引を追跡するように依頼しましょう。「注文をした場合、お金はどこへ行くのか?」この検証により、モデルが現実と一致していることを確認できます。
5. バージョン管理を維持する 📅
要件は変化します。DFDも進化しなければなりません。バージョンを管理しましょう。プロセスが変更された際は、図を更新し、変更内容を記録してください。これにより、システムの進化を追跡できる監査証跡が作成されます。
要件工学との統合 📝
DFDは空洞に存在するものではありません。要件仕様書(RSD)と深く関連しています。それらを一致させる方法を以下に示します。
- トレーサビリティ:DFD内の各プロセスは、機能要件に対応する必要があります。要件のないプロセスがある場合は、その必要性を疑いましょう。
- 非機能要件:DFDはパフォーマンス要件を特定するのに役立ちます。たとえば、プロセスが遠隔のストアからデータを必要とする場合、レイテンシが懸念される可能性があります。
- 検証:DFDを用いて、ビジネスが必要とするすべてのデータがカバーされていることを検証します。レポートが必要な場合は、そのデータがサポートするストアまたはプロセスに流れていることを確認してください。
検証とレビュー 🔍
図が作成された後は、公式なレビューを実施しなければなりません。これは単なる視覚的な確認ではなく、論理的な確認です。
ウォークスルー法
ウォークスルー会議を実施します。たとえば「売上注文」のような特定のデータ項目を選択し、外部エンティティからすべてのプロセスとストアを経由して最終目的地まで追跡します。その経路は意味があるでしょうか?各段階でデータは完全ですか?
保存チェック
データが保存されていることを確認します。プロセスが出力するものが「配送先住所」である場合、入力には「住所」情報が含まれている必要があります。データが消失する場合は、モデルが不完全であることを意味します。
分解チェック
レベル2の図がレベル1の図の真正の分解になっていることを確認します。親プロセスの入力と出力は、子プロセスの入力と出力の合計と一致しなければなりません。
事例研究:オンライン小売システム 🛒
例を挙げると、オンライン小売システムを検討します。コンテキスト図では、「顧客」が「注文」を送信し、「請求書」を受け取ること、そして「倉庫」が「在庫状況」を送信することを示します。
レベル1図では、システムは「注文受領」、「支払い処理」、「在庫更新」、「商品出荷」に分解されます。「顧客データベース」と「在庫データベース」はデータストアとして機能します。
この構造により、ビジネスアナリストは「支払い処理」が「注文受領」からデータを必要とし、「在庫データベース」を更新しなければならないことを把握できます。また、「倉庫」が外部エンティティであることも浮き彫りになり、システムが彼らの在庫システムとインターフェースしなければならないことを意味します。
保守と進化 🔄
システムは生きている存在です。ビジネスが成長するにつれて、DFDも変化しなければなりません。DFDは一度きりの成果物ではありません。
- 変更管理: 新しい機能が追加されたら、まずDFDを更新する。これにより、下流への影響を特定しやすくなる。
- 再構築: プロセスが複雑になりすぎた場合は、分解する。2つのプロセスがほとんど一緒に使われない場合は、統合を検討する。
- ドキュメント: DFDを要件と一緒に保持する。これはドキュメントの視覚的な目次として機能する。
視覚的モデリングの結論 🎯
データフローダイアグラムは単なる技術的な図面以上のものである。それはビジネス論理の言語である。抽象的な要件を具体的な視覚的経路に変換する。階層性、一貫性、検証の原則に従うことで、ビジネスアナリストは成功裏にシステム実装を促進するモデルを作成できる。
目標は最初のドラフトでの完璧さではなく、コミュニケーションの明確さである。会話のきっかけを生み、欠落している要件を明らかにするDFDこそが、矢印の数に関わらず成功した図である。データに注目し、流れを尊重し、図が分析を導いていくようにしよう。
練習を重ねることで、これらの図を描くことは自然にあなたの分析ツールキットの一部になる。最終的なシステムが設計されたビジネスニーズを実際に支援していることを保証するための、最も信頼できる手法の一つである。










