モジュール強度・凝集度
暗合的強度(coincidental strength)
プログラムをモジュール化しようとする際に、まったくのランダムなところで機能を分割してモジュールを作る。そのモジュールは暗合強度を持つ。
論理的強度(logical strength)
1つのモジュールに複数の機能が含まれていて呼び出すときに引数で機能を選択するモジュールは論理的強度を持つ。
新しい機能を作るとするときに引数を増やしたりすると、他の機能すべてで追加された引数を考慮するように作り直さなければならない。
時間的強度(classical strength)
初期化処理、終了処理など特定のタイミングで必要な処理をまとめたモジュール
手順的強度(procedural strength)
手順通りに実行される複数の機能があるモジュール
連絡的強度(communicatonal strength)
手順的強度モジュールと同じだが、扱うデータが機能間で関係していなければならない。
例えば、機能1の戻り値が機能2の引数になる。または機能1,2が共通の入出力データを参照する。
機能的強度(functional strength)
1つの固有の機能を実行するモジュール
1組の機能が集約的機能として1つの固有の機能としてまとめて記述できるときはそのモジュールは機能的強度を持つ。
例えば文章を英語に翻訳するモジュールというのは内部では様々な機能に分割できるが集約的機能としてみなせる。
情報的強度(informational strength)
・多重入口点を持つ
・各入口点は単一の固有の機能を行う
・これらの全ての機能は、同じデータ構造のデータを参照し、データ構造に関係のあるものである
情報的強度モジュールは、いくつかの関連した機能的強度モジュールを一緒にパッケージしたものと見ることができる
モジュール結合度
内容結合(content coupling)
モジュールが他のモジュールの中のデータを直接参照している状態
共通結合(common coupling)
グローバル変数を参照するモジュールグループの間で起こる状態
外部結合(external coupling)
共通結合と同じ。ただし参照するグローバル変数は同種のデータ構造を持つ
制御結合(control coupling)
1つのモジュールが他のモジュールへ引数のような形で機能コード、制御スイッチを渡すとき、これらのモジュールは制御結合している。
スタンプ結合(stamp coupling)
2つのモジュールが同じ非グローバル的データ構造を参照しているとき、これら2つのモジュールはスタンプ結合している。
データ結合(data coupling)
複数のモジュール間で必要なデータだけを引数で渡す。データ構造を参照するのではなく、データ構造の中から必要なデータだけを取り出して引数に指定する。このときこれらのモジュールはデータ結合している。
参考 https://www.momoyama-usagi.com/entry/info-software09#i-7 https://zenn.dev/yuyu_hf/articles/355e3ce854ba96#%E3%82%B9%E3%82%BF%E3%83%B3%E3%83%97%E7%B5%90%E5%90%88