Page 105 - 《软件学报》2021年第5期
P. 105

晋武侠  等:基于多源特征空间的微服务可维护性评估                                                       1329


                                                    1
                                                                 i
                                               idd = ∑  jR=  σ probability (, ), j i ≠  j            (25)
                                                 i
                                                    R   j= 1
                                                          1
                                                    IDD = ∑  N  idd i                                (26)
                                                          N  i= 1
                 其中,R 表示第 i 行单元格值不为空的单元格个数,idd i 表示一个服务 SC i 依赖其他所有服务的平均概率,N 是服
                 务个数.IDD 是这些服务 idd i 值的平均.
                 3    实   验

                 3.1   原型工具
                    根据本文提出的基于 MFS 的微服务可维护性评估方法,我们设计实现了相应的原型工具 MicroEvaluator.
                 图 1 展示了 MicroEvaluator 评估微服务可维护性的处理流程,输入包括:分析对象的实现制品,即源代码、修订
                 历史和运行轨迹;微服务解耦结果,即实体 E ser 、接口 I、操作 O.然后,使用第 1 节提出的 MFS 建模方法构建多
                 源特征空间 MFS.接着,根据第 2 节提供的度量指标,以 MFS 和微服务的解耦结果 System={SC}={(E ser ,I,O)}作为
                 输入,计算微服务的可维护性度量指标,最后对度量结果进行可视化展示.MicroEvaluator 原型系统的具体实现
                 和用户界面展示,详见 MicroEvaluator 的 Github 仓库(https://github.com/serviceassistor/MicroEvaluator/).










                                      Fig.1    Process of microservice maintainability evaluation
                                               图 1   微服务可维护性评估流程
                 3.2   实验设置

                    实验以 JPetStore 和 Train-Ticket 两个开源系统作为案例.JpetStore(https://github.com/mybatis/JPetStore-6)
                 是在线宠物商店系统,提供用户管理、购物车操作、订单操作等功能,是单体架构的软件系统,常用于教学演示,
                 也被一些研究工作       [3,7] 作为微服务拆分的实验对象.Train-Ticket    [24] 是基于微服务架构的火车票票务系统,由 41
                 个微服务构成,由多种编程语言开发,提供查询、预定、购买车票等功能,是微服务研究工作中常用的基准
                 (benchmark)系统,其中,由 Java 实现的 37 个微服务将作为实验对象.
                    实验采用了参考文献[10]的指标合并方法,将不同的指标度量通过归一化处理以及加权求和,得出综合分
                 数,比较不同微服务的可维护水平.即已知 n 个指标,归一化后的指标度量值为 m 1 ~m n ,权重设置为 w 1 ~w n ,并且
                  n                       n
                 ∑ w = 1,则综合评分为 score = ∑  m w .score 值越高,则可维护性水平越高.实验设置每个指标的权重相同.
                                            i
                    i
                                              i
                 i= 1                    i= 1
                    实验将依据微服务系统维护者的经验结果来评判本文方法有效性.为了尽可能减小人为因素带来的威胁
                 和偏差,实验中,微服务维护者和参与实验评估人员为相同人员.因为系统维护者很了解微服务系统的设计目
                 标,以他们的经验分析结果作为事实(ground-truth)来评估方法的有效性会更有意义.
                 3.3   数据收集

                    本文微服务可维护性评估方法的输入包括两类数据(如图 1 所示):一类是系统的微服务解耦结果(包括每
                 个微服务的实体 E ser 、接口 I、操作 O);另一类是系统实现制品,包括源代码、修订历史、运行轨迹.下面将介绍
                 JPetStore 和 Train-Ticket 案例上这些数据的收集方式,并总结收集到的数据.
   100   101   102   103   104   105   106   107   108   109   110