ダメなデータフローダイアグラム(DFD)から学ぶ【DFDの原則】

DFDの書き方を間違えて上司に怒られたことが何度もある。

今後は間違えないよう、メモしておくので、書き方が分からない方は参考にして欲しいです。

(DFDは変な先入観を持っていると、正しく書けません)

すでにプログラム/スクリプトをある程度書ける人が、
後からにわかDFDを学習して分かった気になって、
私のように残念なDFDを書いてしまいがちである。

DFDの基本的な書き方は他のブログやIT系記事にゆずるとして、
やりがちがけどやってはいけないことをメインに書いておきたい。

原則1.DFDは1データの流れを表したものである。
(極論だが、以下のようなフローはあり得ない。)

dfd1

途中で別のデータに変わってしまっている。
変わるならば別のDFDとして2ページに分けて書き表わすべきである。

原則2.DFDの終点は必ず1つある。

dfd2

停止しないシステムを模して、動き続ける様子を書きたくなることがある。
だが、そもそもチューリングマシンには停止性がある。
データが計算されて別のデータとして結果が返るというのが基本である。
したがって終点を書かなければならない。

データフローダイアグラムは(フローという言葉が含まれているので明らかだが)フローチャートである。

フロー(滝)の先はdestivation(行き先)が決まっていて、1つの行き先に必ず行きつくということを意味する。

(つまり○○フローな図は必ず終点が1つでそこまでの流れが書かれているということ)ちなみに、あえて循環性を意図して伝えたいならば意図的に循環するDFDを書いてもよい。PDCAサイクルの図のようにループする循環型のシステムの方が、見た目や客受けがいいということもあろうだろう。だが、ジョブ遷移などのステータスが切り替わる、いわゆる状態遷移図と混同してフローチャートを書くことはよくないことを知っておくべきである。

ファッションにおいて、よくないことと知っていて着崩すのと着崩すことが本来の着方だと主張するのは雲泥の隔たりがある。コンピュータ雑誌によく書いてあるような抽象モデルを速読することに慣れている人は特に、注意したい誤りであると言えるだろう。

仕様書として意図を正しく伝えなければいけないという意味では。boolされるdestinationは、wikipediaのページで描かれているようなはっきりしとしたものにしたほうが、私は好きだ(てか、さんざ言ったけど、好みの問題と言えばそれまでだったりするのかも)が、フローは1つのところへ流れつくのが基本(と思う)。

原則3.DFDの始点は必ず1つある。

原則2のおさらい。

すでに、フローの原則は述べた。

源泉(source)は、目的地(destination)まで行く。

そして、源泉は1つ目的地も1つ終点が1つなら始点も1つ
(言葉を変えて、繰り返し説明した。混乱したらすみません。
 始点=スタート=源泉=入力
 終点=ゴール=目的地=出力
 すべて同じ意味だと考えていただいて間違いないです)

dfd3

×入力の無いプロセスCはありえない。
 (原則2のようなプロセスが別プロセスと直接矢印で結ばれるのはありえない)。
×プロセスから2つのデータを出力してはならない。

特定の処理をした結果出力が2つあるならば、論理的に別プロセスに分けること。
(または、individualな結果が1つではないか疑うこと!)

構造化分析を書いたデマルコの書籍を読めば一目瞭然なのだろうが(買ったけどまだ読んでいない)、あるデータがあるデータになって出てくるのが、そもそものプログラム(というかチューリングマシンの原理)である。それをプログラムソース上で正しくコーディングするためにもDFDは重要で必要なダイアグラムである。プログラムの機構に限らず人間界の論理的なシステムを個々に抜き出せばデータフローダイアグラムになるからだ。現実の構造化ということを正しく行うとはどういうことか?という疑問を提示してもいいだろう。

…というわけで、正しいDFDの書き方ではなく、誤ったDFDの書き方が分かれば、それなりに正しいDFDが書けるのではないでしょうか?ということのメモでした。

↓後は、とりあえずデマルコの名著をお勧めしておきます↓

(Visited 311 times, 1 visits today)
このエントリーをはてなブックマークに追加
このエントリーを Google ブックマーク に追加
[`yahoo` not found]
[`livedoor` not found]

コメントを残す

メールアドレスが公開されることはありません。

Time limit is exhausted. Please reload CAPTCHA.