😀

凝集度

2020/09/11に公開

凝集度 - cohesion

凝集度(ぎょうしゅうど、コヒージョン、cohesion)とは、情報工学においてモジュール内のソースコードが特定の機能を提供すべく如何に協調しているかを表す度合いである。
出典: Wikipedia

凝集度の計算式にはLCOM1,2,3等のバリエーションがある。LCOM3はLCOM*とも言う。

LCOM1

インスタンス変数のばらばらのセットにアクセスする場合はPを1増やし、それらが少なくとも1つの変数アクセスを共有する場合はQを1増やす。

LCOM1 = 
\left\{
\begin{array}{ll}
  P-Q & (P > Q) \\
  0 & (others)
\end{array}
\right.

出典:Cohesion metrics

LCOM2

クラス変数へのアクセス方法で計算する方法。以下の式で表される。

LCOM2 = \frac{1-\sum(mA)}{m * a}
  • m: クラス内のプロシージャ(メソッド)の数
  • a: クラス内の変数(属性)の数
  • mA: 変数(属性)にアクセスするメソッドの数
  • sum(mA) クラスの属性に対するmAの合計

出典:Cohesion metrics

LCOM3

LCOM2と同様で式の形だけが違う。

LCOM3 = \frac{m-\frac{1}{a}\sum(mA)}{m - 1}

出典:Cohesion metrics

Discussion