Page 72 - 《软件学报》2021年第5期
P. 72
1296 Journal of Software 软件学报 Vol.32, No.5, May 2021
Table 4 Decomposition results of the case Jpetstore using the DFD-A method (Continued)
表 4 Jpetstore 案例应用 DFD-A 方法的拆分结果(续)
微服务 类 数据库表
ik.am.jpetstore.domain.model.Sequence −
OrderService ik.am.jpetstore.domain.model.LineItem −
ik.am.jpetstore.domain.model.UserDetails −
ik.am.jpetstore.app.account.AccountController Account
ik.am.jpetstore.app.account.AccountForm Profile
ik.am.jpetstore.app.account.AccountHelper Bannerdata
AccountService ik.am.jpetstore.domain.model.Account Signon
ik.am.jpetstore.domain.service.account.AccountServiceImpl −
ik.am.jpetstore.domain.service.user.UserDetailsServiceImpl −
ik.am.jpetstore.app.account.PasswordEqualsValidator −
ik.am.jpetstore.app.cart.CartHelper Cart
ik.am.jpetstore.domain.model.Cart −
ik.am.jpetstore.app.common.session.HttpSessionEventLoggingListener −
CartService ik.am.jpetstore.domain.model.CartItem −
ik.am.jpetstore.app.cart.CartController −
ik.am.jpetstore.app.cart.CartForm −
ik.am.jpetstore.app.common.session.EnableSynchronizeOnSessionPostProcessor −
3.3 结果分析
本文旨在从优化目标的实现效果来评估所提出的 DFD-A 方法,即在保证拆分结果有效性的基础上,提高方
法的效率和灵活性.
1) 有效性
应用优化后的方法对 Jpetstore 案例进行拆分后给出的方案有效性,是本文在评估过程中优先关注的,有效
性的评估需要依赖相应的度量指标.参照相关研究中可用于可自动化评估的指标 [3,22] ,本文对于拆分方案有效
[3]
性的评估主要涉及个体微服务和整体系统两个层级.其中,个体微服务层级的评估延用 DFD 方法研究 中的耦
合和内聚度量指标——向心耦合(Ca)、离心耦合(Ce)、不稳定性(I)和关系内聚(RC).由于 I 和 RC 与性能存在显
著的相关性 [23] ,可以反映特定方案的整体性能表现,因此,本文从系统层级计算个体微服务与这两个指标相关的
均值 Avg 和变异系数 Cv(coefficient of variation)(标准差与均值之间的比率,主要用于识别数据中的异常值,Cv
的值越大,表示差异越大) [22] 来预测评估拆分后系统相应指标的整体情况和服务间的差异情况.所使用的评估指
标具体见表 5.
Table 5 Metrics to evaluate the decomposition results [3,22]
表 5 拆分结果评估指标 [3,22]
类型 层级 指标 说明
Ca((afferent coupling))表示依赖该包(服务)包含类的外部包(服务)
微服务 Ca
包含类的数目,数值越大,表示某个包(服务)的职责越大、越稳定
Ce(efferent coupling)表示被该包(服务)包含类所依赖的外部包
微服务 Ce
(或服务)的数量,数值越大,表示该包越不独立、越不稳定
耦合 I(instability)通过计算Ce和Ce+Ca的比例来衡量一个包(服务)的不稳定
微服务 I 程度,取值区间是[0,1],其中,I=0 说明该包(服务)最稳定,即一个包(服务)
不依赖其他任何包(或服务);而 I=1 表示该包(服务)极不稳定
系统 I_Cv 整体系统的稳定性的变异系数
系统 I_Avg 系统中微服务指标I的均值,衡量系统的整体稳定性
RC(relational cohesion)表示该包(服务)中内部关系数与类型数之间的比率,
微服务 RC 内部关系包括类之间的继承、方法的调用、对类属性的访问以及诸如
内聚 创建类实例之类的显式引用,RC的数值越大,表示包(服务)的内聚性越高
系统 RC_Cv 整体系统的内聚程度的变异系数
系统 RC_Avg 系统中微服务RC指标的均值,衡量系统的整体内聚性
本文首先用表 5 中的指标来评估 Jpetstore 案例的第 1 层数据流图应用 DFD 方法后得到的拆分方案(见表
3)以及应用 DFD-A 方法(n=4)拆分得到的拆分方案,指标评估结果分别见表 6 和表 7.