Software defect prediction is utilized to assist developers in finding defect-prone code and allocating their testing efforts. To build accurate prediction models, previous studies focus on manually designing features that encode the complexity characteristics of programs. However, these hand-crafted features often fail to capture the semantic and structure information of programs. Such information is important in modeling program functionality and can lead to more accurate defect prediction. To bridge the gap, this proposal intends to use the mainstream deep learning algorithms to automatically learn the semantic and structure features of source code from multi-granularity and multi-perspective, and analyze its impact and role in defect prediction, and clarify its utilization mechanism and potential application in software quality assurance.. The major contents are as follows. Firstly, through the abstract syntax tree and execution path graph of the programs, the static and dynamic semantic features are learned by deep learning algorithms. Secondly, according to various external dependencies among codes, we will construct software dependency network from a multi-granularity perspective (i.e., packages, files, methods), and then leverage network representation learning to acquire structure features automatically from source code. Finally, utilizing the features learned and their combinations, we further construct a batch of defect datasets to guide the within- and cross- project defect prediction. The results will be an important complement of existing software defect prediction, and make a contribution to improve the efficiency of software maintenance and the usage of resources.
软件缺陷预测有助于尽早发现潜在问题的代码,从而合理分配测试资源,改善软件开发过程。然而,已有预测模型使用的特征主要是一些人工设计的代码复杂性度量特征,还少有涉及对程序功能建模非常重要的语义和结构特征。为此,本项目将利用主流的深度学习算法,从多粒度多视角自动学习软件代码的语义结构特征,并分析其在缺陷预测中的影响及作用,阐明其在软件质量保证上的利用机制与应用潜力。具体主要包括:通过代码的抽象语法树和执行路径图,利用深度学习方法分别学习程序的静态和动态语义特征;考虑代码之间各种外部依赖关系,构建不同粒度(包、文件、方法)的软件依赖网络模型,并利用网络表征学习获取代码结构特征;最后,利用所学的各类特征及它们的组合,构建一批缺陷数据集并用于指导项目内的和跨项目的软件缺陷预测。研究成果有助于弥补现有软件缺陷预测方法的不足,提高软件维护效率与资源利用率。
软件缺陷预测有助于尽早发现潜在问题的代码,从而合理分配测试资源,改善软件开发过程。然而,已有预测模型使用的特征主要是一些人工设计的代码复杂性度量特征,还少有涉及对程序功能建模非常重要的语义和结构特征。为此,本项目将利用主流的深度学习算法,从多粒度多视角自动学习软件代码的语义结构特征,并分析其在缺陷预测中的影响及作用,阐明其在软件质量保证上的利用机制与应用潜力。具体包括:(1)考虑代码之间各种外部依赖关系,构建不同粒度(包、文件、方法)的软件依赖网络模型,并利用网络表征学习获取代码结构特征,分析了软件的演化特性;(2)利用图卷积神经网络对类依赖网络自动学习代码的结构特征,并与传统人工设计的特征融合,并使用SMOTETomek综合采样技术解决缺陷数据不平衡的问题,构建GCN2defect软件缺陷预测模型;(3)通过代码的抽象语法树和类依赖图,利用深度学习方法分别学习程序的语义和结构特征,提出一种结合代码语义和结构信息的软件缺陷预测方法CGCN;(4)综合考虑软件系统中类与类之间关系(外部图),以及每个类内部方法之间关系(内部图),将软件系统抽象成一个图中图网络,并提出一种基于图中图卷积神经网络的类交互关系预测方法;(5)基于图神经网络技术提出了一种有监督的关键类识别方法GKCI,实现软件系统中关键类的识别。(6)构建了一批缺陷数据集并用于指导项目内的和跨项目的软件缺陷预测。研究成果有助于弥补现有软件缺陷预测方法的不足,提高软件维护效率与资源利用率。
{{i.achievement_title}}
数据更新时间:2023-05-31
基于被动变阻尼装置高层结构风振控制效果对比分析
基于LS-SVM香梨可溶性糖的近红外光谱快速检测
基于改进LinkNet的寒旱区遥感图像河流识别方法
基于文献计量学和社会网络分析的国内高血压病中医学术团队研究
现代优化理论与应用
基于时序语义特征自动匹配的人体行为预测
基于代码结构化特征的自动化软件可追踪技术研究
基于集成和迁移学习的跨项目软件缺陷预测方法研究
基于主动迁移学习的软件缺陷预测模型与方法研究