ステキな一日

IT技術やトレンディな話題を中心に個人的なメモを書き綴っていきます。

データフロー図(Data Flow Diagram / DFD)とは

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

 

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

 

 

【広告】

 

DFDで使用される記号

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

 

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

f:id:werty852z:20180911204840j:plain

 

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

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

 

データの流れ

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

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

 

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

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

 

データストア

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

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

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

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

www.sutekina121.com

 

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

 

詳細はこちらの記事をご覧ください。
www.sutekina121.com

 

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

www.sutekina121.com

 

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

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

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

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

これらの情報をデータフロー図の中に直接記述することはできません。
代わりに、「データディクショナリー」という別の台帳を用意して、そこに、データフロー名と関連がわかるようにして記述しておきます。これが、各プロセスへの入出力情報の詳細となります。CRUD図で記述しておいても良いかも知れません。

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

プロセスは、データの変換を行います。入出力については前述のデータディクショナリーに定義しましたので、プロセスではその入力をどのように変換して出力にするのかを「ミニ仕様書」に定義します。デマルコは構造化言語で定義する事を提案していますが、日本語の場合は、私は少し扱い辛いように思います。

 

www.sutekina121.com

 

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

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

これについては、以下の記事を参考にしてください。

 

www.sutekina121.com

 

以上、「データフロー図(Data Flow Diagram / DFD)とは」でした。

【広告】