DFDとは何か?データフロー図の基礎知識を解説

※本記事ではアフィリエイト広告を利用しています

データフロー図(Data Flow Diagram / DFD)とは、システムをネットワーク図で表現したもので、単純な概念図はもちろん、レベルを深く掘り下げて詳細な処理方法までを分析することができる図形による分析手法です。

既存のシステム(手作業を含む)を分析し、そこから新しいシステムモデルをデザインするために使われる場面が多いでしょう。 そして、言葉に言い表すことが難しい事柄を、直感的に解りやすくする事ができるため、エンドユーザーとエンジニアとの対話ツールとしても有効です。

目次

DFDで使用される記号

DFDは、データの流れ(Flow)、データの変換(Process)、ファイル(Data store)、データの源泉と吸収(External entity)の4つの記号を使って表現されます。

トム・デマルコ式、ゲイン・サーソン式の2つの流儀があり、それぞれの記号の形が違っています。

f:id:werty852z:20180911204840j:plain

大きな違いとしては、データの変換(Process)が、トム・デマルコ式は、円形で表されますが、ゲイン・サーソン式の場合は角丸の四角形であらわされます。

利用する際は、どの流儀の記号を用いるのか決めておくようにします。

データの流れ

外部要素、プロセス、およびデータストア間でデータが通るルートを表します。

「請求明細」のような短いデータフロー名でラベル付けをします。

データの変換(プロセス)

データを変換してコンポーネント出力します。内部で計算を実行したり、ロジックに基づいてデータを加工したりします。

データストア

後で使用するための情報を保持するファイルやリポジトリ(データベーステーブルなど)。

データの源泉と吸収(外部要素)

外部組織や人、コンピュータシステムなどで、データを生み出したり(源泉)または受信(吸収)します。いいかえれば、この分析対象に出入りする情報の発信元と宛先です。ダイアグラムの端に描画します。

ここまでの内容は、以下の記事で詳しく説明をしています。

DFDの書き方

まずは外部要素から記述します

DFDを書き始めるには、まずは外部要素を記述してください。

f:id:werty852z:20180920225815j:plain

今回の分析対象の外側にあり、データの源泉または吸収をする要素になります。たとえば、得意先は「注文」データの源泉であり、「納品」データを吸収します。図の描画エリアの外側に配置します。

データの入出力を記述します

f:id:werty852z:20180920225833j:plain

たいへん大雑把ですが、真ん中にひとつだけプロセス要素を置いて、外部要素とのデータの入出力を記述してみました。

データフローやプロセスを追加する

上記の大雑把な図に、データフローやプロセスを追加していき、分割して修正を加えていきます。見づらいところがあれば、外部要素のコピーを配置して線が重ならないように記述していきます。(外部要素のコピーは右下に斜線を入れる)

f:id:werty852z:20180920225955j:plain

注意点:外部要素とデータストアは同じ図の中で、コピーしたものを複数配置できますが、データフローやプロセスはできません。

データフロー図の分割

どんどんデータフローやプロセスを追加したり、データストアも書き加えたりして、分割して細かくしていきます。

数が多くなりすぎたら、プロセスのレベルを1つ掘り下げて別のデータフロー図に分割していきます。たとえば、下の図であれば、「仕入」プロセスはここまでにしておき、仕入プロセスをさらに細かくした「レベル1」の図を別途作成します。

f:id:werty852z:20180920230129j:plain

上図のプロセス「仕入」を別にした図

f:id:werty852z:20180920231053j:plain

関連記事:

さらに、データフローとプロセスの命名には、重要なポイントがあります。これを知るのと知らないのとでは、分析結果にかなりの差がでますので、ぜひとも抑えておいてください。

関連記事:

データフローの詳細を分析して定義する

さて、データフロー図はシステム分析の強力なツールのひとつですが、ここに記載したデータフローの詳細を、きちんと分析して定義しておく必要があることに気づきましたでしょうか?

たとえば、「発注」の一言で表しているデータフローは、実際の業務では、たとえば以下のような情報が含まれているでしょう。

  1. 仕入先名
  2. 品名
  3. 数量
  4. 金額
  5. 納期
  6. 納品場所
  7. 支払い条件

これらの情報をデータフロー図の中に直接記述することはできません。代わりに、「データディクショナリー」という別の台帳を用意して、そこに、データフロー名と関連がわかるようにして記述しておきます。

これが、各プロセスへの入出力情報の詳細となります。CRUD図で記述しておいても良いかも知れません。

プロセスの詳細を分析して定義する

プロセスは、データの変換を行います。入出力については前述のデータディクショナリーに定義しましたので、プロセスではその入力をどのように変換して出力にするのかを「ミニ仕様書」に定義します。

デマルコは構造化言語で定義する事を提案していますが、日本語の場合は、私は少し扱い辛いように思います。

関連記事:


複雑な条件にはデシジョンテーブルを使う

ミニ仕様書を記述する中で、複雑な条件を文章でそのまま表現しようとすると、分かりづらくなってしまいますので、デシジョンテーブルを使って視覚的に理解しやすいように整理します。

関連記事:


書籍の紹介

この記事で紹介しているDFDについては、考案者のトム・デマルコが書いた、「構造化分析とシステム仕様」という書籍の中で詳細な解説がされています。

きちんと学習したい方は、この書籍をお読みになる事をお勧めします。

created by Rinker
¥1,977 (2023/10/04 16:40:20時点 Amazon調べ-詳細)
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次