FE EXAM

DFD(データフロー図)

データの流れに着目してシステムの処理を表す図。

INTERACTIVE VISUALIZATION
外部実体
プロセス
データストア
フェーズ
idle
要素数
0
データフロー数
0
シナリオ
ステップ1 / 8
STEP 1/8まだ何も描かれていないこれから「通販サイトの注文受付」をDFD(データフロー図=データの流れに着目してシステムの処理を表す図)で描いていきます。DFDはたった4種類の記号だけで描けます。1つずつ置いていきましょう。
▶ を押すと記号が1つずつ置かれます
解説

📌
DFDとは

顧客処理在庫

DFD(Data Flow Diagram=データフロー図)とは、データの流れに着目してシステムの処理を表す図のことです。「どこからどんなデータが来て、どう加工され、どこへ出ていくか」を矢印と記号だけで描きます。

身近な例で考えると、工場の生産ラインに似ています。材料(データ)が運ばれてきて、各工程(処理)で加工され、製品(結果)になって出荷される。その「モノの流れ」を「データの流れ」に置き換えたものがDFDです。

上のツールで▶ボタンを押すと、通販サイトの注文受付を題材に、記号を1つずつ置いてデータフローをつなぎ、1枚のDFDが完成していく流れを確認できます。

🔣
記号の意味

外部実体プロセスストアデータフロー

DFDで使う記号は、たった4種類だけです。これさえ覚えれば読み書きできます。

外部実体(四角形):システムの外側でデータをやり取りする相手。顧客や他システムなど
プロセス(円):データを加工・変換する処理。動詞で名前を付ける
データストア(上下を線で挟んだ形):データをためておく場所。データベースやファイル
データフロー(矢印):データの流れ。何が流れるかを矢印に書く

記法にはDeMarco系(プロセスが円)とGane & Sarson系(プロセスが角丸四角)がありますが、要素の意味は同じです。図の記号が少し違っても、表すものは「外部実体・処理・蓄積・流れ」の4つです。

✏️
描き方の手順

1.外部実体2.プロセス3.ストア4.フロー

DFDは次の順番で描くと迷いません。まず登場人物を置いてから、流れをつなぐイメージです。

① 外部実体を置く:システムと関わる相手(顧客・倉庫など)を四角形で配置
② プロセスを置く:システムが行う処理を円で配置し、番号と動詞名を付ける
③ データストアを置く:ためておくデータを置く
④ データフローでつなぐ:入力→処理→蓄積→出力の順に矢印を引き、データ名を書く

大事なルールは、外部実体どうし・データストアどうしを直接つながないこと。データは必ずプロセスを通って加工されます。また最初は全体を1つの円で表すコンテキストダイアグラムを描き、それを段階的に詳しく分解(階層化)していくのが基本です。上のツールで①〜④の順に組み上がる様子を確認してみてください。

📌
DFDとフローチャートは何が違うか

DFD顧客処理注文DBデータが「どこから来てどこへ行くか」を表すフローチャート注文を受け取る在庫あり?出荷処理「条件分岐・ループ」

DFDフローチャートは、どちらも「システムの処理を図で表す」ものですが、着目する点がまったく違います

DFD(データフロー図)「データが何処から来て何処へ行くか」(データの流れ)を表す。プログラムの内部ではなくシステム全体の構造を俯瞰するために使う
フローチャート「プログラムの実行手順・分岐・繰り返し(制御の流れ)」を表す。ひし形の分岐(Yes/No)やループを描く

なぜ2種類あるのか。システムを設計するには、まず「どんなデータがどう流れるか」という全体像を把握する必要があります(DFDの出番)。その後、各処理を「どの順番でどう実行するか」を細かく決めます(フローチャートの出番)。つまりDFDは「何をするか」の全体像、フローチャートは「どう実行するか」の詳細と役割が分かれているのです。

📌
なぜプロセスを必ず通るのか

OK(正しい)顧客処理DB外部 → 処理 → ストアデータが加工されながら流れるNG(禁止)顧客DB外部 → ストア(直接)処理なしでは接続できない外部実体同士 ✕ / データストア同士 ✕ / 外部実体⇔ストア直接 ✕

DFDには大事な接続ルールがあります。それは「外部実体どうし」「データストアどうし」「外部実体とデータストアを直接」つなぐことは禁止、という点です。データは必ずプロセス(処理)を通って流れなければなりません。

なぜプロセスを必ず通るのか。DFDは「システムが行う処理(加工)を図で表す」ためのものです。データが外部から来てそのままデータベースに入るだけなら、そこに処理は存在しません。処理のないシステムはシステムと呼べないからです。
外部実体同士を直接つなぐ:システムが関与しないやり取りになってしまう(システム外の話)
データストア同士を直接つなぐ:データが処理されずに移動するだけで、どんな変換が行われたか不明になる
外部実体からストアに直接つなぐ:入力データがそのまま格納されることになり、入力チェックや変換といった処理が消えてしまう

身近な例で考えると、お客さんが勝手に在庫棚に商品を入れるのが禁止なのと同じです。必ず「受付カウンター(プロセス)」を通って、スタッフが中身を確認してから棚に入れます。このルールを覚えておくと、DFDを読み書きするときに接続の正しさを判断できます。

練習問題

🎯
基本情報技術者 練習問題

Q1.DFD(データフロー図)が表現するものとして最も適切なものはどれか。
A.プログラムの内部のループや分岐の制御の流れ
B.システムにおけるデータの流れと処理(変換)
C.クラスとクラスの間の継承関係
D.ハードウェアの物理的な配線
Q2.DFDでデータをためておく場所(データベースやファイル)を表す記号はどれか。
A.円(プロセス)
B.四角形(外部実体)
C.上下を線で挟んだ形(データストア)
D.向きの付いた矢印(データフロー)
Q3.DFDのデータフロー(矢印)に必ず書くべきものはどれか。
A.そのデータが流れるのにかかる時間
B.流れるデータの名前
C.プロセスを実行するプログラミング言語
D.データを処理するCPUの種類

関連コンテンツ