« トヨタ主任技術者の過労死報道 | トップページ | 検証と証明 »

2008年7月22日 (火)

フローチャート不要論

を主張する人の、フローチャートの定義がいまいちよくわからなかったりしますが。

フローチャートというのは、状態遷移図の一種ですよね。この場合、プログラムカウンタ、あるいは、それを抽象化したものが状態変数になっていて、現在実行中のプログラムの「位置」が代わるごとに、状態が遷移していく様子を図式化したものだと思います。

フローチャートというのは、バッチ入力のコンピュータ・プログラムを記述するために、状態遷移図を「カスタマイズ」したのでしょうね。プローチャートと一言にいっても、実際には色々な形式があるようですが、基本的には、バッチ型の単純な逐次実行で行なわれる処理を記述するものだと思います。

フローチャートというのが、オンラインが主流の現在では、時代おくれなのは確かでしょうね。結局、イベント駆動型の非同期処理やら、並列処理やらを記述する必要性が出てきて、再び「ただの」状態遷移図へとかえったとみるべきかと。

とはいえ、バッチ的な処理がなくなったわけでもありませんので、そうした場合には、フローチャートは使いますけどね。フローチャート的な状態遷移図といったほうが良いかもしれませんけど。一種類のボックスと線しかなかったりしますから。

入力データチェックのシーケンスを書くことが、一番多いですかね。 x < a なら、 エラーXXX で、そうでなければ、 y < b をチェックして、等と延々と連なっているような処理。こうした処理では、チェックの順番が意味を持つことは多いですから、フローチャートですと表現しやすいですね。

ちなみに、状態遷移図といいますか、状態マシン/オートマトンは、近年、なかなか面白い展開を見せていて、モデル検査という分野に発展しているようです。2つ以上の異なるプロセスを表現したオートマトンを、「掛け合わせ」て、ひとつの巨大なオートマトンを作り、この全ての状態遷移をチェックすることで、デッドロック等の並列処理のバグを見つけ出そうというもの。2007年の ACM チューリング賞は、この分野の研究者が受賞していますね。


SPINモデル検査―検証モデリング技法 Book SPINモデル検査―検証モデリング技法

著者:中島 震
販売元:近代科学社
Amazon.co.jpで詳細を確認する


|

« トヨタ主任技術者の過労死報道 | トップページ | 検証と証明 »

コメント

フローチャートは手続きを記述するもので、「状態遷移図の一種」とはとても言えないでしょう。状態遷移図ならば、Xの値が1の状態から2の状態へ変化する、といったように状態が明示されます。フローチャートでは、Xを1ふやす、といったように状態の変化は明示されません。フローチャートでは、Xの値が1の状態から2の状態への変化も、Xの値が100の状態から101の状態への変化も、「Xを1ふやす」と同じものとして記述されてしまいます。

投稿: suikyojin | 2008年7月24日 (木) 04時49分

suikyojin さん、コメントありがとうございます。

>状態遷移図ならば、Xの値が1の状態から2の状態へ変化する、といったように状態が明示されます。

ここでの X は何を意味しているのでしょうか?
フローチャートの場合、プログラム・カウンタ(PCレジスタ)を状態変数 X とすると、「Xの値が1の状態から2の状態へ変化する、といったように状態が明示され」ていますよね。

私は、状態遷移図で、何を状態変数にするか、というのは自由に選べるものと考えています。

投稿: ron | 2008年7月24日 (木) 22時56分

何を状態変数にするかが自由に選べるとしたら、変化しないものを状態変数にして、「状態は変化しない」とすることも自由ということになります。何を状態変数にするかが自由に選べるというのは、ビジネスの一部としてやっている場合にはありえないでしょう。

投稿: suikyojin | 2008年7月25日 (金) 06時05分

suikyojin さん。

>何を状態変数にするかが自由に選べるというのは、ビジネスの一部としてやっている場合にはありえないでしょう。

何を状態変数にするかが、決まっているというのであれば、それが具体的に何なのかを教えていただけますか。また、フローチャートの場合に、プログラムカウンタを状態変数とするのが駄目な理由は何でしょう?

投稿: ron | 2008年7月25日 (金) 23時08分

何を状態変数にするかが決まっている、と言っているのではなく、自由には選べない、制約があると言っているだけです。
プログラムカウンタが状態変数だとしたら、ループでは、状態が元に戻るということになりますが、状態が元に戻るとしたら、ループからの脱出条件が表せないでしょう。

投稿: suikyojin | 2008年8月 3日 (日) 07時15分

suikyojin さん。

>状態が元に戻るとしたら、ループからの脱出条件が表せないでしょう。

状態遷移図で、「次の遷移」がただ1つである必要はないですよね。
条件によって遷移先が変わる、というのは、普通に書き表せると思いますが。
(脱出条件はこの場合、汎用レジスタの入力/出力になる)

レジスタ・マシン(ランダム・アクセス・マシン)-> チューリング・マシン(有限状態マシン) であることの証明(レジスタ・マシンがチューリング完全であることの一部分)は、計算機科学者によってなされています。よって、「何々ができない(書き表せない)」という反論の方向は見込みがないと思いますよ。

投稿: ron | 2008年8月 4日 (月) 00時28分

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/80472/22460164

この記事へのトラックバック一覧です: フローチャート不要論:

« トヨタ主任技術者の過労死報道 | トップページ | 検証と証明 »