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 案例上这些数据的收集方式,并总结收集到的数据.