最近、業務をまとめたシートと、入出力についてまとめたシートをつかって、DOA,オブジェクト指向の各種の図やシナリオ、テストデータやプログラムに展開する話を書いています。
今回はDFD(データフローダイアグラム)について書きます。
■まず、DFDとは、なにか?
DFD(データフローダイアグラム)は、デマルコによって提唱されたもので、
構造化分析とシステム仕様という本に詳しく書かれています(この本自体は、古典として有名)。
で、この図は、国のEAでも「機能情報関連図」として、描くものになっています。
実際、そのサンプルが、EAのページの
機能情報関連図(DFD):現状モデルの策定
http://www.meti.go.jp/policy/it_policy/ea/gainen/product/dfd/1.html
にあります。
そこの下のほうにある図がDFD(のサンプル)です。
ちなみに、システム全体と、外部とのやり取りを書いた、最上位のDFDを、コンテキストダイアグラムといいます。そして、DFDの終わりは、1枚の紙で機能を文章化できるくらいのレベルまで落とし込むとされます。この「1枚の紙で機能を文章化」されたものが、ミニスペックといいます。
で、結局、DFDは、なにを書くのか?っていうことになると、
ここ http://www.meti.go.jp/policy/it_policy/ea/gainen/product/dfd/5.html
にあるように、こんな種類のものを書きます(上記のデマルコの本の69ページ)。
データ源泉/データ吸収
四角の図形で描かれているものです。外部からのデータ入力がデータ源泉、外部へのデータ出力が、データ吸収になります。
プロセス
楕円で書いているものです
ファイル
二重線の中に文字を書いているものです。実際にはファイルだけでなく、DBも入ります。
永続性のあるデータってことです。
データフロー
矢印の線です。
■業務をまとめたシートからDFDを書くには?
では、以前書いた、業務をまとめたシートからDFDをかく方法についてです。
ここでは、とくに、受注を例にかんがえます。
(1)これから描こうとする業務のシートをあけて、内容の子アクティビティをチェック
受注シートをあけて、子アクティビティをチェック、この子アクティビティが、
プロセスとしてかかれます。
(2)子アクティビティは、プロセスですので、てきとーに楕円を書いて、
そこに、子アクティビティ名をいれて、プロセスの表記をしてください。
たとえば、受注の子アクティビティに、受注受付、受注票作成、とあったら、
受注受付のプロセスと、受注票作成のプロセスを書きます。
(3)(2)の子アクティビティのシートをひらいて、それぞれについて
入出力のところをみてください。
このの入力のうち、ファイルは、ファイル名.項目名となっているはずです。
DBは、テーブル名.項目名となっているはずです。
このうち、ファイル名の部分、テーブル名の部分を取り出し、
もし、まだ図にかかれていなかったら、
ファイルの二重線を描いて、
そこにファイル名(テーブル名)をかいて、
矢印の線(データフロー)を書きます(プロセス側に矢印がくる)
図に描かれていたら、
書かれているファイルのところから
矢印の線(データフロー)を書きます(プロセス側に矢印がくる)
出力も同様に、出力のところをみて、ファイル名を書いたり、データフローの
矢印を書きます(ファイル側に矢印がきます。つまり、矢印の方向が逆です)
もし、データフローにデータ項目を書く場合は、上記入出力のところの
テーブル名.項目名の、項目名のほうを書いてください。
上記の例だと、まず、「受注受付」の入出力をみて、入力に書かれているものの、
ファイル名、テーブル名を取り出して、ファイルとして書き、データフローを
いれます。項目名も必要なら、データフローに書いてください。
出力も同じことをします。
そのあと、「受注票作成」もみて、同じことをします。
(4)上記の入出力の入力のうち、ファイル入力以外の入力、つまり、画面入力は、
データ源泉にあたります。
その画面を入力する「人」など(画面自体ではありません。ちゃんと、
画面表示のアクティビティを書いていれば、その担当者にあたります)について、
四角形を書いて、データ源泉として、矢印を書きます
(プロセス側に矢印がきます)
入出力の出力のうち、ファイル以外、つまり、画面出力と帳票出力は、
データ吸収にあたります。
その画面や帳票を見る「人」など(画面・帳票自体ではありません。ちゃんと、
画面出力のアクティビティを書いていれば、その担当者にあたります)について、
四角形を書いて、データ吸収として、矢印を書きます
(四角形の吸収側に矢印がきます)
なお、項目名を書く場合、画面名、帳票名でOKの場合、項目まで書く場合、
いろいろあります。
先ほどの例だと、「受注受付」では、受注受付画面がこれにあたります。
この受注受付画面を入力する人(受注係の場合、お客様の場合と、考えられるが
実際に入力する人)を四角をかいて、データ源泉とする。
「受注票作成」では受注票を見る人(1人、1部署だけとは限らない)を、
データ吸収として、四角をかいて、そのあと、データフローを書く。
(5)「後のアクティビティ」のところをみて、あとのアクティビティに、データフロー
を書く(1つとは限らない)後のアクティビティ(プロセス)のほうに矢印が来る
先ほどの例だと、「受注受付」の「後のアクティビティ」に、「受注票作成」
と書いてあると思うので、「受注受付」から「受注票作成」にむけて矢印を
書く。
大体こんな感じでできると思います。
では、次は、また違う図で。。