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