基本情報技術者 2018年 秋期 午前(科目A) 問48
問題文
モジュール間の情報の受渡しがパラメタだけで行われる、結合度が最も弱いモジュール結合はどれか。
選択肢
ア:共通結合
イ:制御結合
ウ:データ結合(正解)
エ:内容結合
モジュール間の情報の受渡しがパラメタだけで行われる、結合度が最も弱いモジュール結合はどれか。【午前2 解説】
要点まとめ
- 結論:パラメタだけで情報を渡す「データ結合」が最も結合度が弱く、正解は ウ です。
- 根拠:データ結合はモジュール同士が互いの内部構造や制御フローを知る必要がなく、純粋にデータを受け渡すだけだからです。
- 差がつくポイント:制御フラグがパラメタに含まれるか、共有変数を使うかで制御結合や共通結合となり評価が変わります。
正解の理由
データ結合はモジュール間のやり取りが「引数(パラメタ)の値のみ」で完結し、受け渡しは原始データや独立したデータ項目に限定されます。これにより各モジュールは相手の内部構造や実装詳細、制御の意図を知らずに済むため、モジュール間の依存が最も小さくなります。したがって「パラメタだけで情報の受渡しが行われる」状況はデータ結合に該当し、最も弱い結合度です。
よくある誤解
- パラメタで何でも渡せば常にデータ結合と考える誤り:パラメタに制御フラグが含まれると制御結合になります。
- 共有変数を使えば単に「便利」だが結合度が下がると誤解する点:共有変数は共通結合で結合度が高くなります。
- データ構造を丸ごと渡す(スタンプ結合)をデータ結合と同一視する誤解:スタンプ結合はデータ結合よりも依存が強い場合があります。
解法ステップ
- 問題文で「情報の受渡し方法」を確認(パラメタ、共有、直接参照など)。
- パラメタのみで、かつ制御情報が含まれていないかを判定する。
- 制御情報が含まれる場合は制御結合、共有なら共通結合、外部から内部を変更するなら内容結合と判断する。
- 最も依存が小さいものを選ぶ(パラメタのみ=データ結合)。
選択肢別の誤答解説
- ア: 共通結合
- 共通領域(グローバル変数など)を複数モジュールが参照・更新する結合で、依存度は高くテストや変更の影響範囲が広くなります。よって誤り。
- イ: 制御結合
- モジュールが別のモジュールに対して「どの処理を行うか」を示す制御フラグを渡す場合の結合で、制御の意図を共有するためデータ結合より強い依存になります。よって誤り。
- ウ: ウ データ結合(正解)
- パラメタだけで値を渡し、制御情報や共有領域を使わないため最も結合度が弱いです。
- エ: 内容結合
- 他モジュールの内部を直接参照・変更する結合で最も強い依存関係になります。よって誤り。
補足コラム
モジュール設計では「結合度を下げ、凝集度を高める」ことが基本原則です。データ結合はインタフェースが明確で変更の影響を局所化しやすく、単体テストや再利用性にも有利です。現代的な設計ではインタフェース定義やAPI、依存注入(DI)を用いてデータ結合に近い形で依存を管理します。逆に共通結合や内容結合は保守性と拡張性を著しく損なうため避けるべきです。
FAQ
Q1: スタンプ結合(構造体を丸ごと渡す)はデータ結合ですか?
A1: スタンプ結合は「データ構造を渡す」ことでモジュールが不要なフィールドに依存する可能性があり、単純なデータ結合より依存が強くなるため区別されます。
A1: スタンプ結合は「データ構造を渡す」ことでモジュールが不要なフィールドに依存する可能性があり、単純なデータ結合より依存が強くなるため区別されます。
Q2: パラメタで制御フラグを渡すとどう評価されますか?
A2: パラメタで制御情報を渡すと制御結合と見なされ、データ結合より結合度が高いと評価されます。
A2: パラメタで制御情報を渡すと制御結合と見なされ、データ結合より結合度が高いと評価されます。
Q3: 結合度と凝集度の違いは何ですか?
A3: 結合度はモジュール間の依存の強さ、凝集度はモジュール内部の要素がどれだけ密接に関連しているかを示す指標です。良い設計は低結合・高凝集を目指します。
A3: 結合度はモジュール間の依存の強さ、凝集度はモジュール内部の要素がどれだけ密接に関連しているかを示す指標です。良い設計は低結合・高凝集を目指します。
関連キーワード: モジュール結合、データ結合、制御結合、共通結合、内容結合、結合度、凝集度、モジュール設計、インターフェース設計

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

