プログラム作成


■目次
  1. プログラム設計書の作成
  2. プログラム作成基準
  3. モジュール設計
  4. プログラム作成技法
  5. コーディング

◆プログラム設計書の作成

・CSS
・引数
・決定表
・リポジトリ
・雛形プログラム

・視覚的表現形式
・行列表現系
・決定表
・関係表
・グラフ表現系
・状態遷移図
・データフロー図
  * 構造化分析/設計の中心となる図表
    (1)源泉(ソース)と吸収(シンク) … 長方形で表わす
       設計対象としているシステムの外にあり、
       データを発生させるか、または受け取るもの。
    (2)データフロー … 矢印で表わす。
    (3)蓄積(ストア) … 上下2本線で表わす。
       データが時間的に滞留する場合に用いる。
       ファイルとも呼ばれる。
    (4)変換 … 円で表わす。
       入力データを出力データに変換するもの。
       「バブル」「プロセス」「機能」「処理」とも呼ばれる。
・ブロック図
・イベント・トレース図
・領域表現系
・NS(Nassi-Shneiderman)チャート
・ペトリネット
・E-R図
・ジャンクソン構造化設計法 (JSP法)
  * 構造不一致
    複数の異なるデータに対して、一つのプログラム構造では
    うまく対応できないこと。
    - 脈絡不一致 (mulitithreading clash)
      関連するデータ要素が、入力においてバラバラに入り乱れている。
    - 境界不一致
      データ要素間の境界が、入力と出力で異なる。
      コルーチンといった技法を使用して解決する。
    - 順序不一致
      データ要素の現われる順序が、入力と出力で異なる。
  * プログラム設計の進め方
    (a)入出力データ構造を定義する
    (b)入力データ構造と出力データ構造の対応関係を見つける
    (c)対応関係に基づいてプログラムの構造を定義する
    (d)プログラム構造の適当な場所に判定と演算を割り当てる
    (e)プログラムの論理構造を擬似コード(図式論理)で表現する
・デッドロック
・ロールバック処理
・相互排除
・セマフォ
・ジャーナル
・チェックポイント
・コミット命令

・インタフェース条件
・セグメント化
・共通領域
・ローカル領域
・カプセル化
・引数
・システム共通領域
・メッセージ通信
・クラス継承
・再使用可能プログラム
・再入可能プログラム
・再帰プログラム

・レビュー
目次に戻る

◆プログラム作成基準

・内部設計書

・パターン
・部品
・再利用
・処理パターン
・キーワード
・内部設計書
・用語
・標準パターン
・標準部品
・利用率
・型
・マクロ制御

・部品
・変数
・処理パターン

・データディクショナリ
・用語
・JISハンドブック
・リポジトリ
・内部設計書

・プログラミング規約
・プログラムの大きさ
・命名規則
・プログラムの制限条件
・スコープ
・関数
・変数
・型
・関数名
・変数名
・型名
・ラベル名
・名前
・有効範囲
・抽象データ型
・リポジトリ
・クラスライブラリ
目次に戻る

◆モジュール設計

・内部構造
・モジュール分割
  * モジュール分割の意義
・モジュール強度(凝集度) Module strength / Module cohesion
機能的強度 (functional) 単一の固有機能を実行する。 外界とは機能のみが共有されている。
情報的強度 (informational) 複数の入り口(インタフェース)を持ち、 各入り口は単一の固有機能を実行する。 外界とはデータ構造と処理が共有されている。 これが発展して抽象データ型(データとそのデータに関する操作を 一体化し、内部データ構造や操作の実装方法を隠蔽したもの)、 更にオブジェクト指向の基礎となった。
連絡的強度 (communicational) データをパイプライン的に使用する複数の機能を内包する。 外界とはデータが共有されている。 強度的には手順的強度と同程度。
  1. 「妥当でないトランザクションを端末上に表示」
  2. 「そのトランザクションを監査ファイルに書き込む」
といった一連の機能を持つモジュールなどが該当する。
手順的強度 (procedural) 一連の手順により実行される複数の機能を内包する。 手順の前後関係が公開されている。
  1. 「トランザクションファイルの次のレコードを読み込む」
  2. 「マスタファイルのチェックポイントを取る」
  3. 「エラーメッセージを表示する」
のように、各機能の実行順序に意味があるモジュール。
時間的強度 (temporal) 同じ時点で実行される複数の機能を内包する。 「初期設定」「終了処理」など。
論理的強度 (logical) 論理的に抽象化された形で関連する複数の機能を持つ。 外界とは分岐論理が共有されている。 引数により、各機能を選択的に実行する。(制御結合) 上位モジュールとの関係は、共通結合、スタンプ結合、制御結合 になることが多い。
暗号的強度 (coincidental) モジュール内の機能に特定の関係が無い。 外界とは機能的には何も共有されていない。

・モジュール結合度 Module coupling
内容結合 (content) 各モジュール内のデータをメモリ・アドレスを直接指定して参照したり、 命令を直接実行する。アセンブラ言語によるモジュールに見られる。 一方のモジュールが他方のモジュールの内容を直接参照している状態。
共通結合 (common) 共通域に定義したデータを複数モジュールで共有する。 FORTRANのCOMMON文で定義されたデータ要素を他の副プログラムが参照する、など。 参照できる範囲は明確に限られている。
外部結合 (external) 広域データとして外部宣言されたデータ要素のみを 複数モジュール間で共有する。
制御結合 (control) 呼び出すモジュールが呼び出されるモジュールの制御を指示するデータを パラメータで渡す場合。 関数の流れを制御するデータを引数として渡す、など。 データ共有は行わない。
スタンプ結合 (stamp) 共通域に無いデータ構造を二つのモジュール間で受け渡す場合。 構造体のポインタを渡したり、構造体全体を実体として受け渡す、など。
データ結合 (data) 二つのモジュール間のインタフェースをデータ要素の 受け渡しのみで行う。相手のモジュールをブラックボックス化できる。 定義されている構造体のメンバのうち、 必要なものだけを下位関数に渡すなど。 モジュール結合度が最も低く、互いのモジュールが影響を受けにくくなる。
・階層
・複合設計
・TR(トランザクション)分割法
・STS(Source Transform Sink)分割法
・モジュール尺度
・モジュール独立性
・モジュールの制御範囲
・影響範囲

・アサーション
・ロギング情報

・モジュール分割
・モジュール数
・データ数
・モジュールの規模
・階層
目次に戻る

◆プログラム作成技法

・プログラミングパラダイム
・手続き型プログラミング
・オブジェクト指向プログラミング
・オブジェクト
・メッセージ通信
・モデル化
・検索処理
・更新処理
・プログラム設計法
・プログラミング方法論
・制御構造
・ブロック構造
・可視性
・有効範囲規則
・代入
・多重定義
・手続き
・関数
・パラメータの授受
・データ型
・型付け
・型の等価性
・型変換
・モジュール記述
・コンパイル単位
・分割コンパイル

・クラス
・インスタンス
・クラス定義
・クラスの階層化
・クラスの継承

・データフローモデル
・データ構造駆動モデル

・開発支援ツール
・図形エディタ
・整合性
・完全性
・LowerCASE
・制御フロー図

・プログラミング技法
・構造化技法
・データフロー図
・制御フロー図
・決定表
・状態遷移図
・構造化チャート
目次に戻る

◆コーディング

・コーディング基準
・手続きの単位
・手続き名
・構造表現
・処理構造
・判定構造
・CASE構造
・ループ構造

・順編成ファイル
・基本関数
・ブロック
・変数名
・型宣言
・ポインタ
・関数の水準

・クラス
・仮想関数
・フレンド関数
・デフォルト引数
・参照型
・オーバロード
・メンバ・アクセス制御
・コンストラクタ
・デストラクタ

・静的分析
・クロスリファレンス
・構造化チェック
・効率の測定

・GUIビルダー
・プログラムジェネレータ

・構文解析
・OS制御パラメタ
・テキスト処理
・整列処理
・検索アルゴリズム
目次に戻る