0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

モジュール強度と結合度

0
Last updated at Posted at 2026-01-26

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

ソフトウェア設計では
「強度は高く、結合度は低く」 が基本原則。
→再利用のしやすさを表す指標として用いられるのが、

  • 強度:中身のまとまり具合(高いほど良い)
  • 結合度:他との依存の強さ(低いほど良い)

の二つ。


1. モジュールの強度(Cohesion)

概要

1つのモジュールが、どれだけ「まとまった役割」を持っているか を表す。
強度が高いほど「このモジュールは何をするものか」が明確。

  • 強度が高い → 良い設計
  • 強度が低い → 修正・再利用が困難

強度の種類(低 → 高)

種類 名称 説明
低 偶発的強度 無関係な処理がたまたま集まっている
論理的強度 条件分岐で処理を切り替えている
時間的強度 同じタイミングで実行される処理の集まり
手続き的強度 処理の流れが同じというだけ
通信的強度 同じデータを扱う処理の集まり
逐次的強度 前の処理結果を次が利用
高 機能的強度 1つの明確な機能だけを持つ
  • 機能的強度が理想
  • 上に行くほど「なぜこの処理がここにあるのか」が説明しやすい

① 偶然的強度(最悪)

  • 関係のない処理がたまたま同じモジュールに入っている
  • 例:
    • ログ出力
    • 日付計算
    • ファイル削除
      を1つのクラスにまとめている

② 論理的強度

  • 種類は違うが「同じ分類」の処理をまとめている
  • 例:
    • 入力チェック処理(数値チェック、文字チェックなど)

③ 時間的強度

  • 実行タイミングが同じ処理をまとめている
  • 例:
    • 初期化処理を1つのモジュールにまとめる

④ 手続き的強度

  • 実行順序が決まっている処理をまとめている
  • 例:
    • 読み込み → 加工 → 出力

⑤ 情報的強度

  • 同じデータ構造に対する処理をまとめている
  • 例:
    • 配列に対する追加・削除・検索

⑥ 機能的強度(理想)

  • 1つの明確な機能だけを持つ
  • 例:
    • 「税込価格を計算する」だけのメソッド

2. モジュールの結合度(Coupling)

概要

モジュール同士がどれだけ密接につながっているか を表す。
結合度が低いほど、1つの変更が他に影響しにくい。

  • 結合度が低い → 良い設計
  • 結合度が高い → 変更が連鎖しやすい

結合度の種類(高 → 低)

種類 名称 説明
高 内容結合 他モジュールの内部を直接参照
共通結合 グローバル変数を共有
外部結合 外部定義(ファイル形式など)に依存
制御結合 フラグで相手の処理を制御
スタンプ結合 構造体やクラスを丸ごと渡す
低 データ結合 必要なデータだけを引数で渡す
  • データ結合が理想
  • 内部実装に踏み込むほど結合度は高くなる

① 内容結合(最悪)

  • 他モジュールの内部実装を直接操作する
  • 例:
    • 他クラスの private 変数を直接書き換える

② 共通結合

  • グローバル変数を共有している
  • 例:
    • 複数のモジュールが同じグローバル変数を参照

③ 外部結合

  • 外部データ形式やプロトコルに依存
  • 例:
    • 特定のファイル形式に強く依存

④ 制御結合

  • フラグなどで処理の流れを制御
  • 例:
    • mode = 1 ならA処理、mode = 2 ならB処理

⑤ データ結合

  • 必要なデータだけを引数で渡す
  • 例:
    • calculatePrice(int price)

⑥ メッセージ結合(理想)

  • オブジェクト間でメッセージ(メソッド呼び出し)のみ
  • 例:
    • order.calculateTotal()

3. 強度と結合度の関係(まとめ)

観点 良い設計 悪い設計
強度 高い(機能的) 低い(偶発的など)
結合度 低い(データ結合) 高い(内容結合など)
影響範囲 変更に強い 変更に弱い
可読性 役割が明確 意図が分かりにくい

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?