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

データフローダイアグラムは、情報システム内を流れるデータの流れを図式化したものである。フローチャートとは異なり、制御論理や決定ポイントに注目するのではなく、データの移動に焦点を当てる。物理的な実装を抽象化し、情報の論理的な流れを示す。
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は生きている文書である。要件が変化するたびに、図はシステムの新しい現実を反映するために進化しなければならない。図と併せてデータ辞書を定期的にメンテナンスすることは、成熟した分析プロセスの特徴である。