1994 . . (Chidamber ) , [24]. - () . , , .
- . .
1: WMC (Weighted Methods Per Class)
, 1...,c2,..., n. (, ). , 1.
. , , ( ). , . WMC .
. i = 1, WMC .
, . .
1. . . , . , , . , , . (, ), .
2. , , . ( ).
. , , . .
. . .
WMC . , , . . , . , 8 Smalltalk 24 C++ [45]. , , , ; , .
|
|
2: DIT (Depth of Inheritance Tree)
DIT . . 14.3 DIT 3.
. 14.3.
, DIT, .
DIT , . . ( DIT) , .
, DIT , .
3: NOC (Number of children)
, , . NOC , . . 14.3 2 21 22.
NOC , .
NOC . , .
, . NOC , .
DIT NOC . - , . . , : , 7 2 , , 7 + 2 [22].
4: (Coupling between object classes)
, , , . , .
: ; .
.
, , . , , .
, . , , , . .
|
|
. .
5: RFC (Response For a Class)
. RS , . RS
,
{Ri} , , {} .
RFC , :
RFC card{RS}.
: RFC , .
RFC , . .
, , , .
RFC . .
6: LOM (Lack of Cohesion in Methods)
( ). LCOM , (). , LCOM = 0.
:
q ;
q .
q Ij , j
,
= card { Iij | Ii Ij = 0},
= card {Iij | Ii Ij 0}.
-: LCOM , , , .
LCOM.
1: : M1, M2, 3, 4. :
I1={a, b}; I2={, }; I3={, }; I4={, }.
= card (I13, I14, I23, I24, I34) = 5; = card (I12) = 1.
LCOM = 5-1=4.
2: : M1, M2, 3. :
I1 = {a,b};I2={a,c};I3={x,y},
= card (I13, I23) = 2; = card (I12) = 1,
LCOM = 2- 1 = 1.
, . LCOM , . , .
LCOM , , , ( ). LCOM , .
: , LCOM.
- -. , . .
WMC . . , . :
1) :
|
|
Set_interval (min. max)
Setjnethod (method)
Set_precision (precision)
Set_function_to_integrate (function)
Integrate;
2) :
Integrate (function, min, max. method, precision)
WMC2:
.
WMC2 = 5 , . , WMC = 5, WMC = 1.
ANAM (Average Number of Arguments per Method):
ANAM = WMC2/WMC.
ANAM . - , .
, LCOM. LCOM :
LCOM = max (0, - ),
NL :
NLCOM = /( + ).
: 0 NLCOM 1, NLCOM 1, .
- . BIH (Behaviourial Information Hiding):
BIH - (WEOC/WIEOC),
WEOC ( WMC);
WIEOC .
WIE , WMC, , . BIH = 1, . IM, . BIH . , , BIH, , 1. WMC BIH, 1, , .