0
0

(完全自分用メモ)モジュール設計・モジュール結合度

Posted at

モジュール設計

(応用情報技術者合格教本のp498あたり)

モジュール分割技法には「データの流れ」に注目した技法と「データの構造」に注目した技法に分けられる。

データの流れに注目した技法

  • STS分割
    • プログラムは入力→処理→出力の構造でできているという前提に立った分割技法
    • 入力処理機能(Source)、変換処理機能(Transform)、出力処理機能(Sink)の3つにモジュールを分割する
    • 最大抽象入力点と最大抽象出力点でモジュールを分割する
  • TR分割
    • トランザクション分割の意
    • 下記の3つのモジュールに分割する
      • トランザクションを入力するモジュール
      • トランザクションを属性ごとに各モジュールに振り分けるモジュール
      • トランザクションごとの処理モジュール
  • 共通機能分割
    • 上記のモジュールの中で共通する機能を持ったモジュールがあった時、そのモジュールを共通モジュールとして独立させる方法

データの構造に注目した技法

  • ジャクソン法
    • JSP木(基本・連続・繰り返し・選択の要素を組み合わせた木構造)に則ってプログラムを構造化する
  • ワーニエ法
    • 集合論に基づいてプログラムを構造化する
    • ジャクソン法は出力データに注目してデータを構造化するが、ワーニエ法は入力データに注目し、「いつどこで何回」という考え方で展開する

モジュール結合度

モジュール結合度の種類は6種類。
下記の表では下に行くほど結合度が低いため望ましい。
覚え方は結合度が弱い順(=良い順)に「デスセガキナ」(Death SEGA 来な)

種類名 説明 具体例
データ結合 必要なデータだけを引数として渡す 得点と順位を表示するクラスがあった場合、得点と順位のデータのみを渡す
スタンプ結合 構造体データを引数として渡す structやdata classで作成したデータの塊を渡す
制御結合 モジュール内の処理を制御するデータを引数として渡す 得点を表示するかどうかを引数の内容によって決める
外部結合 必要なデータだけを外部宣言し、他のモジュールからの参照を許可する データをpublicで宣言し、他のクラスから参照する
共通結合 共通領域に参照したデータを参照する データ格納庫的なクラスを作り、そのクラスのデータを参照する
内容結合 他のモジュールを直接参照している goto文で他のモジュールのデータを参照しにいく

※具体例は人によって捉え方がまちまちらしいのであくまで一例

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0