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.
   67   68   69   70   71   72   73   74   75   76   77