ホーム > IT > Structure Chart |
ストラクチャーチャートの書き方(プログラム構造図)
|
1.はじめに 2.構造化の基準 3.展開の方法 4.モジュールの構造に関する基準 5.制御と処理 附.記号とその使い方 |
1.はじめに topへ戻る
企業の適用業務開発によって作成されるプログラムは、その性格上、本来は企業の「共有財産」になるべきものである。しかし、いままでは多分に「個人の財産」になっていたきらいがある。理由は、プログラムの作成作業がすべてプログラマ個人にゆだねられ、結果として属人性の強いプログラムになってしまうからである。 プログラムの論理の作成、コーディングは各人各様の方法で行われる。そのため作成者以外が、プログラムを理解するのは大変困難であるのが普通である。したがって、作成者以外の人間が、そのプログラムを保守することが困難になり、作成者はいつまでたっても、そのプログラムと縁が切れなくなる。 このような現象が生じるのは、プログラムの作成方法を標準化していないからである。わかりにくいプログラムはエラーを多発し、デバッグをやりにくくする。また、テストケースの設計をやりにくくする。開発の生産性と製品の品質を高めるためには、設計作業と同様、プログラミングもわかりやすくすることである。 わかりやすくするためには、プログラムのモジュール化と同時に、プログラム論理を構造化することが重要である。論理を構造化することにより、論理が明確になり、わかりやすさを増すと同時に、テストケースも設計しやすくなる。作成者以外の人間でも、プログラムの中に立入ることができ、プログラムのウォークスルーを可能にする。これは、エラーの早期検出を可能にし、ともすれば機械によるテストに頼り過ぎであったいままでの開発方式を、改善することになる。 |
2.構造化の基準 topへ戻る 構造化定理(どんな論理でも順次・選択・繰返しの3つの基本的パターンを用いれば記述できる)を適用してプログラミングすれば、プログラムを難解にしていたgoto命令の使用を避けられる。この構造化プログラミング技法に基づき、プログラム全体の処理の流れを、原則として初期処理、主処理(繰返し処理)、終了処理の3つの部分に分ける。 (1)初期処理部 ・繰返し処理に必要とする入出力ファイルのopen ・実行に必要なパラメータ、コントロールメッセージなどのセット ・カウンタ、レジスタなどの初期値のセット ・繰返し処理に必要とする各ファイルからの第1レコードの読込み ・など (2)主処理部 ・プログラムにおける主たる処理を繰り返し行う部分 ・処理が前後半に分かれる場合は、主処理もそれぞれに分かれる (3)終了処理 ・総計の出力処理 ・総入出力件数の表示 ・使用したファイルのclose ・など 次に各部分で出現する処理機能モジュールをくくり出して、共通処理部とする。 共通処理部に配列する処理機能モジュールは、実行順に無関係で、かつ、そのモジュールを呼び出す制御論理モジュールとの接続関係は図示されなくてよいが、それぞれの処理機能モジュールとのインターフェースのために使用するコモンエリアなどの条件を注記しておくとよい。 |
3.展開の方法 topへ戻る ストラクチャーチャートは構造化の基準にしたがい、初期処理、主処理(繰返し処理)、終了処理の3つの部分をドライブする第1レベルの構造図から書き始め、順次各部分の下位レベルにおける制御論理および処理機能モジュールを展開して書き加える方法で作成する。 なお、第1レベルの構造図の主処理部は、繰返し処理する各機能モジュールの制御モジュールとなる。 第2レベル以降は、第1レベルの構造図の下部に必要な制御論理および処理機能モジュールを書き加えてゆく。たとえば次のようになる。 書き方は縦方向でもよい。 繰返し処理の部分は次のように書く。 たとえば共通部分を持つ2種類の形式のデータカードの入力チェックの場合を考える。 流れとしては、初期処理で第1レコードが入力された状態からスタートするので、チェック処理→正常またはエラーデータそれぞれの出力→次のレコードの入力、の繰返しとなる。 データチェックの部分は、まず共通部分(たとえばキーとなるコード、データの作成日付、発行部課などでデータ形式が同一のもの)のチェックから始め、そこでエラーのあったものはチェックを打ち切り、そうでない時は第1形式、第2形式の区分コードによりそれぞれ形式別のチェックをすることにする。 ストラクチャーチャートの展開はこのレベルで止めてもよい。 しかし、共通部分に含まれる日付のチェックに暦日をチェックする外部ルーチンが含まれていたり、形式1、形式2の各項目のうち6桁の数値フィールドの桁ずれチェックを共通ルーチンで行うというようなことを図示するのであれば、それぞれの処理機能モジュールをさらに分解して図示に書き加えればよい。 図3.5に展開例を示す。 次の終了処理は、入出力件数の表示(入力件数、出力件数は入力・出力のそれぞれのモジュールでカウントしておく)と、ファイルのcloseとする。 |
4.モジュールの構造に関する基準 topへ戻る
|
5.制御と処理 topへ戻る モジュール間に階層関係がある時、上位のモジュールは下位のモジュールの実行を制御する制御モジュールと定義する。 下位に制御すべきモジュールを持たない(ただし共通処理モジュールの制御を除く)モジュールを処理モジュールと定義する。 (1)下位モジュールの制御順は、上から下、左から右の順とする。 処理-1、2、3、4の順に実行 (2)下位に制御モジュールを持つ時の実行順 処理-1、処理2-1、処理2-2(第2の制御モジュールによる)、処理-3、処理-4の順。 第2の制御モジュールによって制御される処理2-1、処理2-2は繰返し実行または選択実行になることもある。 (3)繰返し実行の制御 繰り返し終了条件を満たすまで、処理-1、処理-2の順に繰り返す。 繰り返し終了条件は、制御モジュールboxの横に記述する。 (4)選択実行の制御 条件1が成立した時、処理-1を実行。条件2(その他)は処理-2を実行。 選択条件は流線の上に書く。 条件1、条件2の2者択一形式のとき、一方は省略してよい。 3つ以上の選択実行を制御する場合、階層化して2者択一形式の制御を積み重ねることができる。 選択実行の一方に処理がない時は、一方をダミーとする。ダミーのコーディングはモジュールの出口への直接分岐でもよい。 選択実行の一部が強制中断の時 (5)共通処理と外部モジュールのcall 共通処理モジュールとは、同一プログラム中で共通の処理機能としてくくり出したモジュールのことである。(制御モジュールを含む場合もある。その場合は制御モジュールのレベルで共通処理とする) チャート上ではモジュールのboxの右下スミを塗りつぶして見やすくする。 共通処理が外部ルーチンまたはサブ・プログラムとしてcallまたは挿入されるとき、プログラム中で自らコーディングすべきモジュールと区別するために次の記号を使用する。 |
附.記号とその使い方 topへ戻る
|
参考文献および引用文献 topへ戻る 株式会社 東芝 1)大林久人、階層化フローチャート(Hierachy Organizational FlowChart)とCOBOLによる構造化コーディング、1978 その他 2)国友義久、効果的プログラム開発技法(第4版)、オーム社、1995 |
ホーム > IT > Structure Chart |
このHPに掲載の記事、写真、イラスト等の転載を禁じます。
すべての著作権は痛さんに帰属します。 since 1997.10.18 (C)1997-2018,Tsuusan. All rights reserved. |