モジュール設計(凝集度・結合度)とは?凝集度と結合度

公開: 更新: カテゴリ: マネジメント系

30秒で結論

モジュール設計とは(全体像)

モジュール設計とは、大きなプログラムを、「機能ごとのまとまった部品(モジュール)」に分けて作る設計の進め方のことだ。

ぜんぶを1つのかたまりで作ると、直すのも使い回すのも大変。そこで、役割ごとに小さな部品に分けておくと、分かりやすく、直しやすく、使い回しやすくなる。

この「部品の分け方が、良いか・悪いか」を測るものさしが2つある。凝集度結合度だ。次でやさしく見ていこう。


詳しく:凝集度と結合度

ここが心臓部。2つのものさしを表で押さえよう。向き(高いほど良いか、低いほど良いか)がポイントだ。

2つのものさし

ものさし何を見るか良いのは
凝集度1つの部品の中身が、どれだけ1つの仕事に集中しているか高いほど良い
結合度部品どうしが、どれだけ依存し合っているか低いほど良い

そして目標が、高凝集・低結合(High Cohesion, Low Coupling)。中身は1つの仕事に集中させ(凝集度を高く)、部品どうしのつながりはゆるく(結合度を低く)する、ということだ。

ここで一番のひっかけ。「結合度は高いほど良い」と思い込むと誤り。結合度は低いほど良い。ものさしの向きが逆なので注意だ。

わかりやすく言い換えると

身近なたとえで整理しよう。

モジュール設計は、「料理を、下ごしらえ・焼く・盛り付けと、役割ごとの担当に分ける」イメージ。1人で全部やるより、役割で分けたほうが直しやすい。要するに、仕事を役割ごとの部品に切り分ける考え方だ。

凝集度は、「1人の担当が、1つの仕事に集中しているか」。1人があれもこれも兼ねるより、1つに集中しているほうが良い(だから高いほど良い)。

結合度は、「担当どうしの連絡が、どれだけ密に絡んでいるか」。お互いべったり依存していると、1人の変更が全員に波及する。だから、つながりはゆるいほうが良い(低いほど良い)。つまり、中身は集中・つながりはゆるく、と覚えておこう。


試験のツボ

🔴 一番出る:2つのものさしの向き

①凝集度は高いほど良い(中身が1つの仕事に集中)

②結合度は低いほど良い(部品どうしのつながりがゆるい)

🔴 次に出る:目標は高凝集・低結合

①中身は集中(高凝集)、つながりはゆるく(低結合)

②直しやすく、使い回しやすい部品になる

🟡 押さえると安定:凝集度と結合度の違い

①凝集度は「部品の中身」を見る

②結合度は「部品どうしのつながり」を見る


よくある間違い

「結合度は、高いほど良い」→ ✗  結合度は低いほど良い。つながりがゆるいほうが、直しやすく独立している。

「凝集度と結合度は、同じことを指す言葉だ」→ ✗  凝集度は「部品の中身」、結合度は「部品どうしのつながり」。見ているものが違う。

「凝集度は、低いほど良い」→ ✗  凝集度は高いほど良い。中身が1つの仕事に集中しているほうが良い。


試験での出題パターン

実際の問題でたしかめてみよう。

オリジナル問題1(モジュール設計の正体)

📝 オリジナル問題 1 モジュール設計の正体

モジュール設計に関する次の記述のうち、最も適切なものはどれか。

  1. プログラムを、機能ごとの部品(モジュール)に分けて作る設計である
  2. 社員の出退勤を記録して、毎月の給与を計算するためのしくみのことである
  3. 取引先へ毎月の請求書を郵送する、決まった事務作業のことを指す
  4. 完成したシステムを宣伝して、より多く売るための広告活動である
プロネコ
プロネコ 解答・解説

解答は 1 だよ。

モジュール設計は、プログラムを、機能ごとの部品(モジュール)に分けて作る設計だよ。役割ごとに分けると、直しやすく使い回しやすいんだ。

選択肢2は給与計算、選択肢3は請求書の事務、選択肢4は広告で、どれも違うよ。

選択肢判定理由
1機能ごとの部品に分ける設計で正しい
2給与計算のしくみではない
3請求書の事務の話
4広告活動ではない

オリジナル問題2(ものさしの向き)

📝 オリジナル問題 2 凝集度と結合度の向き

凝集度と結合度の良し悪しに関する次の記述のうち、最も適切なものはどれか。

  1. 凝集度も結合度も、ともに低いほど良い設計だとされている
  2. 凝集度は低いほど、結合度は高いほど良い設計だとされている
  3. 凝集度も結合度も、ともに高いほど良い設計だとされている
  4. 凝集度は高いほど、結合度は低いほど良い設計だとされている
プロネコ
プロネコ 解答・解説

解答は 4 だよ。

凝集度は高いほど、結合度は低いほど良いよ。これが「高凝集・低結合」という目標だね。

選択肢1・2・3は、ものさしの向きが違っていて誤りだよ。

選択肢判定理由
1凝集度は高いほど良い
2向きが逆
3結合度は低いほど良い
4高凝集・低結合で正しい

オリジナル問題3(凝集度と結合度の違い)

📝 オリジナル問題 3 凝集度と結合度の違い

凝集度と結合度の違いに関する次の記述のうち、最も適切なものはどれか。

  1. 凝集度も結合度も、社員の給与を計算することだけを指している
  2. 凝集度は部品の中身、結合度は部品どうしのつながりを見るものさしである
  3. 凝集度も結合度も同じ意味で、呼び名が2つあるだけで違いはないとされる
  4. 凝集度は、取引先へ請求書を郵送する事務だけを表すものさしである
プロネコ
プロネコ 解答・解説

解答は 2 だよ。

凝集度は部品の中身、結合度は部品どうしのつながりを見るものさしだよ。見ているものが違うんだ。

選択肢1は給与計算、選択肢3は「違いはない」、選択肢4は請求書の事務で、いずれも誤りだよ。

選択肢判定理由
1給与計算のものではない
2中身とつながりの違いで正しい
3両者には違いがある
4請求書の事務のものではない

まとめ

押さえどころ

次に学ぶ


執筆: SikakuQuest編集部

勉強は、クエストになった。

資格の勉強を、冒険に変えるRPG学習アプリ

App Storeで見る