SE基本情報に出るIT用語

モジュール結合度とは?プログラムの部品同士のくっつき度合い

どうも!ひよこSE(@PiyoOct)です。

モジュール結合度ってなに?

ざっくりといえば、「プログラムの同士のくっつき度合い」です。

基本情報技術者試験むけに丸暗記するなら、結合度が弱い順に

(弱い)データ結合>スタンプ結合>制御結合>外部結合>共通結合>内容結合(強い)

であって、データ結合が一番弱くて単一のデータを渡すものです。

「んん?」となってると思います。

もうちょい詳しく解説するので、気になる人はぜひ続きを読んでください。

スポンサーリンク

モジュールとは、プログラムの部品のこと

そもそも、モジュールってなんやねん?

ってなっている人も、いますよね。

1つのプログラム、部品として機能しているのが「モジュール」

モジュールをシンプルに説明すると、「プログラムの部品」のことです。

例えば、ドラクエだと、こんな流れでゲームが始まります。

  1. 冒険の書をつくる
  2. オープニングムービーがはじまる

実際に、ドラクエがどういう風に作られているかは分かりません。

あくまでもイメージです。

ドラクエの、オープニングムービーが流れるまでに、

  1. 冒険の書を作るプログラム
  2. オープニングムービーを流すプログラム

の2つにプログラムが分かれているとします。

モジュールとは

2つに分かれているプログラムはそれぞれ、一つの部品として機能します。

冒険の書を作るプログラムが、一つの部品ってこと?

そういうことです!

冒険の書を作るプログラムであれば、それだけで1つのプログラム、部品として動かせます。

1つのプログラム、部品として機能しているのが「モジュール」です。

モジュールは一つだけあっても意味がない。複数あるもの

モジュールは、あくまでも「プログラムの部品」なので、複数あるものです。

どういうこと?

さっきの例だと、ドラクエというゲームに、「冒険の書を作るプログラム」だけがあっても、意味がないですよね。

そのあとに、オープニングムービーが始まって・・・

のようにストーリーが進行しなければ、「ドラクエ」としての意味がありません。

なので、モジュール(プログラムの部品)は一つだけあっても意味がなく、複数あるものです。

モジュール結合度は全部で6つ

さて、モジュールの意味が、しっかりと理解できていれば怖いものなし。

モジュール結合度は全部で6つです。

  1. データ結合
  2. スタンプ結合
  3. 制御結合
  4. 外部結合
  5. 共通結合
  6. 内容結合

データ結合

データ結合とは、一つのデータを別の部品(=モジュール)にポンッと渡すイメージです。

一つのデータというのは、ドラクエで言えば、「主人公(勇者)の名前」だと思ってください。

データ結合のイメージ

仲間と会話をするときなどに、主人公の名前は最初に決めた名前になっていますよね。

あれはまさに、主人公の名前という一つのデータを使っているイメージです。

スタンプ結合

スタンプ結合とは、データのかたまりを、別の部品(=モジュール)に渡すイメージです。

ドラクエで例えるなら、味方の攻撃力と敵の防御力の2つ(複数)セットで、ダメージを計算するために使うイメージです。

スタンプ結合のイメージ

制御結合

制御結合とは、別の部品の動作をコントロールするイメージです。

戦いのときに、こうげき、ぼうぎょ、逃げるを選ぶと、ちゃんとその通りに動いてくれるイメージです。

制御結合のイメージ

外部結合

外部結合とは、一つのデータを読み書きが可能な(書き換えることができる)として、渡すことです。

※ちからつきたので、ここからはイメージでお願いしまする(*´ω`)。

ドラクエで言えば、主人公の名前は変更できませんが、攻撃力・守備力は装備やレベルによって常に変わります。

装備やレベルが変わると、攻撃力・守備力が(別のプログラムによって)書き換わるイメージです。

共通結合

共通結合とは、データのかたまりを、書き換えるときに使います。

例えば、セーブがわかりやすいです。

セーブする前のデータが、お祈りした瞬間に、新しいデータに上書きされるイメージです。

内容結合

内容結合は、あるプログラムが別のプログラムを、直接参照(のぞき見)するイメージです。

例えば、モンスター図鑑(倒したモンスターの一覧)がそれ・・・だと思います(ここは、ちょいと自信ない)。

全く別のプログラムなのに、一心同体のような動きをするものです!

モジュール結合度が一番弱いのはデータ結合

モジュール結合度が一番弱いのはデータ結合です。

(弱い)データ結合>スタンプ結合>制御結合>外部結合>共通結合>内容結合(強い)

なんで?

モジュール(プログラムの部品)を、別のモジュールに渡すときに、一つのデータしか渡さないからですね。

まぁ、見るからに弱そうだけど・・・。

  • 主人公の名前だけをわたすのか?(データ結合)
  • 攻撃力・守備力のように、複数セットなのか?(スタンプ結合)
  • 別のプログラムを、もとのプログラムがコントロールできるのか?(制御結合)
  • あるいは、書き換え可能なデータを渡すのか?(外部結合・共通結合)
  • 一心同体。常にのぞき見が可能なのか?(内容結合)

プログラム同士が連携するときに、「渡す内容で強さが変わるんだなぁ~」以上に、ツッコミ始めるとわけわかんなくなるかと

割り切ってくださいまし(-_-;)。

データ結合が一番弱くて、単一のデータとだけ、覚えておけばよし!

モジュール結合度で一番出るのは、データ結合ですからね(*´ω`)。

まとめ:モジュール結合度とは部品のくっつき度合い。データ結合を覚えるべし

まとめると

モジュール結合度とは部品のくっつき度合いで、データ結合が一番弱くて単一のデータを渡す

とだけ、覚えておけば、最悪どうにかなります(*´ω`)。

モジュールとは、プログラムの部品のこと。プログラムの部品(モジュール)が複数あって、一つの機能(ドラクエ)が完成します。

データ結合に使われるデータは、主人公の名前のように、単一のデータ。

別のモジュールに、主人公の名前だけを渡すので、モジュール結合度の中で、データ結合が一番弱い」みたいに、なんとなくで覚えて乗り越えてくださいまし(-_-;)。

スポンサーリンク

コメント

タイトルとURLをコピーしました