当前位置:问答库>论文摘要

题目:面向细粒度源代码变更的缺陷预测技术研究

关键词:缺陷预测;细粒度变更;概念漂移;成本有效性

  摘要


    软件缺陷预测技术作为软件工程领域的一项重要的研究内容,主要用于指导软件人员将有限的质量保证资源更加及时有效地分配到软件系统中最可能发生缺陷的区域。围绕该技术,研究者们构建了多种基于不同特征因素和学习算法的缺陷预测模型。从软件工程实践角度出发,一个较优的缺陷预测模型应该具有时间的及时性和位置的精确性两个重要特征。所谓“及时性”是指尽早地预测出软件系统中可能包含的缺陷;而“精确性”是指尽量精确地预测出软件系统中可能存在缺陷的区域。如何构建兼具“及时性”和“精确性”的缺陷预测模型一直以来都是软件缺陷预测领域研究的重要目标。
    基于软件开发过程中缺陷代码不断地由软件变更引入到软件系统这一事实,本文提出了一种面向细粒度源代码变更的缺陷预测模型,该模型可以在变更刚刚完成时就给出预测结果,从而保证了预测时间的及时性;该模型以细粒度(精确至语句层级)的变更为预测对象,从而保证了预测位置的精确性。围绕这一兼具“及时性”和“精确性”的缺陷预测模型,本文主要的研究工作包括:
1.    提出了一种面向细粒度源代码变更的因素构建方法。该方法在设计过程中充分考虑了细粒度变更所具有的“粒度精细”和“持续发生”这两个特点,其主要由两部分组成:首先是一套从细粒度层级刻画软件变更特征的因素集合。该因素集合从变更发生的上下文环境、变更的内容、操纵变更的开发者的经验以及变更发生的时间周期性这四个维度入手来进行定义,从而较为直观和完整地还原了细粒度源代码变更发生的场景。其次是一种增量方式的因素自动化提取策略。该策略以软件库作为数据来源,采用程序静态结构非精确性分析、自然语言语义主题增量推断和历史信息挖掘这三种关键技术,实现了以持续发生的细粒度变更为对象的因素自动化提取。
2.    在细粒度层面上揭示了变更特征和缺陷的关系以及关系随时间变化的特点。通过在细粒度层面上对变更特征和缺陷的关系进行分析,从上下文环境、内容、开发者以及时间这四个维度揭示了易于引入缺陷代码的细粒度变更所具有的特征,从而为软件人员更加全面和深入地理解缺陷发生的原因,有效地避免缺陷的引入提供了理论的指导;通过对变更特征和缺陷的关系随时间变化的规律进行综合描述和分析,揭示了细粒度源代码变更在软件开发过程中存在的概念漂移现象以及该现象所具有的“时间邻近的实例较优”和“历史概念重现”这两大特点,从而为进一步构建合适的学习算法提供了指导。
3.    提出了一种伴随概念回顾的自适应窗口学习算法(adaptive window with concept reviewing,简称AWCR)。该算法主要基于细粒度变更概念漂移的两大特点(即“时间邻近的实例较优”和“历史概念重现”)构建其内部的漂移应对机制。该算法动态维护了一个历史概念库,它通过基于预测性能的漂移探测器判定漂移状态,并通过在当前窗口中动态加入新概念和补充概念库中的历史相似概念来实现模型的动态实例选择,从而保证了预测性能随时间的稳定性。
4.    结合6个实际的开源项目案例,采用成本有效性分析策略,对当前已有的面向事务/文件粒度源代码变更的缺陷预测模型和本文提出的面向细粒度源代码变更的缺陷预测模型进行统一的分析和比较。通过案例分析得出,和面向事务粒度以及文件粒度变更的模型相比,本文的细粒度模型在保证软件质量的前提下,能够更加显著地降低质量保证成本。
    本文的研究价值体现在两个方面:首先在理论方面,本文从多维视角切入,在更细粒度层面分析变更因素与缺陷的关系,揭示了软件开发过程中导致缺陷发生的各种原因,从而为进一步避免缺陷的引入,提高软件质量提供了理论的指导。其次在实践方面,本文提出的缺陷预测模型以持续发生的细粒度源代码变更为预测对象,兼具时间及时性和位置精确性特征,能够在软件开发过程中帮助软件人员较为及时地知晓缺陷的存在,较为精确地知晓缺陷存在的区域,从而更加有效地发现并修复缺陷。