面向细粒度源代码变更的缺陷预测方法

被引:12
作者
原子 [1 ]
于莉莉 [1 ,2 ]
刘超 [1 ]
机构
[1] 北京航空航天大学计算机学院
[2] 第二炮兵软件测评中心
关键词
缺陷预测; 软件演化; 细粒度变更; 概念漂移; 成本有效性;
D O I
10.13328/j.cnki.jos.004559
中图分类号
TP311.53 [];
学科分类号
081202 ; 0835 ;
摘要
软件在其生命周期中不断地发生变更,以适应需求和环境的变化.为了及时预测每次变更是否引入了缺陷,研究者们提出了面向软件源代码变更的缺陷预测方法.然而现有方法存在以下3点不足:(1)仅实现了较粗粒度(事务级和源文件级变更)的预测;(2)仅采用向量空间模型表征变更,没有充分挖掘蕴藏在软件库中的程序结构、自然语言语义以及历史等信息;(3)仅探讨较短时间范围内的预测,未考虑在长时间软件演化过程中由于新需求或人员重组等外界因素所带来的概念漂移问题.针对现有的不足,提出一种面向源代码变更的缺陷预测方法.该方法将细粒度(语句级)变更作为预测对象,从而有效降低了质量保证成本;采用程序静态分析和自然语言语义主题推断相结合的技术深入挖掘软件库,从变更的上下文、内容、时间以及人员4个方面构建特征集,从而揭示了变更易于引入缺陷的因素;采用特征熵差值矩阵分析了软件演化过程中概念漂移问题的特点,并通过一种伴随概念回顾的动态窗口学习机制实现了长时间的稳定预测.通过6个著名开源软件验证了该方法的有效性.
引用
收藏
页码:2499 / 2517
页数:19
相关论文
共 11 条
[1]   一种面向对象软件缺陷的早期预测方法 [J].
张垚 ;
袁志海 ;
江海燕 .
计算机技术与发展, 2010, 20 (08) :37-40+44
[2]  
软件缺陷静态预测研究.[D].秦丽娜.华中师范大学.2011, 10
[3]  
分类器性能评价研究.[D].武婷婷.北京交通大学.2010, 10
[4]   Defect prediction from static code features: current results, limitations, new approaches [J].
Menzies, Tim ;
Milton, Zach ;
Turhan, Burak ;
Cukic, Bojan ;
Jiang, Yue ;
Bener, Ayse .
AUTOMATED SOFTWARE ENGINEERING, 2010, 17 (04) :375-407
[5]   A systematic and comprehensive investigation of methods to build and evaluate fault prediction models [J].
Arisholm, Erik ;
Briand, Lionel C. ;
Johannessen, Eivind B. .
JOURNAL OF SYSTEMS AND SOFTWARE, 2010, 83 (01) :2-17
[6]   Toward an understanding of bug fix patterns [J].
Pan, Kai ;
Kim, Sunghun ;
Whitehead, E. James, Jr. .
EMPIRICAL SOFTWARE ENGINEERING, 2009, 14 (03) :286-315
[7]   Classifying software changes: Clean or buggy? [J].
Kim, Sunghun ;
Whitehead, E. James, Jr. ;
Zhang, Yi .
IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, 2008, 34 (02) :181-196
[8]  
When do changes induce fixes?.[J].Jacek Śliwerski;Thomas Zimmermann;Andreas Zeller.ACM SIGSOFT Software Engineering Notes.2005, 4
[9]  
Temporal sequence learning and data reduction for anomaly detection.[J].Terran Lane;Carla E. Brodley.ACM Transactions on Information and System Security (TISSEC).1999, 3
[10]   Learning in the presence of concept drift and hidden contexts [J].
Widmer, G ;
Kubat, M .
MACHINE LEARNING, 1996, 23 (01) :69-101