この試験の対策ガイド

基本情報技術者試験 対策ガイド

合格率・勉強法・参考書の選び方をまとめています

見る →
答えと解説を見る(先に解くのがおすすめ)

正解は イ

解説

モジュール結合度に関する問題です。モジュール結合度とは、モジュール間の依存の強さを表す尺度で、結合度が弱い(低い)ほどモジュールの独立性が高く、変更の影響が波及しにくい良い設計とされます。結合度は弱い順に、データ結合(必要なデータ項目だけを引数で渡す)→ スタンプ結合(構造体など必要以上のデータの塊を渡す)→ 制御結合(相手の処理を制御するフラグを渡す)→ 外部結合・共通結合(グローバル領域でデータを共有)→ 内容結合(相手の内部を直接参照・変更)と分類されます。選択肢の中で最も結合度が弱いのは、イの「二つのモジュール間で必要なデータ項目だけを引数として渡す」データ結合です。必要最小限のデータだけが明示的なインタフェース(引数)を通じて受け渡されるため、モジュール間の依存が最も小さくなります。イが正解です。結合度と対になる概念のモジュール強度(凝集度)は「高いほど良い」であり、結合度は「弱いほど良い」という方向の違いも併せて覚えておきましょう。

なぜ他の選択肢は違うのか

選択肢 ア
一つのモジュールでできるだけ多くの機能を実現するという方針は、モジュール間の結合度の話ではなく、モジュールの分割方針に関する記述です。多機能を詰め込んだモジュールは凝集度(モジュール強度)が低くなり、保守性が悪化します。モジュール設計の原則は「単一の機能に絞って凝集度を高く、結合度を弱く」であり、この記述はその逆方向です。
選択肢 ウ
他のモジュールとデータ項目を共有するためにグローバルな領域(共通領域)を使用するのは共通結合に該当し、結合度はかなり強い部類です。グローバル領域はどのモジュールからも読み書きできるため、データがいつどこで変更されたかを追跡しにくく、変更の影響範囲が見えにくくなります。引数で明示的に渡すデータ結合より明らかに結合度が強い方式です。
選択肢 エ
他のモジュールを呼び出すときに、呼び出したモジュールの論理(処理の流れ)を制御するための引数(制御フラグ)を渡すのは制御結合に該当します。呼び出し側が相手の内部の処理分岐を知っている必要があるため、データ結合よりも依存が強くなります。渡すものが「純粋なデータ」か「相手の動きを制御するフラグ」かが、データ結合と制御結合の判別ポイントです。

解くときのポイント

結合度は弱い順に「データ<スタンプ<制御<外部・共通<内容」。「必要なデータだけを引数で」=データ結合=最弱で最良。グローバル領域=共通結合、制御フラグ=制御結合、と特徴語で判別する。