システムアーキテクト 2013年 午前2 問06
問題文
モジュール設計に関する記述のうち、モジュール強度(結束性)が最も強いものはどれか。
選択肢
ア:ある木構造データを扱う機能をデータとともに一つにまとめ、木構造データをモジュールの外から見えないようにした。(正解)
イ:複数の機能のそれぞれに必要な初期設定の操作が、ある時点で一括して実行できるので、一つのモジュールにまとめた。
ウ:二つの機能A、Bのコードは重複する部分が多いので、A、Bを一つのモジュールとし、A、Bの機能を使い分けるための引数を設けた。
エ:二つの機能A、Bは必ずA、Bの順番に実行され、しかもAで計算した結果をBで使うことがあるので、一つのモジュールにまとめた。
🔒 解説は解答すると表示されます
モジュール結束性【午前2解説】
正解の理由
選択肢アは「木構造を扱う処理とそのデータを一体化し、外部からデータ表現を隠蔽している」点で最も結束性が高くなります。モジュール内の要素が単一の抽象データ型(木構造の管理)に寄与しており、機能のまとまりが明確です。情報の隠蔽(カプセル化)により内部実装の変更がモジュール外へ波及しにくく、保守性・再利用性が高まるため、結束性(モジュール強度)が最も強いと判断します。
解法ステップ
- 各選択肢が示す「結束性の種類」を読み取る(例:時間的、順次、論理的、情報的など)。
- 結束性の強弱の一般的な順序を確認する(下に簡潔に示す)。
- それぞれのモジュールが「単一目的か」「複数目的か」「処理の順序依存か」「データを中心にまとめているか」を比べる。
- 単一の概念(データ+操作)にまとまっているものを最も強い結束性と判断する。
※ 結束性のおおまかな強弱(弱→強の代表的順序)
偶発的 < 論理的 < 時間的 < 手続き的 < 順次的 < 情報的/機能的
(ここでは ア が情報的/機能的な性質を持ち最強と扱う)
(ここでは ア が情報的/機能的な性質を持ち最強と扱う)
選択肢別の誤答解説
-
ア(正解)
木構造という単一の抽象概念に関わるデータと操作をまとめ、外部に表現を出さない。モジュールの責務が明確で、内部実装の変更が局所化されるため結束性が最も強い。 -
イ(初期設定を一括)
これは「時間的結束(時間的/時相的 cohesion)」に該当します。複数の操作を「同じ時点に実行される」という理由でまとめているため、目的が異なる処理でも一緒にされがちであり、情報的/機能的結束に比べて弱い。 -
ウ(機能を引数で切り替え)
これは「論理的結束(logical cohesion)」に相当します。複数の機能を「同じカテゴリだから」という論理でまとめ、引数で分岐させているため、モジュールの責務が拡散しやすく、結束性は低い。 -
エ(順序が固定でAの結果をBが使う)
これは「順次結束(sequential cohesion)」です。モジュール内の要素がデータの流れや実行順序で結び付いているため、時間的・手続き的結束よりは強いが、データ+操作を単一概念で隠蔽するア(情報的/機能的結束)よりは弱い。したがってエはアの次に強い位置づけになります。
よくある誤解
- 「順次結束は最強だ」とする誤解:順次結束は強い結束性ですが、モジュールが単一の抽象的目的(例:特定データ型の全責務)でまとまっている情報的・機能的結束の方がさらに強く扱われます。
- 「データと処理を分ければ結合度が下がり結束性が上がる」との混同:データと処理を適切にまとめてカプセル化することが、高結束・低結合の理想です。むやみに分離するだけでは責務分散で保守性が下がることがあります。
- 「引数で機能切替は良い設計」:短期的には便利でも、引数で異なる責務を切り替える設計は論理的結束となり、拡張・テストで不利になります。
補足コラム
モジュール設計では「結束性(cohesion)」と「結合度(coupling)」のバランスが重要です。高い結束性はモジュールが一つの目的に集中していることを示し、低い結合度はモジュール間の依存が小さいことを示します。特にオブジェクト指向では「情報隠蔽」「単一責任原則(Single Responsibility Principle)」が結束性を高める実践法となります。
実務では、データとそれに対する操作をまとめた抽象データ型(ADT)やクラス設計が、試験で問われる「最も強い結束性」に該当するケースが多いです。
実務では、データとそれに対する操作をまとめた抽象データ型(ADT)やクラス設計が、試験で問われる「最も強い結束性」に該当するケースが多いです。
FAQ
Q1: 順次結束と通信的(情報的)結束の違いは?
A1: 順次結束は要素がデータの流れや実行順序で結び付く設計(Aの出力がBの入力となる等)です。情報的結束はモジュールが単一のデータ構造や抽象概念に関する複数の操作をまとめ、外部から内部表現を隠す点が特徴で、単一の責務に強く集中します。
A1: 順次結束は要素がデータの流れや実行順序で結び付く設計(Aの出力がBの入力となる等)です。情報的結束はモジュールが単一のデータ構造や抽象概念に関する複数の操作をまとめ、外部から内部表現を隠す点が特徴で、単一の責務に強く集中します。
Q2: 情報隠蔽が常に最適か?
A2: 多くの場合で有利ですが、過度なカプセル化でインタフェースが冗長になったり性能要件で不都合が生じることもあります。目的に応じて適切な抽象化の粒度を選ぶことが大事です。
A2: 多くの場合で有利ですが、過度なカプセル化でインタフェースが冗長になったり性能要件で不都合が生じることもあります。目的に応じて適切な抽象化の粒度を選ぶことが大事です。
Q3: 試験で短く判断するコツは?
A3: 「モジュールが単一の抽象的な責務に集中しているか」「内部データが外部に見えないか」を基準に選ぶと速く正答にたどり着けます。
A3: 「モジュールが単一の抽象的な責務に集中しているか」「内部データが外部に見えないか」を基準に選ぶと速く正答にたどり着けます。
関連キーワード: モジュール結束性、情報的結束、順次結束、時間的結束、論理的結束、カプセル化、単一責任原则、凝集度、結合度

\ せっかくなら /
システムアーキテクトを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

