Page 161 - 《软件学报》2020年第11期
P. 161

丁丹  等:场景驱动且自底向上的单体系统微服务拆分方法                                                     3477


                 间,这个总时间小于等于数据表、类和方法拆分时间的总和.最终的平均时间统计使用截尾平均数,即去掉一个
                 最长时间和一个最短时间后的 3 组数据的平均值,这样做的目的是降低极端值对结果的影响.
                                          Table  6    Time records of manual decomposition   (min)
                                                  表 6   人工拆分时间记录                           (分)
                              项目名称       实验参与者     数据表拆分时间      类划分时间     方法划分时间     总分析时间
                                            A          41          19         33        93
                                            B          85         120        250        455
                                            C          42          6          13        61
                            Spring JPetStore
                                            D          45          20         20        65
                                            E          90         195        645        930
                                         截尾平均          57.3        53        101       204.3
                                            A          49          38         55        142
                                            B          150        100        300        550
                                            C          68          14         22        104
                               zb-blog
                                            D          57          35         35        92
                                            E          110        220        755       1 085
                                         截尾平均          78.3       57.7       130       265.3
                                            A          44          34         43        121
                                            B          60         150        240        450
                                            C          72          20         48        140
                               Exam++
                                            D          65          20         20        85
                                            E          245        430        1410      2 085
                                         截尾平均          65.7        68        110.3      237
                                            A          67          52         82        201
                                            B          120         80        240        440
                                            C          91          53        103        247
                               JeeSite
                                            D          80          40         40        120
                                            E          190        320        1095      1 605
                                         截尾平均          97         61.7       141.7      296
                    为了与人工拆分时间相对比,表 7 给出了使用 MSDecomposer 进行拆分的时间记录.其中,Kieker 配置时间
                 是指在实验系统中配置改造后的 Kieker 监控工具,并成功启动实验系统所经历的时间;场景整理时间是指分析
                 系统功能,并得到所有场景级别的用例和对应权重的时间;数据收集时间是指运行所有测试用例、获取监控日
                 志的时间;工具使用时间就是使用 MSDecomposer 从数据处理、运行拆分算法到生成最终拆分方案的时间.由
                 于这些操作是顺序发生的,所以总耗时就是前面 4 项操作耗时的总和.

                                          Table  7    Time records of MSDecomposer Tool   (min)
                                            表  7   MSDecomposer 工具拆分时间记录                  (分)
                                项目名称        Kieker 配置   场景整理      数据收集      工具使用      总耗时
                              Spring JPetStore   40       30        20         3        93
                                 zb-blog        50        40        30         5       125
                                 Exam++         30        60        30         5       125
                                 JeeSite        60        70        40         8       178
                    对比表 6 和表 7 的数据可知,人工拆分的平均总耗时都是大于工具拆分的总耗时的.这表明 MSDecomposer
                 的确能够加速整个拆分决策的过程.工具加速的主要环节在于给定数据表拆分方案的前提下,自底向上搜索获
                 取类和方法的拆分方案.同时,工具存在着很大的优化空间,其中,Kieker 的配置步骤根据项目结构、使用技术的
                 不同而不同,初始时需要耗费一定时间摸索配置,如果之后遇到类似的框架技术可以运用之前的经验减少配置
                 时间.除此之外,目前的数据收集是手动输入场景信息、点击按钮来区分不同场景的测试用例,以后可以考虑自
                 动化实现——导入场景信息与测试用例的映射文件、测试用例执行前后在回调函数内部调用相应接口自动实
                 现场景切换.
                    值得注意的是,5 位实验参与者对于同一系统经过人工分析得出的数据划分方案并不是完全相同的,差异
                 主要集中在拆分粒度上.以实验系统 JeeSite 为例,5 位实验参与者给出的数据表拆分方案对应的服务数量最少
   156   157   158   159   160   161   162   163   164   165   166