« ハッピーハッキングキーボード | トップページ | なんで借金までするかなぁ? »

フローチャートは嫌い

私はフローチャートが嫌いなんですが、その理由がなかなか人にうまく説明できません。というわけで WEB等を調べつつ、自分の考えも混ぜて フローチャートの問題点をまとめてみました。

まず、フローチャートは、アルゴリズムやプログラムを分かりやすくするための図です。
これがよく使われる理由は、とにかく「書きやすい」点につきます。
これがフローチャートの最大の長所ですね。

そして、プログラムやアルゴリズムが さらに見やすくなります。
まぁ、この長所は対象プログラム アルゴリズムが簡単な場合限定ですが。

…長所はこれだけです。

次に欠点を並べていきます。

欠点1:細分化が苦手

ソフトウェア設計で重要なことは、複雑なものを如何に簡単にわかりやすくできるかという点です。ここを重要視することで 設計フェーズで作りこむバグを減らすことができます。

簡単化を行ううえでの 基本的な作業が機能の細分化です。
巨大な処理や複雑な処理を一気に考えるのは難しいので 小さい単位に分割して 小さい単位ごとに検討するようにします。

たとえばC言語の場合、複雑な処理を簡単に表現するために、ある程度まとまりのある部分をまとめること(関数化)を行います。これを繰り返すこと、つまり「複雑→細分化」はプログラムを作成する上で基本です。

しかし、フローチャートはまとまりや関連のある処理群をまとめること すなわち細分化が苦手です。複雑なものを複雑なまま表現できてしまいますので、特に新人等プログラム初心者にフローを書かせるととんでもなくわけのわからないものを書いてしまったりします。

欠点2:読みにくい

フローチャートを読もうと思うと 先頭から順に追っていかなければいけません。
また、全体的に何をしているのか?というのが非常に把握しにくい性質も持っています。

長いフローチャートになるともうお手上げです。

欠点3:同じものを異なる書き方で書ける

これは自由度が高いための欠点なんですが 同じアルゴリズムでもぜんぜん異なる書き方ができてしまいます。人によって同じものが異なる表現になるということは 本来のフローチャートの目的がプログラムやアルゴリズムをわかりやすくすることであるにもかかわらず、かえって わかりにくくしてしまうということです。

フローチャートはこの性質のため、メイン処理や正常系処理 を把握するのが難しい という欠点を持ちます。(たとえば分岐を含んだフローの場合、どの処理が正常系で、どの処理が異常系なのか等)

欠点4:メンテナンス性が悪い

これは言うまでもありません。
ソースコードを修正した場合に、ドキュメントまで修正するのはたいへんです。
その結果、ドキュメントが修正されなくなり、いつの間にか実際のソースコードと乖離した役に立たないドキュメントが生まれてしまいます。

まとめ:

フローチャートを書く最大の目的は、プログラムやアルゴリズムを図にすることでわかりやすくすることです。複雑なものを簡単に表現したいというのが、フローチャートを表現する目的であるはずです。

であるにもかかわらず、複雑なものを複雑なまま表現してしまう、要するに 複雑なものがわかりにくいという短所をフローチャートは持っています。

つまり、複雑なものを簡単にするのがフローチャートの目的であるにもかかわらず、複雑になればなるほどわかりにくくなるというフローチャートの性質は 本来の目的とは逆の性質を持っています。

そんなわけで、私はフローチャートが嫌いです。

|

« ハッピーハッキングキーボード | トップページ | なんで借金までするかなぁ? »

「ソフトウェア」カテゴリの記事

コメント

コメントを書く



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




トラックバック

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

この記事へのトラックバック一覧です: フローチャートは嫌い:

« ハッピーハッキングキーボード | トップページ | なんで借金までするかなぁ? »