モジュール強度(凝集度)とは何か?モジュール強度の種類と結合度について解説

2020年3月15日

モジュール強度の概要

モジュール強度とは、プログラム全体の中のモジュールに収められている機能が、どの程度独立して存在しているかの度合いを表す指標です。
モジュール強度は「凝集度」「結束性」「結合度」とも呼ばれます。
この強度が高ければメンテナンス性が向上し、逆に強度が低ければメンテナンス性も低下します。

モジュール強度の種類

モジュール強度は以下のように7段階で測られ、機能的強度が最も強度が高く、暗号(暗合)的強度が最も強度が低い状態になります。

強度モジュールの状態
機能的強度1つのモジュールに1つの機能のみが格納されている状態。
情報的強度特定のデータ構造とその操作が1つにまとめられている状態。
連絡的強度一定の順番通りに実行され、かつ先に実行される機能の結果などを後の機能が参照・使用するような、連続した機能をまとめた状態。
手順的強度一定の順番通りに実行される複数の機能がまとめられた状態。
時間的強度近い時間内にまとめて実行されることの多い複数の機能がまとめられた状態。
論理的強度関係のある複数の機能がまとめられ、呼び出される際の引数の値によって、どの機能が実行されるかが決定する状態。
暗号(暗合)的強度関連のない複数の機能がまとめられた状態。

応用情報技術者試験の過去問からモジュール強度の事例を紹介

平成29年度秋期の応用情報技術者試験では、以下のような問題が出題されています。

モジュール設計に関する記述のうち、モジュール強度(結束性)が最も高いものはどれか。

ア)ある木構造データを扱う機能をこのデータとともに一つにまとめ、木構造データをモジュールの外から見えないようにした。
イ)複数の機能のそれぞれに必要な初期設定の操作が、ある時点で一括して実行できるので、一つのモジュールにまとめた。
ウ)二つの機能A、Bのコードは重複する部分が多いので、A、Bを一つのモジュールにまとめ、A、Bの機能を使い分けるための引数を設けた。
エ)二つの機能A、Bは必ずA、Bの順番に実行され、しかもAで計算した結果をBで使うことがあるので、一つのモジュールにまとめた。

平成29年度秋期応用情報技術者試験午前問46より

ここからは、この応用情報技術者試験の問題をもとに、モジュール強度の事例を見ていきましょう。

情報的強度の事例

先ほどの問題の選択肢アは情報的強度を持っています。
選択肢アに書かれている「モジュールの外から見えないようにした」というのは、ある特定の機能をまとめてカプセル化を行ったということを意味しています。
カプセル化を行うと、モジュールの外からのプログラムの干渉を受けなくなります。これにより、モジュールは取り外し可能なパーツのような存在になり、モジュールの独立性を高めることができます。

連絡的強度の事例

選択肢エのように、順番で実行される機能を1つのモジュールとしてまとめたものは連絡的強度を持っています。

時間的強度の事例

選択肢イのように、時間的に同じタイミングで行われる機能をまとめたものは時間的強度を持っています。

論理的強度の事例

選択肢ウのように、同じような処理が多いために一つにまとめられた機能は論理的強度を持っています。

正解は選択肢ア

以上のように、平成29年度秋期応用情報技術者試験午前問46の答えは選択肢アです。

補足:そもそもモジュールとは何か?

モジュールはシステムの部品

そもそもモジュールとは何なのでしょうか?
システム開発の際に用いられるモジュールとは、システムの部品のことを指します。
多くの場合、それ単体でも使えるような状態の部品を指します。