Page 103 - 《软件学报》2021年第5期
P. 103
晋武侠 等:基于多源特征空间的微服务可维护性评估 1327
⎧ σ (opr ,opr )
⎪ ∑ message k m , if | O ≠
| 1
j
chm = ⎨ ⎪ (, ) 1 | O | (| O − (11)
| 1)
km
j 2 j j
⎪
⎪ ⎩ 1, if | O =
| 1
j
其中,opr k ,opr m ∈O,是接口 I 提供的不同操作,且 k<m;N 与 IFN 中 N 的含义相同;σ message 是生成 DSM d 的二元映
射函数,已在前述定义.
(3) 接口领域层的内聚度(CoHesion at domain level,简称 CHD)
chd 在领域层度量服务对外接口的内聚程度.chd 值越大,说明该服务提供的对外接口在领域上更加内聚.
类似地,CHD 是微服务系统中所有服务的 chd 的均值.chd 是 Athanasopoulos 等人 [21] 提出的 LoC dom (lack of
domain-level cohesion)的变形,即 chd+LoC dom =1.基于 DSM d 的 chd 计算公式如下:
1
CHD = ∑ N chd j (12)
N j= 1
⎧ σ (opr ,opr )
⎪ ∑ 1 domain k m , if | O ≠
| 1
j
⎪
km
| 1)
chd = ⎨ (, ) | O j | (| O − (13)
j
j
⎪ 2
⎪ 1, if | O =
| 1
⎩
j
其中,opr 和 O 的含义与在 chm 中的含义相同;σ domain 是生成 DSM d 的二元映射函数,已在前述定义.
2.3 可修改性
在理想情况下,一个服务可在不影响其他服务的情况下独立修改和演化,具有可修改性的服务可灵活适应
未来的变化.基于 MFS 的 DSM e ,服务可修改性程度的度量指标如下.
(1) 服务内部共变频度(intra co-change frequency,简称 ICF)
icf 衡量候选服务内部的实体共同修改的频率.icf 值越高,意味着服务内的实体更有可能一起修改演化.ICF
是系统中所有 icf 的平均值:
1
ICF = ∑ N icf j (14)
N j= 1
E | | ser j |
E
1 1
| ser j
c c
icf = ∑ ∑ σ evolution (, ) (15)
j
n
m
| E ser j | m= 1 | E ser j | n= 1
其中,σ evolution (c m ,c n )是实体 c m 与实体 c n 共同修改提交数,是 DSM e 中的二元关系映射函数,已在前述定义;c m ∈
E ser ,c n ∈E ser .如果 m=n,则σ evolution (c m ,c n )=0.
j j
(2) 跨服务共变频度(external co-change frequency,简称 ECF)
ecf 衡量分配在不同服务的实体却一起更改的频率.较低的 ecf 值意味着跨服务边界的实体更有可能独立修
改.ECF 是系统中所有服务 ecf 的平均值:
1
ECF = ∑ N ecf j (16)
N j= 1
E | |E C |
1 1 ser j
| ser j
c c
ecf = ∑ C ∑ σ evolution (, ) (17)
m
j
n
| E ser j | m= 1 | E ser j | n= 1
C
C
其中,ecf j 计算服务 j 中的实体 c ∈ E e s j r 与其他实体 c ∈ E C se j r 的共同修改频度; E ser j 与 E ser j 互为补集, E ser j 是不属
m
n
C
于 E ser j 的实体集合,即 E ser j = U k = 1,2,...,N E ser k ,k≠j;σ evolution (c m ,c n )是 DSM e 中的二元关系映射函数.如果 | E ser j |1= ,则
ecf j =1.
(3) 跨服务实体与服务内部实体共变频率的比值(ratio of ECF to ICF,简称 REI)
REI 衡量跨服务实体共同修改频度与服务内实体共同修改频度的比值.如果共同修改更频繁地发生在服务
内部而不是服务间,则 REI 值会小于 1.0.值越小,说明不同服务一起修改的可能性越低,服务就更有可能会独立