システムアーキテクト 開発技術

DFDとは?使い方を解説!

2021年3月18日

DFD」、何だかプロレスの技みたいで強そうですが、そうではなく、システム用語です。

DFDはシステムの設計や業務フローの分析に使うための図になります。今回はこのDFDの定義と使い方に関して解説してきます!

 

業務のモデル化

システム開発における手順で、先ずはシステム化しようと考えている業務の流れ(フロー)や、取り扱う情報や、その関係性を分かり易く表現することは非常に重要です。
この作業によって、システム開発の関係者が何をどう作るのか理解したり、共有したりすることが可能となります。

この業務の流れや情報関係性を分かり易くする作業を「業務のモデル化」と呼びます。

業務のモデル化は図で表現することが多いです。DFDその方法の一つです。業務のモデル化には他にデータ構造を表現するER図(イーアール図)だったり、状態遷移図などがありますので、こちらは以下の記事を参照してみてください。

 

DFDとは?

それでは、DFDに関しての解説に入りましょう。

DFDは「Data Flow Diagram(データフローダイアグラム)」の略で、データの流れに着目して、対象業務を分析する時に利用する図解手法となります。

データの流れ(データフロー)と、データを処理するプロセスを図にすることで、業務内容を確認し易いというメリットがあります。DFDは処理のタイミング(順番)など時間的な表現できませんので、その辺はシーケンス図などで表現していく必要があります。

DFDはプロセスを中心に以下の4つの記号を使って表現します。4種類だけなので、シンプルで使い易いですね。

DFDで使う4つの記号
DFD記号
  1. プロセス
    入力データに対して何かの処理を施し、データを出力します。プロセスには必ず入力と出力のデータフローが存在します。

  2. データフロー
    他の部品間でのデータの移動経路を矢印で表したものになります。

  3. データストア
    データの保管場所
    となります。データベースに限らず、ファイルや帳票などのデータを保管する媒体全体を指します。

  4. 外部実体
    システム外に存在し、データを入力する作業者や、出力する媒体、外部システムなどを指します。

DFDの構成要素を図で表すと以下のようになりますね。

DFDのイメージ

 

DFDの使い方

DFDの定義が分かったところで、実際の使い方を解説します。

と言っても、4つの構造化設計のための記号を使って、具体的な業務を表現するだけなので、「こうすべき!」という使い方がある訳ではありません。

基本的にはプロセスを中心に作っていくので、先ずはどんなデータ処理があるのかを洗い出し、そのデータ処理に必要なデータとして、データストアや外部実体を用意していきます。そして、最終的に、それらのパーツをデータフローで繋いでいく、といった流れになるかと思います。

販売管理システムにおけるDFDを以下に記載してみました。

DFDのサンプル(販売管理)

また、DFDは構造化設計手法の一環なので、一つ作って終わりというわけではありません。そのために、次の二つの方法を用いて、段階的に複数のDFDを作成します。

Ⅰ.段階別詳細化(トップダウンアプローチ)

最初にシステム全体のDFDを作成し、それぞれのプロセスを別のDFDに詳細化して記述していきます。それぞれのプロセスが一つのモジュールになるまで、詳細化を繰り返して行っていきます。

上からどんどん下に階層を掘り下げていく感じですね。

 

Ⅱ.新物理モデルの作成

既存のシステムや業務を新しいシステムとして作る場合に、現状の業務を洗い出します。これを①現物理モデルとします。

次に現物理モデルを抽象化して②現論理モデルとし、そこから新しくイメージして③新論理モデルを抽象化されたものとして作成し、最終的に、具体的な業務に落とし込んだ④新物理モデルを作成します。

また、現行業務で使用されているすべてのデータ項目を抽出して、データディクショナリに登録しておきます。

DFDの作成手順としては以下のようになりますね。

新物理モデル作成の流れ

①現物理モデル → ②現論理モデル → ③新論理モデル → ④新物理モデル

 

まとめ

今回はシステムを作る際に業務を分かり易い図に表す手法としてDFDを解説しました。

DFDを使うことで、業務の流れを関係者が共有でき、認識ズレの無いシステムを構築できるので、要件定義工程などにおいて上手に使っていくことがポイントですね。

ルールもシンプルなので、どんどん作っていけるところも良いですね。

自分の私生活のルーティンもDFD化すると面白いかもですね。

以上です!

-システムアーキテクト, 開発技術