【もじゅーるぎょうしゅうど】

モジュール凝集度 とは?

最終更新:
💡 「このモジュール、一つのことに集中してる?」を測るものさし

一つのモジュールの内部で、機能やデータがどれだけ共通の目的にまとまっているかを考える設計上の性質。保守や再利用を考える目安で、機能の個数だけで決まる点数ではない。

📌 このページのポイント
中の処理が、共通の仕事にまとまる共通の目的がない例画像変換利用者登録メール送信画像サイズ変更の例画像を読み込む大きさを変える画像を保存する機能の数だけでは、凝集度は決まらない外部との依存関係は、結合度で考える
既存の左右比較を使い、右は複数の処理が画像サイズ変更へ協力する例にしました。緑は共通の目的へのまとまり、赤は目的がない寄せ集め。実際の責務や変更理由に応じて判断します。
ひよこ ひよこ
モジュール凝集度って何のこと?
ペンギン先生 ペンギン先生
モジュールの中の機能やデータが、どれだけ共通の仕事にまとまっているか、という見方だよ。例えば画像を読み込み、大きさを変え、保存する処理が「画像のサイズ変更」という目的へ協力しているかを考えるんだ
ひよこ ひよこ
機能が一つだけなら高くて、複数なら低いの?
ペンギン先生 ペンギン先生
個数だけでは決まらないよ。一つの目的に必要な処理やデータは、複数あってもまとまりになる。逆に、画像変換と無関係なユーザー登録を、置き場所の都合だけで一緒にするなら、目的が見えにくくなるんだ
ひよこ ひよこ
凝集度には7段階あるって聞いたけど?
ペンギン先生 ペンギン先生
段階や呼び方は資料によって違うよ。例えば、一つの仕事を完結する機能的凝集、同じタイミングだけで集めた時間的凝集、無関係な寄せ集めの偶発的凝集などがある。情報的凝集を含む整理法もあり、全ての設計に共通する7段階の点数ではないんだ
ひよこ ひよこ
まとまりが高ければ、修正しても問題が起きない?
ペンギン先生 ペンギン先生
目的が明確だと、理解や変更範囲の検討をしやすくなるよ。ただ、バグを防ぐ保証ではない。細かく分けすぎて呼び合う関係が増える場合もあるので、他のモジュールとの依存関係も見るんだ
ひよこ ひよこ
モジュール結合度とはどう違うの?
ペンギン先生 ペンギン先生
凝集度はモジュールの中、結合度はモジュール同士の関係だよ。内部の仕事をよくまとめ、外部への依存を必要な範囲にする設計を目指す。図の分け方も、実際の責務や変更の理由に合わせて判断する例だよ
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「モジュール凝集度」って出てきたら「モジュールの中身がどれだけ一つの仕事に集中してるかの度合い」と思えればだいたいOK!
📖 おまけ:英語の意味
「Module Cohesion」 = モジュールの凝集性
💬 cohesion は「結束・まとまり」という意味で、モジュールの中身がどれだけギュッとまとまっているかを表す言葉だよ

参考資料

← 用語集にもどる