Page 234 - 《软件学报》2021年第8期
P. 234

2516                                   Journal of Software  软件学报 Vol.32, No.8,  August 2021

                                  Table 6  Spearman’s rank coefficient value ρ and its correlation level
                                          表 6   Spearman 秩相关系数ρ的值及其相关性
                                          ρ值范围                          相关性
                                           [0.8,1.0]                   极强相关
                                           [0.6,0.8)                    强相关
                                           [0.4,0.6)                  中等强度相关
                                           [0.2,0.4)                    弱相关
                                           [0.0,0.2)                   极弱相关
                    本文对 Three.js 的 3 种 Code Smell 检测结果进行两两分析,得出结论:FE 和 DC 呈现弱强度的负相关性,其
                 中ρ为−0.30(P=0.001);BLOB 和 FE 呈现中等强度的正相关性;BLOB 和 DC 的差异不具统计意义.
                    本文进一步探究耦合设计问题和内聚设计问题的关系.
                    将 Code Smell 分为两类,令内聚 Code Smell(Blob)为一类,令耦合 Code Smell(FE,DC)为另一类.类低内聚的
                 强度 I LC 取类的 I blob .一个类具有多个函数,因而具有多个 FE 与 DC 强度值,对于耦合 Code Smell,本文取其均值
                 mean(I fe ),mean(I dc ),类高耦合 I HC 的强度优先考虑同一个类发生耦合,即取 mean(I fe ),若 mean(I fe )≤0,则取
                 mean(I dc ).对于系统内所有的类,可以获得低内聚强度的集合 LC 和高耦合强度的集合 HC.
                    本文利用 Spearman 秩相关系数分析 LC 和 HC 的相关性,仅考虑 I HC ,I LC 均大于 0 的情况,得到 P 值远小于
                 0.05(6.3e−18),ρ为 0.46.实验发现,该项目耦合和内聚的强度具有弱正相关性.
                    将低内聚、高耦合类交集的元素个数与低内聚、高耦合类并集的元素个数的比值作为同现率,得出同现率
                 为 66.88%.本文进一步使用 Wilcoxon 秩和检验(Wilcoxon rank-sum  test)  [35] 分析两组数据的总体分布是否差异
                 显著:若差异不显著,则相关性和同现率无实际意义.秩和检验亦输出显著程度 P,显著等级取值和α相同.分析得
                 出,LC 和 HC 的分布显著不同(P=6.27e−34).
                 4.2   实验结果

                    通过与第 4.1 节类似的方式,本文对数据集中的所有项目进行了检测,检测结果在表 7~表 9 中列出.在表 7
                 和表 8 中,为了验证文本方式对结果的贡献,实验单独列出了去除文本方式后的数据(即“纯结构”列).“重合度”
                 为使用 Doc2Vec 和 LDA 作为文本算法的检测结果中重复的部分(交集)占全部检测结果(并集)的比重;“非重合
                 部分占比”为去除重复部分的全部检测结果中,二者检测出的信息分别所占的比重.
                                       Table  7    Detection results of coupling design problems   (%)
                                               表 7   耦合设计问题的检测结果                                  (%)
                                        精确率                  召回率              重合度       非重合部分占比
                        项目名
                                 Doc2Vec  LDA  纯结构    Doc2Vec  LDA  纯结构   Doc2Vec 和 LDA   Doc2Vec  LDA
                      Awesome-qr.js  100  100   100    66.67  66.67  66.67     100        −      −
                        Three.js   61.82  54.65  60.00  77.27  53.41  47.72   76.58      96.15  3.75
                         PDF.js    70.00  66.67  55.56  87.50  59.38  46.88   57.78      89.47  10.53
                        FloraJS    66.67  60.00  75.00  83.33  42.86  42.86   55.56      100     0
                        Pixi.JS    89.66  92.31  92.00  92.86  85.71  82.14   89.66      100     0
                        Brackets   86.27  87.18  82.50  93.62  72.34  67.35   76.47      100     0
                                       Table  8    Detection results of cohesion design problems   (%)
                                               表 8   内聚设计问题的检测结果                                  (%)
                                        精确率                  召回率              重合度       非重合部分占比
                        项目名
                                 Doc2Vec  LDA  纯结构    Doc2Vec  LDA  纯结构   Doc2Vec 和 LDA   Doc2Vec  LDA
                      Awesome-qr.js  100  100   100    83.33  71.43  57.14     100        −      −
                        Three.js   74.58  44.44  65.00  71.74  34.28  31.43   17.81      76.67  23.33
                         PDF.js    65.38  50.00  36.36  76.19  23.81  19.05   35.48      85.00  15.00
                        FloraJS    75.00  42.86  40.00  75.00  37.50  12.50   36.36      57.14  42.86
                        Pixi.JS    63.64  40    22.22  87.50  25.00  12.50    44.00      100     0
                        Brackets   70.73  66.67  55.56  80.56  27.78  16.13   27.27      90.63  9.37
   229   230   231   232   233   234   235   236   237   238   239