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

3466                                Journal of Software  软件学报 Vol.31, No.11, November 2020

                        际的拆分代价决定拆分粒度,如果原代码的耦合度过高,可以考虑先以大粒度拆分服务、再逐步细化.
                        一般情况下的开销:SQL 拆分>方法拆分>方法移动(即类的拆分).
                 2.2.2    生成数据表权重图
                    从数据关联度和共享度这两个维度出发,将数据访问轨迹图转化成如图 4 所示的数据表图,图中每个顶点
                 表示数据库中的一张表,根据以下方法向图中添加边,并计算权重.









                                                  Fig.4   Database table graph
                                                      图 4   数据表图
                    (1)  基础定义
                    a)   定义数据访问轨迹图中共包含 N scenario 个场景、N Trace 条方法调用链、N SQL 条 SQL 语句和 n 张表.
                    b)   第 i 个场景 Scenario i 的权重定义为 W Scenarioi ,由设计人员根据业务场景的重要程度,于每个测试用例执
                        行之前进行设置,即为“输入准备”步骤中的“用例权重”.
                    c)   第 i 条方法调用链 Trace i 的权重定义为 W Tracei ,等于这条调用链所属的场景的权重.
                    d)   第 i 条 SQL 语句 SQL i 的权重定义为W    SQL i  ,等于每个场景的权重与其执行 SQL i 次数的乘积的累加和.
                                                    N Scenario
                                              W SQL  =  W Scenario  T ⋅ ∑  Scenario  (SQL  )          (1)
                                                 i
                                                     k = 1   k      k  i
                 其中, T Scenario k  (SQL i )  表示第 k 个场景执行 SQL i 的次数.
                    (2)  计算数据表关联度矩阵
                    对于两个数据表 T a ,T b ,从场景、方法调用链和 SQL 语句这 3 个级别分别计算它们之间的关联度.
                    a)   定义 Scenario(T i )为操作了数据表 T i 的场景的集合,T a ,T b 两个数据表关于场景级别的关联度表示为
                        C Scenario (T a ,T b ),等于同时操作 T a ,T b 这两张表的场景的累加权重与操作其中任意一张表的场景的累加
                        权重之比.
                                                        W Scenario Scenario∈ ∑  ( a T  ) Scenario T∩  )
                                                T T
                                          C Scenario (, ) =               ( b                         (2)
                                                              ∈ ∑
                                                 a
                                                   b
                                                        W Scenario Scenario ( a T ∪  ) Scenario T  )
                                                                          ( b
                    b)   定义 Trace(T i )为操作了数据表 T i 的方法调用链集合,T a ,T b 两个数据表关于调用链级别的关联度表示
                        为 C Trace (T a ,T b ),等于同时操作 T a ,T b 这两张表的调用链的累加权重与操作其中任意一张表的调用链的
                        累加权重之比.
                                                          W Trace Trace∈ ∑
                                             C Trace (, ) =      ( a T  ) Trace T∩  ( b )             (3)
                                                  T T
                                                              ∈ ∑
                                                     b
                                                  a
                                                          W Trace Trace ( a T ∪  ) Trace T  )
                                                                       ( b
                    c)   定义 SQL(T i )为操作了数据表 T i 的 SQL 语句集合,T a ,T b 两个数据表关于 SQL 级别的关联度表示为
                        C SQL (T a ,T b ),等于同时操作 T a ,T b 这两张表的 SQL 语句的累加权重与操作其中任意一张表的 SQL 语句
                        的累加权重之比.
                                                          W SQL SQL∈ ∑  ) SQL T∩
                                              C   (, ) =         ( a T  ( b  )                        (4)
                                                  T T
                                                              ∈ ∑
                                               SQL  a  b
                                                          W SQL SQL ( a T ∪  ) SQL T  )
                                                                      ( b
                    将 3 个级别的关联度按下式进行加权累加,得到表 T a ,T b 的总关联度 C Total (T a ,T b ).
                                   C Total (T a ,T b )=α 1 ⋅C SQL (T a ,T b )+α 2 ⋅C Trace (T a ,T b )+α 3 ⋅C Scenario (T a ,T b )  (5)
                 其中,α 1 =0.6,α 2 =0.3α 3 =0.1.
   145   146   147   148   149   150   151   152   153   154   155