スキルアップ 情報処理技術者試験

情報処理試験の頻出テーマ!モジュール間結合度の6種類を簡単解説!

人生を自由に楽しむために会社員を辞め、フリーランスを経て法人化し、現在は一人社長をしています。ユウイチです。

今回はIPAの情報処理試験で頻出のモジュール間結合度について解説します。

ITパスポート試験や基本情報技術者試験では、この結合度の種類や違いをよく問われますので、しっかり理解しておきましょうね。

それでは、分かりやすく解説します。

モジュール間結合度とは?

モジュール間結合度とは、複数のモジュールがどれだけ強く依存しているかを示す指標で、結合度が強いほどモジュール同士が密接に関係し、変更の影響を受けやすくなります。

ですので、モジュール間結合度をできるだけ弱く(疎結合)することが望ましいです。


モジュール間結合度の種類(強い順)

それでは、モジュール間結合度を「強い(避けるべき)」→「弱い(望ましい)」の順に解説します。

1. 内容結合(Content Coupling)【最も避けるべき】

モジュール間で、他のモジュールの内部実装に直接アクセスする状態。

特徴
  • 完全に依存してしまい、変更が難しくなる
  • メンテナンス性が極端に悪化する
  • あるモジュールが別のモジュールの内部変数を直接変更する
  • 別のモジュールの内部メソッドを直接呼び出す

2. 共通結合(Common Coupling)

モジュール間でグローバル変数を共有する状態。

特徴
  • どのモジュールがデータを変更したのか把握しづらい
  • 変更の影響範囲が広がる
  • すべてのモジュールが同じグローバル変数を読み書きする

3. 外部結合(External Coupling)

モジュール間で外部リソース(ファイル、データベース、環境変数など)を共有する状態。

特徴
  • 外部システムの影響を受けやすい
  • テストや保守が難しくなる
  • 2つのモジュールが同じファイルを直接操作する
  • 環境変数を使って設定を共有する

4. 制御結合(Control Coupling)

モジュール間で制御用のフラグ(true/false など)を渡し、処理を制御する状態。

特徴
  • 呼び出し側が処理の流れを制御するため、依存関係が強くなる
  • モジュールの独立性が損なわれやすい
  • 関数の引数としてフラグ(true/false)を渡し、処理の流れを変える

5. スタンプ結合(Stamp Coupling)

モジュール間でデータ構造(構造体やクラスなど)を受け渡す状態。

特徴
  • データ結合よりも結合が強くなる
  • 必要のない情報まで渡してしまう可能性がある
  • 関数の引数としてオブジェクト全体を渡すが、実際には一部のデータしか使用しない

6. データ結合(Data Coupling)【最も望ましい】

モジュール間のデータの受け渡しが単純なデータ構造(変数や配列など)で行われる状態。

特徴
  • モジュール間の関係が最も緩く、独立性が高い
  • 変更の影響が最小限
  • 関数の引数として単純なデータ項目(整数、文字列など)を渡す

モジュール間結合度の比較表

以下、表にまとめます。

結合度の種類結合度独立性推奨度
内容結合最も高い最も低い他モジュールの内部を直接操作×××(避けるべき)
共通結合高い低いグローバル変数を共有××
外部結合やや高いやや低いファイルやDBを共有×
制御結合普通普通フラグを引数で渡す
スタンプ結合やや低いやや高い構造体を引数で渡す
データ結合低い高い変数を引数で渡す◎(推奨)

まとめ

以上、今回はモジュール間結合度について簡単に説明してみました。

情報処理試験対策として、以下のように覚えておきましょう笑

情報処理試験対策

結合度は「内容結合」が最も避けるべきで、「データ結合」が最も望ましい

「結合度が強ければ悪」「結合度が低ければ正義」

情報処理試験対策であれば、これで十分だと思います。

モジュール間結合度を聞かれるのは選択問題のはずなので、これ覚えておくだけで正しい選択し選べます^^

情報処理試験でモジュール間結合度の問題が出てきたら、確実に正解しておきましょうね^^

それではまた!

  • この記事を書いた人
  • 最新記事

ユウイチ

20代前半から20年間エンジニアとしてキャリアを積みフリーランスへ転身。 2年間フリーランスとして活動後、起業し1人社長となる。 ソフトウェア開発とプログラミング講師をメインに、ゲームクリエイター・シナリオライターとしても活動中。

-スキルアップ, 情報処理技術者試験