エンベデッドシステムスペシャリスト 2020年 午前2 問21
問題文
モジュールの結合度が最も低い、データの受渡し方法はどれか。
選択肢
ア:単一のデータ項目を大域的データで受け渡す。
イ:単一のデータ項目を引数で受け渡す。(正解)
ウ:データ構造を大域的データで受け渡す。
エ:データ構造を引数で受け渡す。
🔒 解説は解答すると表示されます
モジュール結合度【午前2解説】
正解の理由
結合度は、モジュール同士がどれだけ強く依存しているかを表します。結合度が低いほど、変更の影響が他のモジュールに及びにくく、保守しやすい設計です。
イのように、必要な単一のデータ項目だけを引数で受け渡す方法は、モジュール間の依存を最小限にできます。この結合は「データ結合」と呼ばれ、選択肢の中で最も結合度が低い方法です。
解法ステップ
-
引数で渡すか、大域的データで共有するかを確認します。
大域的データを使うと、複数のモジュールが同じデータに依存します。そのため、データの変更が他のモジュールに影響しやすくなります。 -
渡すデータが単一項目か、データ構造全体かを確認します。
データ構造全体を渡すと、受け渡す側と受け取る側が、その構造や項目の配置にも依存します。 -
必要なデータだけを引数で渡す方法を選びます。
単一項目を引数で渡すイは、共有範囲と依存する情報が最も小さくなります。
選択肢別の誤答解説
-
ア:単一のデータ項目を大域的データで受け渡す
データ項目は一つでも、大域的データを共有するため、利用するモジュール同士がその共有領域に依存します。引数で必要なデータだけを渡す方法より結合度が高くなります。 -
イ:単一のデータ項目を引数で受け渡す
必要なデータだけを引数として渡す「データ結合」です。共有領域や余分なデータ構造に依存しないため、最も結合度が低くなります。 -
ウ:データ構造を大域的データで受け渡す
大域的データを共有するうえ、データ構造全体にも依存します。変更の影響が広がりやすい方法です。 -
エ:データ構造を引数で受け渡す
大域的データを共有しない点では有利ですが、受け渡す側と受け取る側がデータ構造全体に依存します。単一項目だけを渡す方法より結合度が高くなります。
よくある誤解
-
「引数で渡すなら、どのような渡し方でも結合度が低い」と考える
引数でも、データ構造全体を渡すと、その構造への依存が生じます。必要な項目だけを渡すほうが結合度を低くできます。 -
「扱うデータが一つなら、大域的データでも結合度は低い」と考える
データの数だけでなく、データを共有する方法か、引数で明示的に渡す方法かも重要です。 -
「大域的データの項目数が少なければ、引数より望ましい」と考える
大域的データは利用関係が分かりにくくなり、変更の影響範囲も把握しづらくなります。
補足コラム
結合度の代表例には、必要なデータだけを受け渡すデータ結合、データ構造全体を受け渡すスタンプ結合、複数のモジュールで共通データを利用する共通結合などがあります。
一般に、結合度は低いほど望ましいとされます。設計では、モジュール間で共有する情報を減らし、必要なデータだけを引数として明示的に渡すことが基本です。
FAQ
Q. 引数でデータ構造を渡すのは、なぜ単一項目を渡すより結合度が高いのですか?
A. 受け取る側が、データ構造全体の形式や項目に依存するためです。使わない項目が含まれていても、その構造が変更されると影響を受ける可能性があります。
A. 受け取る側が、データ構造全体の形式や項目に依存するためです。使わない項目が含まれていても、その構造が変更されると影響を受ける可能性があります。
Q. 大域的データを使うことには、どのような問題がありますか?
A. どのモジュールがそのデータを読み書きしているかが分かりにくくなり、変更時の影響範囲を特定しにくくなることです。
A. どのモジュールがそのデータを読み書きしているかが分かりにくくなり、変更時の影響範囲を特定しにくくなることです。
関連キーワード: 結合度、データ結合、スタンプ結合、共通結合、大域的データ、引数渡し

\ せっかくなら /
エンベデッドシステムスペシャリストを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

