データフローダイアグラム(DFD)は、情報がシステム内でどのように移動するかを視覚的に表現したものです。システムの外観ではなく、データがどのように処理され、保存され、伝送されるかに焦点を当てます。アナリストやアーキテクトにとって、この表記法を習得することは、技術的な実装の詳細に巻き込まれることなく、複雑なワークフローを理解する上で不可欠です。
このガイドでは、DFDの構造を分解します。これらの図を構成する5つの核心要素を検討し、それらがどのように相互作用するかを調べ、実用的な例を提示します。最終的に、明確で実行可能なシステムマップを作成するために必要な構造的整合性を理解できるようになります。

データフローダイアグラムは、情報システム内をデータがどのように流れているかをグラフィカルに表現したものです。フローチャートが制御論理や決定ポイントに注目するのに対し、DFDはデータの移動に注目します。物理的な実装を抽象化し、情報の論理的な流れを示します。
DFDは階層的です。高レベルの視点から始まり、具体的な詳細へと掘り下げます。このレイヤードアプローチにより、ステークホルダーはシステムを一目で理解できる一方で、開発者は具体的なデータ要件を把握できます。
有効なDFDを構築するには、5つの特定の要素を組み込む必要があります。最初の4つはグラフィカルな記号ですが、5つ目は正確性に不可欠な概念的な要件です。
プロセスは、入力データを出力データに変換する機能を表します。システムのエンジンです。DFDでは、表記スタイル(Yourdon/DeMarco対Gane/Sarson)に応じて、通常は丸められた長方形または円で表現されます。
主な特徴:
例: オンラインショッピングシステムを考えてみましょう。プロセスの例として「支払いの検証」 があります。これはクレジットカードデータ(入力)を受け取り、承認または拒否コード(出力)を返します。
データストアは、後で使用するために情報を保持する場所です。データベース、ファイル、紙のファイルボックス、または任意の永続化メカニズムを表します。重要なのは、データストアはデータを処理しないということです。単にデータを保持するだけです。
主な特徴:
例: ライブラリシステムにおいて、「書籍在庫」データストアは利用可能な書籍の詳細を保持しています。書籍が貸出または返却されたときに更新されます。
外部エンティティは、モデル化されているシステムの境界外にあるデータの発信元または受信先です。これらは、主システムとやり取りするが、その内部論理の一部ではない人物、組織、または他のシステムを表します。
主な特徴:
例: 給与システムにおいて、「従業員」は、勤務時間の提供と給与の受領を行う外部エンティティです。
データフローは、プロセス、データストア、外部エンティティを結ぶ矢印です。これらはデータの移動を表します。データフローには、転送されるデータの内容を説明する名前が必要です。
主な特徴:
例: 「ログイン」プロセスから「ユーザーDBデータストアを結ぶ矢印は「認証リクエスト」.
図面上には描かれていないが、データ辞書は完全なDFD仕様の5つの必須要素の一つである。これは、図で使用されるすべてのデータ要素の構造、型、フォーマットを定義する中央集積型リポジトリである。これがないと、図は曖昧になる。
主な特徴:
例: 辞書は「生年月日」を「YYYY-MM-DD」と定義し、null値を許可しない。これにより、プロセス内の論理エラーを防ぐ。
設計段階で各コンポーネントの特性をすばやく参照するために、この表を使用してください。
| コンポーネント | 記号の形状 | 機能 | 例のラベル | 文法規則 |
|---|---|---|---|---|
| プロセス | 角丸長方形/円 | データを変換する | 税金を計算する | 動詞+名詞 |
| データストア | 開かれた長方形/平行線 | データを保存する | 注文履歴 | 名詞(複数) |
| 外部エンティティ | 正方形/長方形 | ソース/シンク | 銀行システム | 名詞(単数) |
| データフロー | 矢印 | データを移動する | 支払い詳細 | 名詞句 |
| データ辞書 | 文書/リスト | データを定義する | データ定義 | 技術的スキーマ |
DFDはほとんど孤立して描かれない。それらは、異なる抽象レベルを許す階層構造の中に存在する。これらのレベルを理解することで、各段階で5つの構成要素が正しく適用されることを保証できる。
これは最高レベルのビューです。システム全体を単一のプロセスとして表示します。外部エンティティと、システムに入出力する主要なデータフローを特定します。
この図は、コンテキスト図の単一プロセスを主要なサブプロセスに分解します。内部データストアおよびプロセスの最初のレイヤーを導入します。
このレベルでは、レベル0のプロセスをその構成要素となる機能に分解します。詳細設計および開発に使用されます。
DFDを作成することは反復的なプロセスです。図が有用かつ正確なまま保つために、以下の構造ルールに従ってください。
プロセスを低レベルに分解する際、入力と出力は一貫性を保たなければなりません。親プロセスが「注文データ」を受け取る場合、子プロセスはその同じ「注文データ」を総合的に処理しなければなりません。データをゼロから生成したり、破壊したりすることはできません。
一貫性が鍵です。すべての構成要素に対して標準化された名前付け規則を使用してください。組織内で普遍的に理解されている場合を除き、略語を避けてください。ある図で「Invoice」とラベル付けされたデータフローが、別の図で「Bill」とラベル付けされないことを確認してください。
一般的な誤りは、制御論理(if/else)をDFDに混入することです。DFDはデータの移動を示すものであり、意思決定の論理ではありません。制御論理には決定表やフローチャートを使用してください。DFDでは、決定ポイントは入力に基づいて異なるデータフローを出力するプロセスによって表現されます。
データストアは、新規作成またはアーカイブでない限り、入力と出力の両方を持つ必要があります。データを受け入れるだけのストアはブラックホールです。データを提供するだけのストアは奇跡(何もないところからの創造)です。両方ともシステム論理に反します。
経験豊富なモデラーでさえ誤りを犯します。これらの一般的な落とし穴を確認することで、分析フェーズでの時間を節約できます。
5つの要素を現実のシナリオに適用してみましょう。簡略化されたオンライン注文システムを想像してください。
DFDは孤立して存在するものではありません。しばしば他のモデリング手法と補完し合います。
データフローダイアグラムが価値を提供することを確実にするため、以下の原則を心に留めてください。
これらの5つの要素を厳密に適用し、構造的なルールに従うことで、システム開発の堅実なブループリントを作成できます。この明確さにより、曖昧さが減少し、再作業が最小限に抑えられ、最終的な実装が意図されたデータアーキテクチャと一致することを保証します。
思い出してください。DFDは生きている文書です。要件が変化するたびに、図はシステムの新しい現実を反映するために進化しなければなりません。図と併せてデータ辞書を定期的にメンテナンスすることは、成熟した分析プロセスの特徴です。