モジュール結合度とは?
モジュール結合度について簡単に解説します。
- そもそもモジュールとは?
- モジュール間の関連性の強さ
- 結合度は弱いほうが良い
順番に見ていきましょう。
そもそもモジュールとは?
プログラムを機能単位に分割した部品のことをモジュールと呼びます。ECサイトを例に挙げるなら、『顧客情報を管理するモジュール』『支払処理を行うモジュール』など、サイトの各機能を担当する小さな部品がモジュールに該当し、これらが互いに連携しながら、サイト全体の機能を実現しています。このように通常は組み合わせて使われます。
モジュール間の関連性の強さ
モジュール結合度とは、他モジュールとの関連性の強さを表す指標です。言い換えれば、モジュール間の依存関係の強さを意味します。結合度が弱いほど、モジュール間の独立性が高く、結合度が強いほど、モジュール間の関係が密接になり、プログラム全体の構造が複雑化してしまいます。つまり結合度は可能な限り弱いほうが望ましいと言えます。
結合度は弱いほうが良い
メンテナンスが容易であるという観点から、モジュールの結合度は弱いほうが良いと言えます。他のモジュールとの関係が薄いため、プログラムの変更や障害発生がシステム全体に及ぼす影響を軽減でき、1つのモジュールで問題が発生した際に、それに応じて修正しなければならない部分が少なくなります。また再使用しやすいのもポイントです。
モジュール結合度の種類
モジュール結合度の種類は以下の6つです。
- データ結合
- スタンプ結合
- 制御結合
- 外部結合
- 共通結合
- 内容結合
なお上から弱い順に並んでいます。
①データ結合
モジュール間でデータのみを受け渡しする結合で、最も結合度が低い形態です。データの受け渡しさえ行えばよいため、モジュールの独立性が高く保てます。このように、データ結合はモジュール設計の中で最も望ましい結合度といえます。データ結合は、モジュールの再使用性を高める上でも非常に重要です。
②スタンプ結合
モジュール間で構造体やレコードなどのデータ構造を受け渡しする結合です。データ結合よりも結合度が高いですが、依然として比較的低い結合度といえます。ただし、データ構造の変更に伴う影響範囲が広がる可能性がある点に注意が必要です。スタンプ結合は、モジュール間の情報共有に適した方式といえるでしょう。
③制御結合
ある1つのモジュールの制御フローが他のモジュールの処理を呼び出す結合です。制御の依存関係があるため、結合度が高くなります。この場合、ある特定のモジュールの変更が他のモジュールにも波及する可能性が高くなります。制御結合は避けるべき結合形態の1つと考えられます。
④外部結合
複数のモジュールが共通の外部データ(ファイルやデータベースなど)を参照する結合です。外部データを介して結び付けられているため、結合度が高くなります。外部データの変更に伴って、関連するモジュールへの影響が大きくなる可能性があります。外部結合は、モジュールの独立性を損なう可能性がある点に注意が必要です。
⑤共通結合
複数のモジュールが共通のグローバル変数を参照する結合です。グローバル変数への依存関係が強いため、結合度が高い部類に入ります。グローバル変数の変更は広範囲に影響を及ぼすため、モジュール設計の際には避けるべき結合形態といえます。共通結合は、モジュールの独立性を著しく損なうことから、極力避けるべきです。
⑥内容結合
モジュール内部の実装細部にまで依存関係がある結合で、最も結合度が高い形態です。モジュール内部の実装に強く依存しているため、保守性が低下します。内容結合は望ましくない結合形態であり、モジュール設計の際には極力避ける必要があります。内容結合は、モジュールの再使用性を阻害する結合形態だと言えます。
モジュール結合度の覚え方
情報処理技術者試験を乗り越えるための覚え方を紹介します。
- モジュール結合度の英語表記
- モジュール結合度の語呂合わせ
結合度の内容を暗記するより、順番を語呂合わせで覚える方が近道でしょう。
①モジュール結合度の英語表記
モジュール結合度の英語表記は “Module Coupling” です。“Module” は『部品』を意味し、“Coupling” は『結合』という意味を持ちます。したがって、合わせて『モジュールの結合度』という意味になります。覚え方としては、その名の通り、複数のモジュールがどのように結びついているか、その密接さをイメージして覚えると良いでしょう。
②モジュール結合度の語呂合わせ
結合です、制御ができない
独立性 高←←←←←←←低
えっきゅのブログ様
結合度 弱→→→→→→→強
私は『えっきゅのブログ』様で紹介されている語呂合わせで、基本・応用情報技術者試験を乗り切りました。モジュール結合度の頭文字を繋げたもので、シンプルかつ短くまとまっていて、非常に覚えやすかったので共有させていただきます。
モジュール強度との違い
よく似た用語である『モジュール強度』との違いを解説します。
- 強度はモジュール内の機能の関連性
- 独立性・結合度・強度の関係
順番に見ていきましょう!
①強度はモジュール内の機能の関連性
モジュール強度は、モジュール内部の機能の関連性の強さを指しており、どれだけ単一の機能に特化しているかを表します。強度が高いほど独立性が高く、メンテナンス性が向上します。要するにモジュール強度はモジュール『内の』機能関係を表し、モジュール結合度は『他の』モジュールとの関係の強さを表すという点で異なります。
②独立性・結合度・強度の関係
- 評価 優←←←←←←←←←←劣
- 独立性 高←←←←←←←←←←低
- 結合度 弱←←←←←←←←←←強
- 強度 強←←←←←←←←←←弱
独立性が高いことで、各モジュールは他のモジュールから分離され、結合度が低いことで、それらのモジュール間の相互作用が最小限に抑えられ、強度が高いことで、各モジュールがその機能をしっかりと果たすことができます。これらの要素が組み合わさることで、全体としての品質が向上し、メンテナンスや拡張がしやすい設計になります。
コメント