このページをはてなブックマークに追加このページを含むはてなブックマーク このページをlivedoor クリップに追加このページを含むlivedoor クリップ

目次

モジュール

 プログラム設計では、前工程の内部設計で定義された機能を、プログラムで実現するための設計を行う。プログラムは、モジュール単位に分割される。これは設計やメンテナンスを行いやすくするのが目的である。

モジュールの論理設計

  1. 条件の明確化
    • 条件を明確化し、同じものはまとめて記述する。
  2. セグメント化
    • 条件の同じものをセグメント化する。
  3. 明確な論理展開
    • わかりやすい論理構造を目指す。

モジュールの階層構造

  1. トップダウンアプローチ
    • 上部モジュールから下部モジュールに向かって開発していくと、全体像が把握しやすいというメリットがある。
  2. ボトムアップアプローチ
    • 下部モジュールから上部モジュールに向かって開発すると、既存のモジュールを再利用して開発効率を上げられるというメリットがある。

モジュール分割技法の種類

 プログラムをモジュールに分割して構造化を行う技法には、次が挙げられる。

  • データの流れに着目するタイプ
    • STS分割法
    • TR(Transaction)分割法
    • 共通分割法
  • データの構造に着目するタイプ
    • ジャクソン法
    • ワーニエ法

STS分割法

 データ処理の流れを階層的に捉えて、そのデータの流れ(データフロー)に基づいて構造を作り上げていく、構造化設計と呼ばれる手法の一種である。機能分割・構造化工程やプログラム設計などで使われる。

 データの流れを、次の3種類に分割される。それぞれをモジュールとして考える。

  • 源泉(source)
    • データの入力処理
  • 変換(transform)
    • データの変換処理
  • 吸収(sink)
    • データの出力処理

 入力データの意味を消失する点と、出力データの意味を持ち始める点を探して、制御モジュールの下に位置付ける。入力データの原型を止めなくなる寸前のところを最大抽出入力点、初めて出力データらしく見えてきた時点を最大抽出点という。そして、データを入力してから最大抽出入力点までを源泉、最大抽出入力点から最大抽出出力点までを変換、最大抽出出力点以降が吸収になる。

TR(Transaction)分割法

 分岐モジュールの下に、トランザクションの種類ごとの複数階層を持つ構造に変換する。

 入力データ(トランザクション)がいくつかの種類に分類できる場合、その種類ごとに分割する。単純でわかりやすい。

共通分割法

 他のモジュールから共通的に使用するモジュールを洗い出そうとする考え方。エラー処理などに用いる。

ジャクソン法

 ジャクソン法は、プログラムのモジュール構造を入出力データの構造に対応させて設定を行う方法である。Jacksonによって提唱された。入力データと出力データの構造の対応関係を分析し、ジャクソン木を用いて階層化する。

 モジュールは次の4種類で構成される。

  • 基本(elementary)
  • 連続(sequence)
  • 選択(select)
  • 繰り返し(loop)

ワーニエ法

 入力データを集合論によって分析し、選択・繰り返しと前処理・後処理の構造に整理する。

 モジュールは次の3種類で構成される。

  • 順次
  • 選択
  • 繰り返し

 ジャクソン法と異なり、ワーニエ法は入力データ構造のみからプログラム構造を決める。

モジュール強度とモジュール結合度

  • マイヤーズの複合・構造化設計法では、データフローで明確にされた仕様を起点として、独立性の高いモジュールに分割していく手順が示されている。
  • この設計法では、独立度を強度と結合度に分けて整理している。

 モジュールの独立性を評価する指針として、次の2つがある。

  • モジュール強度
    • ひとつのモジュール内の関連の強さを示す。
  • モジュール結合度
    • モジュール同士の関連の強さを示す。

 モジュールの独立性を高くすると、あるモジュールの修正によるほかのモジュールへの影響をす少なくすることができる。独立性を高くするには、モジュール強度を強くして、モジュール結合度を弱くする。モジュール強度は機能的強度、モジュール結合度はデータ結合が一番よい。

モジュール強度

  • モジュールの強度とは、仕様(機能)とモジュールとの関係の強さを示している。
    • モジュール強度は関連性の大きさであり、強いほどモジュールの独立性が高い。

モジュール強度の種類

 強度の種類は弱いものから順に次のようになる。

  1. 暗号的強度
    • 単純に同じように分割・定義できない。
  2. 論理的強度
    • 関連した複数の機能をひとつにまとめる。
  3. 時間的強度
    • ある時期逐次的に実行されるものをまとめる。
  4. 手順的強度
    • 複数の逐次的な機能をひとつにまとめる。
  5. 連絡的強度
    • モジュール要素間でデータの受渡しがある。
  6. 情報的強度
    • 特定のデータ構造の複数個の機能をまとめる。
  7. 機能的強度
    • すべての機能が単一機能実行のために関連する。

モジュール結合度

  • モジュールの結合度とは、2つのモジュール間の依存度を示している。
  • 一方を変更したときに他方に及ぶ影響の度合いでもある。
  • 結合度は小さいほどよい。

モジュール結合度の種類

 結合度について望ましくないものから順に次のようになる。
  1. 内容結合
    • 他のモジュールの内容を直接参照し、一部を共有する。
  2. 共有結合
    • 共通域データをいくつかのモジュールで共有する。
  3. 外部結合
    • 必要なデータのみ外部宣言して共有する。
  4. 制御結合
    • モジュール実行制御情報をパラメータとして渡す。
  5. スタンプ結合
    • 同じ構造なら不要データも受け渡す。
  6. データ結合
    • 構造だけでなくデータ要素のみを受け渡す。

参考文献

  • 『超図解mini 基本情報技術者試験 平成19年度版』
  • 『ソフトウェア開発技術者 合格エッセンシャルハンドブック』
  • 『ソフトウェア開発はなぜ難しいのか 「人月の神話」を超えて』