Page 320 - 《软件学报》2021年第7期
P. 320

2238                                     Journal of Software  软件学报 Vol.32, No.7,  July 2021

                    结论 5.  在相同数据集上,本文的 CNDePor 方法较对比的传统缺陷预测方法和基于代码自然性的方法
                 DefectLearner 有显著优势;较先进的基于深度学习的方法 VulDeePecker 具有可比性性能,但本文方法可解释性
                 更强.

                 6    总结与展望

                    针对现有语言模型仅对代码进行单向度量和未能利用样本缺陷信息的问题,提出了一种基于代码自然性
                 特征的缺陷预测方法(CNDePor).该方法利用软件质量类型信息对样本加权,增强/抑制了语言模型对无/有缺陷
                 代码的学习强度,提升了 CE 类度量元的缺陷判别能力;另一方面还实现了对输入序列的正逆双向学习,得到的
                 两种改进度量元 M-CE 和 M-CE-Inv 更全面地刻画了代码的自然性.
                    针对粗粒度缺陷预测难以辅助代码审查及缺陷查找的不足,研究了一种新的细粒度缺陷预测问题——面
                 向语句的切片级缺陷预测,并在该问题上实现了度量元设计和缺陷预测方法应用.具体地,针对切片粒度缺陷预
                 测设计了 4 种度量元,其中包括两种代码自然性度量元和两种规模度量元,并在两类安全缺陷数据集上验证了
                 度量元和 CNDePor 方法的有效性.实验结果表明,CE 类度量元具有可学习性,它们蕴涵了语言模型从代码语料
                 库中学习到的相关知识;改进的度量元 M-CE 和 M-CE-Inv的判别力明显优于原始度量元和传统规模度量元;CE
                 类度量元与传统规模度量元具有互补性;本文的 CNDePor 方法较传统缺陷预测方法和已有的基于代码自然性
                 的方法有显著优势,较先进的基于深度学习的方法具有可比性性能,但本文方法可解释性更强.
                    近年来,随着软件技术的快速发展,可以获取的代码等软件资源日渐丰富.在这些数据的支持下,研究基于
                 语言模型的代码自然性分析及缺陷预测技术具有重要价值和广阔前景.本文围绕这一话题提出了一些解决方
                 案,但工作还有许多需要进一步完善和探索的地方.首先,研究基于代码自然性特征的跨项目缺陷预测.考虑到
                 实际中存在样本标记难、历史数据少的挑战,研究跨项目缺陷预测具有重要价值                            [6062] .其次,研究切片粒度软件
                 模块的度量元设计.本文对面向语句的切片粒度缺陷预测问题进行了初步探讨并设计了 4 种度量元.设计更多
                 的、不同类型的度量元并验证它们的有效性是下一步工作的重点.最后,研究代码自然性特征在不同粒度缺陷
                 预测问题上的应用.我们已在文件粒度和切片粒度上研究了代码自然性的缺陷预测应用.关于在其他预测粒度
                 上,特别是细粒度方面(如函数粒度、变更粒度),该类度量元的有效性及应用方法值得进一步研究.

                 References:
                 [1]    Ma XX, Liu XZ, Xie B, Yu P, Zhang T, Bu L, Li XD. Software development methods: Review and outlook. Ruan Jian Xue Bao/
                     Journal of  Software,  2019,30(1):3–21  (in Chinese with English abstract).  http://www.jos.org.cn/1000-9825/5650.htm [doi:  10.
                     13328/j.cnki.jos.005650]
                 [2]    Chen X, Gu  Q,  Liu WS,  Liu SL,  Ni  C. Survey of static software defect prediction.  Ruan  Jian  Xue  Bao/Journal of Software,
                     2016,27(1):1−25 (in Chinese with English abstract). http://www.jos.org.cn/1000-9825/4923.htm [doi: 10.13328/j.cnki.jos.004923]
                 [3]    Rathore SS, Kumar S. A study on software fault prediction techniques. Artificial Intelligence Review, 2017, 1–73.
                 [4]    Hosseini S, Turhan B, Gunarathna D. A systematic literature review and meta-analysis on cross project defect prediction. IEEE
                     Trans. on Software Engineering, 2019,45(2):111–147.
                 [5]    Cai L, Fan YR, Yan M, Xia X. Just-in-time software defect prediction: Literature review. Ruan Jian Xue Bao/Journal of Software,
                     2019,30(5):1288–1307  (in Chinese with English abstract).  http://www.jos.org.cn/1000-9825/5713.htm [doi:  10.13328/j.cnki.jos.
                     005713]
                 [6]    Gong LN, Jiang SJ, Jiang L. Research progress of software defect prediction. Ruan Jian Xue Bao/Journal of Software, 2019,30(10):
                     3090–3114 (in Chinese with English abstract). http://www.jos.org.cn/1000-9825/5790.htm [doi: 10.13328/j.cnki.jos.005790]
                 [7]    Radjenović D, Heričko M, Torkar R, Živkovič, A. Software fault prediction metrics: A systematic literature review. Information
                     and Software Technology, 2013,55(8):1397–1418.
                 [8]    Dam HK, Tran T, Ghose A. Explainable software analytics. In: Proc. of the 40th Int’l Conf. on Software Engineering: New Ideas
                     and Emerging Results. New York: ACM Press, 2018. 53–56.
                 [9]    Du M, Liu N, Hu X. Techniques for interpretable machine learning. Communications of the ACM, 2020,63(1):68–77.
   315   316   317   318   319   320   321   322   323   324   325