DFDとは

以下は当記事に関連する動画です。本動画に関連する動画はすべてニコニコチャンネルにて閲覧可能です。
https://ch.nicovideo.jp/ai-light

1.DFDとは

それでは、今回はDFDについて解説をさせていただきたいと思います。「DFD」とは「データフローダイアグラム」の略称です。

データフローは、日本語で言うと「データの流れ」を表します。ダイアグラムとは「図」のことですから、「データフローダイアグラム」とはデータの流れ図ということになります。「データの流れ図」を表すにはどのようにしたらよいでしょうか。主に2つのことに注意して記載していけばよいかと思います。1つは先ほど言いましたデータがどう流れているか、つまりは処理がどう流れているかということを明らかにすることと、もう1つは処理中にどういうデータを扱っているか、ということを明らかにしていきます。

ちなみに下記の資料は「自治体CIO育成研修」という資料から抜粋させていただきました。


出典:http://www.soumu.go.jp/main_sosiki/joho_tsusin/top/local_support/pdf/cio_text_ps_2-1.pdf

ちなみに、システム開発と一言で言っても、いろいろなシステム開発があります。システム開発の中でいうと、業務システムの開発という案件は結構多いかと思います。業務システムというのは例えば、販売管理とか会計など会社の業務で使用される管理システムをいいます。そういった業務管理システムを開発していくポイントは、そもそも会社にたくさんあるデータをどのように整理し、関連付けていくかということです。そのため、業務管理システムを制作する前提に立った場合、データフローダイアグラムが大変有効になるわけです。

ということで、データフローダイアグラムを使用してシステム設計を行って行く場合、対象となるシステムは業務システムの開発を念頭に置いていただければと思います。

例えば、業務の中では発注データとか受注データなど様々な大量のデータを使います。データフローダイアグラムでは、それらのデータをどう整理するか、ということと、データがどう流れていくか、に着目することによって、システムを整理していこうというわけです。この2つが把握できると処理の内容もはっきりしてきます。

下図の通り、「業務モデリング」の手法の中で、DFDとER図というのがあります。DFDというのは主に業務の流れを整理するために使用するツールです。


出典:http://www.soumu.go.jp/main_sosiki/joho_tsusin/top/local_support/pdf/cio_text_ps_2-1.pdf

データの流れについて記載したものがDFDでしたが、ER図というのはデータ構造を規定したものです。ER図に基づいてテーブルが設計され、最終的にデータベースになると言うと解かりやすいのかもしれません。つまり、データベースの設計がER図に該当するのですが、プログラミングの設計がDFDに該当します。かつてはDFDとER図というのを組み合わせでシステム設計を行ってきました。かつてはというのは、UMLが出てくる前の話です。ただし、今もDFDとかER図は、よく使われている手法かと思います。

2.フローチャートとDFD

処理の手順と言ったときに一番最初に思い浮かべるのはフローチャートかもしれません。


出典:https://ferret-plus.com/7102

システムの勉強をされている方はフローチャートという言葉は聞かれたことがあるかと思います。フローチャートとは処理の手続きを記載したものです。フローチャートは、まさにプログラミングの前段階で記載するものであり、プログラム制作に直結する資料です。DFDはフローチャートを作成するよりも、もう少し前段階で作成されます。DFDの作成事例を下図に記載します。下図は、人事給与業務について記載した例です。


出典:http://www.soumu.go.jp/main_sosiki/joho_tsusin/top/local_support/pdf/cio_text_ps_2-1.pdf

上図のレベル0の段階ではかなり大まかな流れとして処理を記載しています。レベル0段階では「給与の支払い」という1つの処理(1つの丸)であったものを、次のレベル1では「給与の支払い」の流れについて記載しています。さらにレベル1では「退職金の支払い」という1つの処理(1つの丸)として記載したものをブレイクダウンして、レベル2では「退職金の支払い」の流れについて記載しています。一般的にシステム開発は大規模なものですから、いきなりフローチャートのような詳細なレベルから設計書を記載することは出来ません。上図のように全体の概要から少しずつ詳細な内容にブレイクダウンしながら、処理の内容を把握していくわけです。

これはシステム開発に限らないことかと思います。割と大規模なものを考えていく場合には、いきなり細かいことを考えることってできないですよね。つまり、大きなものをまず大きく分けて、更にそれを分けていってという作業を繰り返しながら、細かく内容を細分化していくわけです。細分化されたものはシンプルな内容となりますので、シンプルな内容の集合体として全体を捉えると大規模で複雑なものも理解できるようになるわけです。

DFDというのは「こんなもの作りたいです」っていうのをまさにモデル化したものであって、それをさらにブレイクダウンしていった結果としてフローチャートがあって、フローチャートが出来上がってから製造工程(プログラミング工程)に移ってくるというような感じです。

3.開発プロセスの中でのDFDの位置づけ

開発プロセスというのには実に色々なものがありますけれど、古典的なものとしましては「ウォーターフォール型のシステム開発」というのがあります。

ウォーターフォール型を古典的と記載してしまいますと、さも役立たないと思われるかもしれません。実際ウォーターフォールそのもの自体を開発プロセスとして今も採用しているという企業は、ひょっとすると少ないかもしれません。ただ、システム開発という大規模なものを作っていくという中では、ウォーターフォールという考え方が大前提になっていることが多いです。つまり、先ほど申し上げた通り、かなり複雑で大規模なものをいきなり細かいレベルまで落とせないので、要件定義から始まって外部設計、内部設計、開発といったように機能をブレイクダウンさせながら詳細な内容を明らかにしていきます。

ちなみに、開発プロセス内で言うとDFDは主に外部設計段階を中心として、その前段階である要件定義などから使用されます。いわゆる上流工程で使用されるツールです。上流工程というのは要件定義に近い段階のことです。つまり、上流工程で利用するのがこのDFDであり、DFDをブレイクダウンして詳細化したものがフローチャートとなります。

フローチャートとDFDの違いは何でしょうか。フローチャートというのは3つの機能で成り立っています。1つ目は下図の通り順序を示すものです。2つ目は判別です。例えば「刺身がある」という条件に対してYesかNoの場合で処理内容が異なってきています。


出典:https://ferret-plus.com/7102

もう1つ上図の中にはありませんが、下図に示すようなループ処理(繰り返し処理)があります。

出典:https://ferret-plus.com/7102

プログラム言語を勉強されている方は変数の定義などプログラム言語に関する様々なことを勉強されていることと思います。しかし、プログラム言語を処理の流れと捉えると上記で説明した3つの機能に着目するだけでよいのです。その3つの機能とは、1つ目が処理の順序であり、2つ目は処理の選択、判別であり、3つ目が繰り返し条件ががどうなっているかです。この3つが明確になればプログラムの処理が書けます。変数の定義などに関しては、どちらかというとルール的な内容になります。

余談になりますけど、プログラムを勉強するときにプログラムの決まりごとのことは、ある程度、分かっていないとプログラムは組めないかもしれません。しかし、決まりごとの方に意識が集中しすぎると、プログラムの本質である処理の流れを理解するということがおろそかになってしまいがちです。処理の流れを理解するのがまさにフローチャートを書くことであって、フローチャートとは先ほど言いました3つの要素、順序であり、判別であり、ループ(繰り返し)、によって処理を表現することです。

プログラムを書いたり読んだりするときにはこの3つの要素を意識すると処理の流れがよくわかるようになるのではないかと思います。フローチャートはプログラミングの前段階で作成し、3つの要素で処理を組み立てます。一方、データフローダイアグラムはその処理の流れ(順序)を書いているだけなので、フローチャートと比べるとかなりアバウトです。しかし、DFDはまだ、処理が詳細になっていない段階である上流工程で活用するもので、その目的は処理を大まかに捉えることにあります。つまり、下図の通り処理A-1があって、次に処理A-2を行い、最後にA-3を行うといったように、処理の大きな流れを書いていくのがDFD役割です。


出典:http://www.soumu.go.jp/main_sosiki/joho_tsusin/top/local_support/pdf/cio_text_ps_2-1.pdf


弊社は、主に中小企業様向けの業務システム開発ホームページ制作パソコンサポートコンサルティングなど、ITに関する様々なサービスを格安で提供しております。
特に小規模な業務システム開発の分野では、主にAccess(アクセス)を利用した柔軟で効率的な開発を得意としており、関西でダントツの実績があります。

業務システム開発に関しては、以下のような内容で対応しております。
・顧客管理などの単機能なシステムは20万円~50万円が多い。
・受注から入金まで業務全体システムで100万円~350万円ぐらいが多い。
・Access(アクセス)-SQLserverで大規模システム開発は350万円~1500万円が多い。

詳細は、Access(アクセス)、Excel(エクセル)、WEBサイト製作による小規模システム開発のページをご参考ください。

大阪商工会議所からの推薦を受けて、中小企業庁運営の中小企業支援事業に専門家として登録されました。
通称ミラサポ。3回まで無料でのコンサルティングが可能です。ご興味がある方はご連絡ください。
https://www.mirasapo.jp/


(近畿大学にて非常勤講師も務めたバリバリの技術屋が経営する会社)

Access(アクセス)Excel(エクセル)SQL server バーコード Webシステムを使った業務システムのシステム開発の無料相談を受付中

株式会社 アイライト 担当:内藤 響(Naito Ko)
〒550-0005 大阪市西区西本町1丁目5番9号 日清ビル 5F
(四つ橋線 本町駅 24番出口すぐ)
まずは、メール・電話でご相談ください。
TEL : (06) 6599-8890 E-mail : info@ai-light.com
お電話が混んでいる場合が多いので、つながりにくい場合は
TEL : (06) 6535-5117までお願いします。


株式会社アイライト公式HP
https://www.ai-light.com/
(Access・Excelでシステム開発会社を探されている法人様はこちら)

Access・Excelに関する情報を掲載(Access・Excel倶楽部)
https://www.ai-light.com/accessclub/

ITでお困りのことがございましたら、まずはご相談(コンサルティング)
https://www.ai-light.com/itconsulting.html

格安ホームページ制作所
https://www.ai-light.com/hp2

YouTubeチャンネル(無料動画配信中)
https://www.youtube.com/user/ailightcom

ニコニコチャンネル(月額固定で見放題)
http://ch.nicovideo.jp/ai-light