最終更新日:2026年8月14日
fe fe-technology software-engineering programming
まず結論
モジュール結合度とは、モジュール同士がどれだけ強く依存しているかを表す指標です。
基本情報技術者試験では、結合度は弱いほどよいと考えます。
弱い
↑
データ結合
スタンプ結合
制御結合
外部結合
共通結合
内容結合
↓
強い
最も弱いのはデータ結合、最も強いのは内容結合です。
直感的な説明
モジュール同士の関係は、人同士の仕事の頼み方にたとえると分かりやすいです。
必要な情報だけを渡して仕事を頼むなら、相手の内部事情をほとんど知らなくても済みます。
必要な値だけ渡す
→ 依存が少ない
→ 結合度が弱い
一方で、
相手の内部データを直接書き換える
→ 相手の内部構造に強く依存
→ 結合度が強い
となります。
つまり、
相手の内部をどこまで知る必要があるか
で考えると、結合度の強弱をイメージしやすくなります。
定義・仕組み
モジュール結合度は、モジュール間の情報の受け渡し方によって分類されます。
データ結合
データ結合は、処理に必要なデータ項目だけを引数として渡す結合です。
module_a(x, y)
のように、必要な値だけを渡します。
最も結合度が弱く、独立性が高い方式です。
判断キーワードは、
必要なデータだけ
引数
単純なデータ項目
です。
スタンプ結合
スタンプ結合は、構造体やレコードなど、まとまりのあるデータ構造を渡す結合です。
顧客データ一式
注文データ一式
のように、必要な項目だけでなく、複数項目を含むまとまりを渡します。
データ結合より依存が少し強くなります。
制御結合
制御結合は、相手モジュールの動作を決める制御情報を渡す結合です。
例えば、
mode = 1
→ 登録処理
mode = 2
→ 削除処理
のような制御フラグを渡します。
相手の処理内容を呼出し側が意識する必要があるため、結合度が強くなります。
外部結合
外部結合は、外部宣言されたデータや外部仕様を複数モジュールで共有する結合です。
例えば、
外部変数
外部ファイル形式
装置との共通インタフェース
などに依存します。
共通結合
共通結合は、共通領域に置かれたデータを複数モジュールから参照・更新する結合です。
いわゆる共有領域やグローバルな共通データに依存します。
共通領域
↓
モジュールA
モジュールB
モジュールC
複数モジュールが同じデータを共有するため、影響範囲が広がりやすくなります。
内容結合
内容結合は、あるモジュールが別のモジュールの内部を直接参照・変更する結合です。
例えば、
他モジュール内部の変数を直接変更
他モジュール内部へ直接分岐
内部処理を直接利用
などです。
最も結合度が強く、独立性が低い方式です。
科目Aでどう出る?
科目Aでは、説明文から結合の種類を選ぶ問題として出ます。
判断表
| 説明 | 結合 |
|---|---|
| 必要なデータ項目だけを引数で渡す | データ結合 |
| レコード・構造体などをまとめて渡す | スタンプ結合 |
| 制御パラメータで相手の動作を決める | 制御結合 |
| 外部宣言したデータを共有する | 外部結合 |
| 共通領域のデータを複数モジュールで参照する | 共通結合 |
| 他モジュールの内部を直接参照・変更する | 内容結合 |
試験中の見分け方
迷ったら、まず「何を渡しているか」「どこまで共有しているか」を見ます。
必要な値だけ
→ データ結合
データ構造ごと
→ スタンプ結合
制御情報
→ 制御結合
外部で定義された情報
→ 外部結合
共通領域
→ 共通結合
相手の内部を直接触る
→ 内容結合
どんな場面で使う?
モジュール結合度は、ソフトウェア設計でモジュールの独立性を考えるときに使います。
結合度が弱いと、
- あるモジュールを変更しても他へ影響しにくい
- テストしやすい
- 再利用しやすい
- 保守しやすい
といったメリットがあります。
一方、結合度が強いと、
モジュールAを変更
↓
モジュールBにも影響
↓
モジュールCも修正
のように、変更の影響が広がりやすくなります。
よくある誤解・混同
結合度は強いほどよい?
逆です。
結合度が弱い
→ 独立性が高い
→ 保守しやすい
結合度が強い
→ 依存が強い
→ 変更影響が大きい
共通結合と外部結合は同じ?
似ていますが違います。
外部宣言されたデータ・外部仕様を共有
→ 外部結合
共通領域のデータを複数モジュールで共有
→ 共通結合
試験では「共通域」「共通領域」とあれば共通結合を疑います。
データ結合とスタンプ結合は同じ?
違います。
必要なデータ項目だけ
→ データ結合
構造体・レコードなどをまとめて渡す
→ スタンプ結合
必要以上の情報までまとめて渡すほど、相手のデータ構造への依存が強くなります。
制御パラメータもデータだからデータ結合?
違います。
値そのものを処理に使う
→ データ結合
値によって相手の動作を決める
→ 制御結合
「何のために渡しているか」で切り分けます。
確認問題(基本情報技術者試験対策)
モジュール結合度が最も弱い情報の受け渡し方法はどれか。
- ア. 共通域に定義したデータを、複数のモジュールが参照する
- イ. 制御パラメータを引数として渡し、モジュールの実行順序を制御する
- ウ. 処理に必要なデータ項目だけを引数として渡す
- エ. 必要なデータを外部宣言して複数モジュールで共有する
▶ クリックして答えと解説を見る(ここを開く)
正解:ウ
必要なデータ項目だけを引数として渡すのは、データ結合です。
データ結合は、モジュール間の依存が最も小さく、6段階の中で最も結合度が弱い方式です。
- アは共通結合
- イは制御結合
- エは外部結合
です。
まとめ(試験直前用)
- モジュール結合度は、モジュール同士の依存の強さ
- 弱いほど独立性が高く、保守しやすい
- 弱い順は データ → スタンプ → 制御 → 外部 → 共通 → 内容
- 必要な値だけ渡すのはデータ結合
- 構造体やレコードをまとめて渡すのはスタンプ結合
- 制御情報を渡すのは制御結合
- 共通領域を使うのは共通結合
- 他モジュールの内部を直接触るのは内容結合