この記事ではモジュール結合度についてIT初心者にも分かりやすく解説します。
モジュール結合度
- モジュールはプログラムを構成する部品。
- 最もモジュール間の関係性が低いのは、単一なデータを引数として受け渡しするデータ結合。
応用情報ではモジュール結合度に関する問題が出題されます。是非最後までご覧ください。
モジュールとは
プログラムを作るとき、全ての処理を一気に作るのではなく、
ある程度の処理のまとまりで分割して作ります。このまとまり達をモジュールと言います。
モジュールはプログラムを構成する部品のようなものですね。
プログラムをモジュールに分割するメリットは
①作業の分担ができる、②再利用が可能、③修正が一部で良くなる、などがあります。
モジュールの分け方は色々あります。
入力処理→編集処理→出力処理で分ける方法や、処理毎に分ける方法があります。
モジュール結合度
プログラムは複数のモジュール同士が協力し合って動きますが、
モジュール同士が依存しすぎるとモジュールが持つメリットを潰すことになります。
プログラムをモジュールに分割するメリットには
①作業の分担ができる、②再利用が可能、③修正が一部で良くなる、がありましたが、
例えば、モジュールBの処理がモジュールAに依存し過ぎていると、
①モジュールAとBを分けて作ることが出来ない
②モジュールBを他のモジュールと一緒に使えない
③モジュールAの修正をするとき、モジュールBも修正しないといけない
みたいに、逆にモジュールで分けない方が良いじゃん!という状況になってしまいます。
モジュールが他のモジュールとどのように依存するかを示す尺度をモジュール結合度と呼び、モジュールの分割を考えるとき、モジュール結合度が重要な指標になります。
モジュール結合度は弱い方が良いとされています。
モジュール間のデータの渡し方
モジュール結合度はモジュール間のデータの渡し方によって決まります。
モジュール間のデータの渡し方は、
①どんなデータを渡すのか?②どのようにデータを渡すのか?の2つを考えます。
単一のデータよりデータ構造を渡す方が、モジュール結合度は強くなります。
データ構造を構成するデータのうち、どれか1つでも抜けてしまうとモジュールが動かない可能性があるので、データ構造でデータの受渡しをするモジュールは依存度が高いと言えます。
また、引数で渡すより大域的なデータを渡す方が、モジュール結合度は強くなります。
引数でデータを受け渡す場合、渡すモジュールと受け取るモジュールの2者間でやり取りが完結します。しかし、大域的なデータを渡す場合、全モジュールが更新可能な共通域を使ってやり取りするため、複数のモジュールと関わりが発生するという意味で依存度が高くなり、モジュール結合度が強くなります。
以上を踏まえて、モジュール結合とモジュール結合度の関係は次のようになります。
制御結合の「他のモジュールの処理を制御するデータ」とは、条件分岐に影響を与えるデータのことです。受け取るデータによって処理の内容が変わってしまうので、モジュール結合度は高くなります。
応用情報技術者試験での出題例
令和6年度春期問46
応用情報技術者
午前試験 令和6年度春期問46
モジュール結合度に関する記述のうち,適切なものはどれか。
ア あるモジュールがCALL命令を使用せずにJUMP命令でほかのモジュールを呼び出すとき,このモジュール間の関係は,外部結合である。
イ 実行する機能や論理を決定するために引数を受け渡すとき,このモジュール間の関係は,内部結合である。
ウ 大域的な単一のデータ項目を参照するモジュール間の関係は,制御結合である。
エ 大域的なデータを参照するモジュール間の関係は,共通結合である。
正解は”エ”
ア 内部結合です
イ 制御結合です
ウ 外部結合です
エ 共通結合です
令和5年度春期問46
応用情報技術者
午前試験 令和5年度春期問46
モジュールの独立性を高めるには,モジュール結合度を低くする必要がある。モジュール間の情報の受渡し方法のうち,モジュール結合度が最も低いものはどれか。
ア 共通域に定義したデータを関係するモジュールが参照する。
イ 制御パラメータを引数として渡し,モジュールの実行順序を制御する。
ウ 入出力に必要なデータ項目だけをモジュール間の引数として渡す。
エ 必要なデータを外部宣言して共有する。
正解は”ウ”
最もモジュール結合度が低いのはデータ結合で、データ結合の説明はウです。
令和4年度春期問46
応用情報技術者
午前試験 令和4年度春期問46
モジュールの独立性の尺度であるモジュール結合度は,低いほど独立性が高くなる。次のうち,モジュールの独立性が最も高い結合はどれか。
ア 外部結合 イ 共通結合 ウ スタンプ結合 エ データ結合
正解は”エ”
最もモジュール独立性が高い、つまり、モジュール結合度が低い結合はデータ結合です。