フローチャート
[Wikipedia|▼Menu]
簡易なフローチャート これはsに1から10までの数字を足しこむ処理を表した図である。

フローチャート(flowchart, 流れ図)は、プロセスの各ステップを箱で表し、流れをそれらの箱の間の矢印で表すことで、アルゴリズムプロセスを表現する図である。アルゴリズムやプロセスについて、単にその順序だけを示すものであり、全体から詳細へというような「段階的」な説明ではない(ないし、記述者が意識してそのような階層を作る必要がある)[注釈 1]。また、データフロー図と対比すると、より重要であるデータの流れをフローチャートは表すことがなく、操作を順に示すことでデータの流れを暗示する。しかし、フローチャートは様々な分野の工程の解析・設計・文書化・管理に用いられている[1]
概要

フローチャートは複雑なプロセスやプログラムの設計および文書化に使われる。他の図と同様、何が行われているかを視覚化するのを助け、それによって見る者がプロセスを理解するのを助け、さらには欠陥・ボトルネック・細かい特徴などを発見できることもある。フローチャートには様々な種類があり、それぞれ固有の部品(箱)や記法を持つ。最も一般的な箱は次の2種類である。

処理ステップ、活動を表す箱。単純な四角形で表される。

判断。通常菱形で表される。

ページをいくつかに分割し、異なる組織の制御を異なるスイムレーン(英語版)に描く形のフローチャートは「部門間協力」型のプロセスを表せる。特定のレーンに描かれた部品群はその組織の制御下にあるプロセスを意味する。この技法は各活動の責任分担を明確化でき、意思決定を正しく行えるようにする効能がある。全体として一つのプロセス(事業、プロジェクトなど)を実施する際の各組織の責任を明確化できる。

プログラミング言語の教育においては、処理を理解するために用いられることがある(たとえば、for (i = 0; i < 10; ++i) という字面からだけでは、「繰返しの1回目では ++i は実行されない」「2回目からの繰返しの前に ++i と i < 10 の判定がこの順に行われる」といったことがわかりづらいため、そういったことを可視化するには適している)。事務処理においては、提出資料の様式として要求する者がいるため、使わざるをえないこともある。

問題解決においてフローチャートを作成する意味は、
問題解決の方法を視覚的に明確に表せる。

処理手順を追いやすい。そのため手順に問題がある時、それを発見・修正するのが容易になる。

問題解決を複数人数で行う時、担当箇所の明確化や、説明する際の理解向上に役立つ。

などがある。[2]

フローチャートはプロセスのある側面を描いたもので、他の側面は他のダイアグラムで補完される。例えば、石川馨品質管理の七つ道具として、グラフヒストグラムパレート図チェックシート管理図特性要因図散布図を挙げている。また、非形式的なモデリング言語としてUMLがあるが、数あるダイアグラムのうちのアクティビティ図はフローチャートのように制御フローを書くことに使うことができる。

いずれにしても、コンピュータ科学の観点からは、フローチャートは、コンピュータのプログラミングにおいて無条件と条件分岐の分岐命令goto文if文)だけを制御構造として使っているような「構造化以前の存在」、として扱われている。構造化をフローチャート(的な図法)に取り入れた試みについては、#構造化フローチャートの節を参照。
歴史フローチャート作図用のステンシルテンプレート

プロセスの流れを文書化する最初の構造化技法として「フロー・プロセス・チャート(英語版)」がある。1921年、アメリカ機械工学会 (ASME) の会員だったフランク・ギルブレスが “Process Charts?First Steps in Finding the One Best Way” と題して発表した。このツールは間もなく経営工学の教育に組み込まれた。1930年代に入ると、アラン・H・モーエセンという経営工学者がニューヨーク州レークプラシッドで経営工学のいくつかのツールをビジネスマン向けに教えるという仕事を始めた。

1944年にモーエセンのクラスを卒業したアート・スピナンジャーは、それらツール群をプロクター・アンド・ギャンブルに持ち帰り Deliberate Methods Change Program を開発した。同じく1944年に卒業したベン・S・グレアム(英語版)は Standard Register Industrial の帳票開発部門のディレクターで、フロー・プロセス・チャートを発展させ複数の文書間の関係を示すマルチフロー・プロセス・チャートを考案した[3]。1947年、ASMEはギルブレスのフロー・プロセス・チャートから部品群を採用したプロセスチャートのASME規格を策定した。

ダグラス・ハートリーは、ハーマン・ゴールドスタインジョン・フォン・ノイマンがコンピュータプログラム(当時のことであるから、機械語を直接人間が書く、というプログラミングであったことに留意)のためのフローチャートを考案したとしている[4]。これには同時代のIBM技術者による傍証があり[5]、ゴールドスタインの回想録でも裏付けられている[6]。ゴールドスタインとフォン・ノイマンの最初のプログラミング用フローチャートは、当時公表されなかった報告書 Planning and coding of problems for an electronic computing instrument, Part II, Volume 1 (1947) にあり、後にフォン・ノイマンの著作集に収録された[7]

フローチャートはアルゴリズムを表現する手段として広く使われた。今[いつ?]でもその用途で使う者もいる[8]

しかし、1970年代になると対話型端末高水準言語が一般化し、ソースコードでもっと簡潔にアルゴリズムを表現できるようになり、フローチャートの人気は減退した。また、フローチャートはgoto文を多用したスパゲティプログラムそのものであるとも言え、アルゴリズムの表現としては、特定のプログラミング言語の詳細に関わらない擬似コードがよく使われるようになった。また、#構造化フローチャートという試みもある。

UMLアクティビティ図はフローチャートを表記変更および拡張したものとも言える。ただし、アクティビティ図は制御フローだけでなく並行動作やデータフローもある程度表現できる。
フローチャートの部品
Nの階乗 N! を計算するフローチャート

右図は、階乗の計算方法を示したフローチャートである。

最も重要で注意すべきなのは、階乗を計算するアルゴリズムの本質は、箱の中に補助的に(したがって以下の解説ではロクに触れていないが)書かれている、変数を参照している演算式や、変数の代入といったもので表現されていて、「フローチャート」の箱や矢印は、その順序付けを表現しているに過ぎない、ということである。
部品

各工程(処理)を示す絵図の標準の一つとしては「情報処理用流れ図・プログラム網図・システム資源図記号」[9]があり、またその他に多数の標準や規格や仕様や各社まちまちのローカルルールなどがある。
端子
円、楕円、角が丸められた長方形などで表現され、その中に「開始」または「終了」といった単語か、それに類する文が書かれる。プロセスの開始と終了を示す。
流れ線と矢印
制御の流れを示す。部品間をつなぐように描くことで、制御が部品から部品へと流れることを示す。常に矢印を使う作法もあるが、流れ線を使う場合は上から下に制御が流れることを表し、それ以外の方向の場合に矢印を使う。JISでは別の部品の上辺に到達するよう描くように標準化しているが、そうではない作法もある。破線も使われることがあるが、その意味は様々である。
処理
長方形で表現される。中には具体的な処理を「Xに1を加算」、「識別した部分を置換」、「変更をセーブ」などと記述する。
定義済み処理
長方形の左右の辺を二重線にした形で表す。別のフローチャートで詳細に描かれた工程を参照するのに使う。定義済み処理はサブルーチンなどに相当するが、入口と出口が複数存在する場合もある(コルーチン参照)。その場合、どの入口から参照するかを示す記述が必要となる。
入出力
平行四辺形で表現される。中には例えば「ユーザーがXを入力」、「Xを表示」などと書かれる。
準備
六角形で表現される。後続の「判断」で使用する値を準備する操作が書かれる。
判断
菱形で表現され、一般に「Yes/No」あるいは「真/偽」が答えとなる判断を表す。2つの流れ線または矢印が出て行く点が他の部品とは異なる。出て行く流れ線は、下の頂点と右(または左)の頂点から発するのが一般的で、一方が「Yes」または「真」、もう一方が「No」または「偽」に対応する。そのため常にラベルを添えて意味を示す必要がある。3つ以上の線が出て行く場合もあるが、それは判断が複雑であることを意味し、複数個の「判断」で詳細化することができる。あえてswitch文に相当する書き方をする場合は、下の頂点から発した流れ線を分岐させる形で描くのが一般的である。


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:35 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef