データフロー図(DFD)の書き方|レベル分けの考え方と記号
システムの資料にDFDが出てきたものの、フローチャートとの違いが分からない。あるいは自分で描こうとして、どこまで細かく分ければよいか迷う。DFDは記号が4つしかない単純な図ですが、レベル分けという独特の考え方があります。この記事では、記号の意味とレベル分けの原則を整理します。
DFDとは|データの流れを示す図
DFD(Data Flow Diagram、データフロー図)は、システムの中をデータがどう流れるかを表した図です。どこからデータが入り、何によって加工され、どこに保管され、どこへ出ていくかを示します。
フローチャートとの決定的な違いは、時間の概念がないことです。フローチャートが「次に何をするか」という順序を表すのに対し、DFDは「データがどこへ動くか」という関係だけを表します。分岐や繰り返しは描きません。
何のために使うのか
主な用途は、システムの全体像を関係者で共有することです。特に、既存のシステムを刷新するときや、複数のシステムをつなぐときに効果があります。
「この情報はどこから来ているのか」「なぜ2箇所で同じデータを持っているのか」といった疑問は、DFDを描くと見えてきます。データの重複や、誰も使っていない出力に気づく機会にもなります。
4つの記号
DFDの構成要素は4つだけです。記号の形は流儀によって多少違いますが、意味は共通しています。
プロセス(円または角丸四角)
データに何らかの加工を加える処理を表します。「受注を登録する」「請求金額を計算する」といった、動詞で終わる形で書きます。
重要な原則が1つあります。プロセスには必ず入力と出力の両方があることです。入力だけで出力がないプロセス、出力だけで入力がないプロセスは、描き間違いです。
データストア(平行な2本線)
データが保管される場所です。データベースのテーブル、ファイル、紙の台帳などが該当します。上下を線で挟んだ形か、右端の開いた長方形で描きます。
データストアは自分では何もしません。プロセスが書き込み、プロセスが読み出すだけです。データストアから直接別のデータストアへ矢印を引くことはできません。
外部エンティティ(四角)
システムの外側にいて、データをやり取りする相手です。顧客、取引先、他部署、外部サービスなどが入ります。
ここを決めることが、実はDFDを描く上で最も重要な判断になります。どこまでを自分たちのシステムとみなすかが、図の範囲を決めるからです。
データフロー(矢印)
データが動く向きを表します。矢印の上には、何のデータが流れているかを必ず書きます。「注文データ」「顧客情報」「在庫数」といった名詞です。
名前のない矢印は、DFDでは意味を持ちません。何が流れているか書けない矢印は、そもそも必要ない可能性があります。
レベル分けの考え方
DFDの特徴であり、最も分かりにくい部分です。1枚の図にすべてを詰め込まず、粗い図から細かい図へと段階的に展開していきます。
コンテキストダイアグラム
最も粗い、1枚目の図です。システム全体を1つのプロセスとして描き、その周りに外部エンティティを配置します。
この図で示すのは、システムの境界だけです。誰とデータをやり取りするのか、何が入って何が出ていくのか。データストアは描きません。
単純すぎて省略したくなりますが、ここを飛ばすと範囲が曖昧なまま細部に入ることになります。
レベル0
コンテキストダイアグラムの中身を開いた図です。1つだったプロセスを、主要な機能に分解します。ここで初めてデータストアが登場します。
プロセスの数は、5から7個程度が目安です。10を超えると読みにくくなり、3以下だと分解の意味が薄くなります。
レベル1以降
レベル0の各プロセスを、さらに開いた図です。プロセス番号1を開いた図がレベル1の図となり、必要ならさらにレベル2へと進みます。
どこまで展開するかの基準は、それ以上分解しても意味がなくなったところです。実務では、レベル1か2で止まることがほとんどです。
バランスの原則
レベル分けで最も重要な決まりごとです。上位の図と下位の図で、出入りするデータが一致していなければなりません。
具体的には、レベル0のプロセス1に3本の矢印が出入りしているなら、それを開いたレベル1の図でも、外側との矢印は同じ3本でなければなりません。
下位の図を描いているうちに新しいデータのやり取りが必要だと気づくことがあります。そのときは、上位の図も直してください。片方だけ直した状態が、DFDが信用されなくなる典型的な原因です。
作成手順
- 外部エンティティを決める:誰とデータをやり取りするか。ここがシステムの境界になります
- 出入りするデータを書き出す:各相手から何が来て、何を返すかを名詞で並べます
- コンテキストダイアグラムを描く:ここまでを1枚にまとめます
- 主要な機能に分解する:5から7個のプロセスに分け、データストアを配置します
- 必要な範囲だけ展開する:全プロセスを均等に展開する必要はありません
5つ目が実務的なポイントです。複雑な部分だけレベル2まで展開し、単純な部分はレベル0で止める。均等に展開しようとすると、労力の割に得るものが少なくなります。
よくある描き間違い
- データストア同士を直接つなぐ:間に必ずプロセスが必要です。データは自分では動きません
- 外部エンティティ同士をつなぐ:システムの外での出来事は、この図の対象外です
- 入力のないプロセスを描く:何もないところからデータは生まれません
- 分岐や条件を描く:DFDに制御の概念はありません。それはフローチャートの役目です
4つ目が最も多い間違いです。フローチャートに慣れていると、つい判断のひし形を描きたくなります。DFDでは、条件によって流れが変わる場合も、単に複数の矢印として描きます。
よくある質問
Q. フローチャートとどう使い分けますか
見たいものが違います。データがどこにあり、どう動くかを整理したいならDFD。作業の順番と分岐を示したいならフローチャートです。システム開発では両方作ることも珍しくありません。
Q. ER図との関係は
補完関係にあります。ER図がデータの構造を示すのに対し、DFDはそのデータがどう動くかを示します。DFDのデータストアが、ER図のエンティティに対応することが多くなります。
Q. 発注者も理解しておくべきですか
描ける必要はありませんが、読めると役に立ちます。特にコンテキストダイアグラムは、システムの範囲を確認する資料として有効です。「この相手とのやり取りが抜けている」といった指摘は、発注者側でないとできません。
Q. 現行システムがない場合も描けますか
描けます。新規構築の場合は、あるべき姿としてのDFDを描きます。既存システムがある場合は、現状のDFDと新しいDFDを両方作り、差分を確認する進め方が有効です。
図を描いたあとに残る仕事
DFDが示すのは、データの流れという構造だけです。それをいつまでに、誰が実装するのかは表せません。設計が固まったら、次はそれを日程と担当に落とす作業が残ります。
Xtrategyでは、施策のスケジュールと予算・KPIを同一画面で管理できます。
まとめ
- DFDはデータの流れを示す図。フローチャートと違い、時間や分岐の概念はない
- 記号は4つ。プロセス・データストア・外部エンティティ・データフロー
- コンテキストダイアグラムから始めて、レベル0、レベル1と段階的に展開する
- 上位と下位で、出入りするデータは必ず一致させる
- 全プロセスを均等に展開せず、複雑な部分だけ深く掘る
- データストア同士、外部エンティティ同士を直接つながない
DFDは記号が少なく、覚えることはわずかです。難しく感じるのはレベル分けの部分ですが、これも「粗い図から始めて、必要なところだけ開く」と考えれば単純です。まずは外部エンティティを挙げて、コンテキストダイアグラムを1枚描くところから始めてみてください。