システム開発

【基本情報】初心者向け!モジュール結合度を分かりやすく解説!

お茶ん太
お茶ん太

この記事では、モジュール結合度について、初心者にも分かりやすく図解付きで丁寧に解説しています!

モジュール結合度

  • モジュールはプログラムを構成する部品。
  • モジュール結合度はモジュール間の依存性を表す。モジュール結合度は弱い方が良い。
  • 最もモジュール結合度が弱いのは、単一のデータをモジュール間でやり取りするデータ結合。

モジュールとは

プログラムを作るとき、全ての処理を一気に作るのではなく、ある程度の処理のまとまりで分割して作ります。このまとまり達をモジュールと言います。モジュールはプログラムを構成する部品のようなものですね。

プログラムをモジュールに分割するメリットは①作業の分担ができる、②再利用が可能、③修正が一部で良くなる、などがあります。

モジュールの分け方は色々あります。入力処理→編集処理→出力処理のような処理の流れがある時にそれぞれのブロックで分ける方法や、請求書作成に必要な機能を細かく分けて、それらの処理毎に分ける方法があります。

モジュール結合度

プログラムは複数のモジュール同士が協力し合って動きますが、
モジュール同士が依存しすぎるとモジュールが持つメリットを潰すことになります

プログラムをモジュールに分割するメリットには
①作業の分担ができる、②再利用が可能、③修正が一部で良くなる、がありましたが、
例えば、モジュールBの処理がモジュールAに依存し過ぎていると、
①モジュールAとBを分けて作ることが出来ない
②モジュールBを他のモジュールと一緒に使えない
③モジュールAの修正をするとき、モジュールBも修正しないといけない
みたいに、逆にモジュールで分けない方が良いじゃん!という状況になってしまいます。

モジュールが他のモジュールとどのように依存するかを示す尺度をモジュール結合度と呼び、モジュールの分割を考えるとき、モジュール結合度が重要な指標になります。モジュール結合度は弱い方が良いとされています

モジュール間のデータの渡し方

モジュール結合度はモジュール間のデータの渡し方によって決まります
モジュール間のデータの渡し方は、①どんなデータを渡すのか?②どのようにデータを渡すのか?の2つを考えます。

単一のデータよりデータ構造を渡す方が、モジュール結合度は強くなります。
データ構造を構成するデータのうち、どれか1つでも抜けてしまうとモジュールが動かない可能性があるので、データ構造でデータの受渡しをするモジュールは依存度が高いと言えます。

また、引数で渡すより大域的なデータを渡す方が、モジュール結合度は強くなります。
引数でデータを受け渡す場合、渡すモジュールと受け取るモジュールの2者間でやり取りが完結します。しかし、大域的なデータを渡す場合、全モジュールが更新可能な共通域を使ってやり取りするため、複数のモジュールと関わりが発生するという意味で依存度が高くなり、モジュール結合度が強くなります。

以上を踏まえて、モジュール結合とモジュール結合度の関係は次のようになります。

制御結合の「他のモジュールの処理を制御するデータ」とは、条件分岐に影響を与えるデータのことです。受け取るデータによって処理の内容が変わってしまうので、モジュール結合度は高くなります。

基本情報技術者試験での出題例

サンプル問題問39、令和元年度秋期問46、
平成29年度秋期問48

基本情報技術者
科目A サンプル問題問39
午前試験
令和元年度秋期問46、平成29年度秋期問48

モジュール結合度が最も弱くなるものはどれか。

ア 一つのモジュールで,できるだけ多くの機能を実現する。

イ 二つのモジュール間で必要なデータ項目だけを引数として渡す。

ウ 他のモジュールとデータ項目を共有するためにグローバルな領域を使用する。

エ 他のモジュールを呼び出すときに,呼び出したモジュールの論理を制御するための引数を渡す。

正解と解説

正解は”イ”

ア モジュール内の機能の多さとモジュール結合度は関係ありません。沢山の機能を持っていたとしても無駄に多くのデータや構造を引き渡していれば結合度は強くなってしまいます。

イ これはデータ結合です。データ結合は最も結合度が弱いので正解です。

ウ グローバルな領域とは共通域なので、これは外部結合です。

エ これは制御結合です。

平成30年度秋期問48

基本情報技術者
午前試験 
平成30年度秋期問48

モジュール間の情報の受渡しがパラメータだけで行われる,結合度が最も弱いモジュール結合はどれか。

ア 共通結合
ウ データ結合

イ 制御結合
エ 内容結合

正解と解説

正解は”ウ”

最も結合度が弱いのはデータ結合です。なので答えはウです。