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.值越小,说明不同服务一起修改的可能性越低,服务就更有可能会独立
   98   99   100   101   102   103   104   105   106   107   108