首页 | 本学科首页   官方微博 | 高级检索  
相似文献
 共查询到19条相似文献,搜索用时 156 毫秒
1.
刘忠鑫  唐郅杰  夏鑫  李善平 《软件学报》2023,(12):5501-5526
代码变更是软件演化过程中的关键行为,其质量与软件质量密切相关.对代码变更进行建模和表示是众多软件工程任务的基础,例如即时缺陷预测、软件制品可追溯性恢复等.近年来,代码变更表示学习技术得到了广泛的关注与应用.该类技术旨在学习将代码变更的语义信息表示为稠密低维实值向量,即学习代码变更的分布式表示,相比于传统的人工设计代码变更特征的方法具有自动学习、端到端训练和表示准确等优点.但同时该领域目前也存在如结构信息利用困难、基准数据集缺失等挑战.对近期代码变更表示学习技术的研究及应用进展进行了梳理和总结,主要内容包括:(1)介绍了代码变更表示学习及其应用的一般框架.(2)梳理了现有的代码变更表示学习技术,总结了不同技术的优缺点.(3)总结并归类了代码变更表示学习技术的下游应用.(4)归纳了代码变更表示学习技术现存的挑战和潜在的机遇,展望了该类技术的未来发展方向.  相似文献   

2.
杨博  张能  李善平  夏鑫 《软件学报》2020,31(5):1435-1453
代码补全(code completion)是自动化软件开发的重要功能之一,是大多数现代集成开发环境和源代码编辑器的重要组件.代码补全提供即时类名、方法名和关键字等预测,辅助开发人员编写程序,直观提高软件开发效率.近年来,开源软件社区中源代码和数据规模不断扩大,人工智能技术取得卓越进展,这对自动化软件开发技术产生了极大促进作用.智能代码补全(intelligent code completion)根据源代码建立语言模型,从语料库学习已有代码特征,根据待补全位置的上下文代码特征在语料库中检索最相似的匹配项进行推荐和预测.相对于传统代码补全,智能代码补全凭借其高准确率、多补全形式、可学习迭代的特性成为软件工程领域的热门方向之一.研究者们在智能代码补全方面进行了一系列研究,根据这些方法如何表征和利用源代码信息的不同方式,可以将它们分为基于编程语言表征和基于统计语言表征两个研究方向,其中,基于编程语言表征又分为标识符序列、抽象语法树、控制/数据流图3个类别,基于统计语言表征又分为N-gram模型、神经网络模型两个类别.从代码表征的角度入手,对近年来代码补全方法研究进展进行梳理和总结,主要内容包括:(1)根据代码表征方式阐述并归类了现有的智能代码补全方法;(2)总结了代码补全的一般过程和模型评估中的模型验证方法与性能评估指标;(3)归纳了智能代码补全的主要挑战;(4)展望了智能代码补全的未来发展方向.  相似文献   

3.
陈秋远  李善平  鄢萌  夏鑫 《软件学报》2019,30(4):962-980
代码克隆(code clone),是指存在于代码库中两个及以上相同或者相似的源代码片段.代码克隆相关问题是软件工程领域研究的重要课题.代码克隆是软件开发中的常见现象,它能够提高效率,产生一定的正面效益.但是研究表明,代码克隆也会对软件系统的开发、维护产生负面的影响,包括降低软件稳定性,造成代码库冗余和软件缺陷传播等.代码克隆检测技术旨在寻找检测代码克隆的自动化方法,从而用较低成本减少代码克隆的负面效应.研究者们在代码克隆检测方面获得了一系列的检测技术成果,根据这些技术利用源代码信息的程度不同,可以将它们分为基于文本、词汇、语法、语义4个层次.现有的检测技术针对文本相似的克隆取得了有效的检测结果,但同时也面临着更高抽象层次克隆的挑战,亟待更先进的理论、技术来解决.着重从源代码表征方式角度入手,对近年来代码克隆检测研究进展进行了梳理和总结.主要内容包括:(1)根据源代码表征方式阐述并归类了现有的克隆检测方法;(2)总结了模型评估中使用的实验验证方法与性能评估指标;(3)从科学性、实用性和技术难点这3个方面归纳总结了代码克隆研究的关键问题,围绕数据标注、表征方法、模型构建和工程实践4个方面,阐述了问题的可能解决思路和研究的未来发展趋势.  相似文献   

4.
即时软件缺陷预测是保障软件安全与质量相统一的必要途径,在软件工程领域受到越来越多的关注.然而,现有数据集存在特征冗余和特征相关性低的情况,极大影响了即时软件缺陷预测模型的分类性能和稳定性.此外,分析缺陷数据特征对模型的影响尤为重要,但如今对软件缺陷预测模型进行解释性研究较少.针对这些问题,文章基于6个开源项目的227417个代码级变更的大规模实证研究,创新性地选择了SHAP+SMOTEENN+XGBoost(SHAP-SEBoost)构建即时软件缺陷预测模型.首先通过SHAP(SHapley Additive exPlanation)模型可解释器分析初始数据集特征,并根据分析结果对数据集进行相应的特征选择与组合.然后,利用SMOTEENN对类不平衡的缺陷数据进行正负样本均衡化,使用集成学习算法XGBoost对实验数据进行预测建模.最后,使用SHAP对本文模型进行可解释性分析.实验结果表明SHAP-SEBoost有效地提高了分类性能,与基线模型以及近年优秀模型相比AUC平均提高11.6%,F1平均提升33.5%.  相似文献   

5.
张芸  刘佳琨  夏鑫  吴明晖  颜晖 《软件学报》2020,31(8):2432-2452
缺陷定位是软件工程研究最活跃的领域之一.大部分软件缺陷都会被提交到类似于Bugzilla和Jira的缺陷追踪系统中.由于提交的缺陷报告数量过多,开发人员不能及时地处理,因而迫切需要一个自动化工具来帮助开发人员识别缺陷相关源代码文件.研究人员已经提出了大量的缺陷定位技术.基于信息检索的软件缺陷定位技术(Information Retrieval-based Bug Localization,简称IRBL)利用了缺陷报告的文本特性,并且由于计算成本低、对不同的程序语言更具有普适性,成为缺陷定位领域的研究热点,取得了一系列研究成果.然而,IRBL技术也在数据预处理、相似度计算和工程应用等方面存在诸多挑战.鉴于此,本文对现有的IRBL技术进行梳理总结.主要内容包括:(1)梳理了IRBL中数据预处理的过程和信息检索通用方法;(2)对IRBL技术中利用的数据特征进行了详细的分类和总结;(3)总结了技术评估中使用的性能评估指标;(4)归纳出了IRBL技术的关键问题;(5)最后展望了IRBL技术的未来发展.  相似文献   

6.
张献  贲可荣  曾杰 《软件学报》2021,32(7):2219-2241
软件缺陷预测是软件质量保障领域的一个活跃话题,它可以帮助开发人员发现潜在的缺陷并更好地利用资源.如何为预测系统设计更具判别力的度量元,并兼顾性能与可解释性,一直是人们致力于的研究方向.针对这一挑战,提出了一种基于代码自然性特征的缺陷预测方法——CNDePor.该方法通过正逆双向度量代码和利用质量信息对样本加权的方式改进语言模型,提高了模型所得交叉熵(CE)类度量元的缺陷判别力.针对粗粒度缺陷预测存在难以聚焦缺陷区域、代码审查成本高的不足,研究了一种新的细粒度缺陷预测问题——面向语句的切片级缺陷预测.在此问题上,设计了4种度量元,并在两类安全缺陷数据集上验证了度量元和CNDePor方法的有效性.实验结果表明:CE类度量元具有可学习性,它们蕴涵了语言模型从语料库中学习到的相关知识;改进的CE类度量元的判别力明显优于原始度量元和传统规模度量元;CNDePor方法较传统缺陷预测方法和已有的基于代码自然性的方法有显著优势,较先进的基于深度学习的方法具有可比性性能和更强的可解释性.  相似文献   

7.
作为人工智能工程化的实现工具,智能计算框架已在近年来被广泛应用,其可靠性对于人工智能的有效实现至关重要.然而,智能计算框架的可靠性保障具有挑战性,一方面,智能计算框架代码迭代迅速、测试困难;另一方面,与传统软件不同,智能计算框架涉及大量张量计算,其代码规范缺乏软件工程理论指导.为了解决这一问题,现有的工作主要使用模糊测试手段实现缺陷定位,然而,这类方法只能实现特定类型缺陷的精准定位,却难以即时地在开发过程中引导开发者关注软件质量.因此,将国内外常见的智能计算框架(TensorFlow,百度飞桨等)作为研究对象,选取多种变更特征构建数据集,在代码提交级别对智能计算框架进行即时缺陷预测.另外,在此基础上使用LDA主题建模技术挖掘代码和代码提交信息作为新的特征,并使用随机森林进行预测.结果发现AUC-ROC平均值为0.77,且语义信息可以略微提升预测性能.最后,使用可解释机器学习方法 SHAP分析各特征属性对模型预测输出的影响,发现:(1)基本特征对于模型的影响符合传统软件开发规律;(2)代码和提交信息中的语义特征对模型的预测结果有重要影响;(3)不同系统中的不同特征对模型预测输出的贡献度排...  相似文献   

8.
静态软件缺陷预测方法研究   总被引:14,自引:7,他引:7  
静态软件缺陷预测是软件工程数据挖掘领域中的一个研究热点.通过分析软件代码或开发过程,设计出与软件缺陷相关的度量元;随后,通过挖掘软件历史仓库来创建缺陷预测数据集,旨在构建出缺陷预测模型,以预测出被测项目内的潜在缺陷程序模块,最终达到优化测试资源分配和提高软件产品质量的目的.对近些年来国内外学者在该研究领域取得的成果进行了系统的总结.首先,给出了研究框架并识别出了影响缺陷预测性能的3个重要影响因素:度量元的设定、缺陷预测模型的构建方法和缺陷预测数据集的相关问题;接着,依次总结了这3个影响因素的已有研究成果;随后,总结了一类特殊的软件缺陷预测问题(即,基于代码修改的缺陷预测)的已有研究工作;最后,对未来研究可能面临的挑战进行了展望.  相似文献   

9.
陈浙哲  鄢萌  夏鑫  刘忠鑫  徐洲  雷晏 《软件学报》2022,33(8):3015-3034
代码自然性(code naturalness)研究是自然语言处理领域和软件工程领域共同的研究热点之一,旨在通过构建基于自然语言处理技术的代码自然性模型,以解决各种软件工程任务.近年来,随着开源软件社区中源代码和数据规模的不断扩大,越来越多的研究人员注重钻研源代码中蕴藏的信息,并且取得了一系列研究成果.但与此同时,代码自然性研究在代码语料库构建、模型构建和任务应用等环节面临许多挑战.鉴于此,从代码自然性技术的代码语料库构建、模型构建和任务应用等方面对近年来代码自然性研究及应用进展进行梳理和总结.主要内容包括:(1)介绍了代码自然性的基本概念及其研究概况;(2)归纳目前代码自然性研究的语料库,并对代码自然性模型建模方法进行分类与总结;(3)总结代码自然性模型的实验验证方法和模型评价指标;(4)总结并归类了目前代码自然性的应用现状;(5)归纳代码自然性技术的关键问题;(6)展望代码自然性技术的未来发展.  相似文献   

10.
多模态维度情感预测综述   总被引:7,自引:3,他引:4  
李霞  卢官明  闫静杰  张正言 《自动化学报》2018,44(12):2142-2159
维度情感模型通过几个取值连续的维度(如唤醒维、效价维、支配维等)将情感刻画为一个多维信号.与传统的离散情感模型相比,具有表示情感的范围广、能描述情感的演变过程等优点,近年来受到越来越多情感识别研究者的关注.多模态维度情感预测是一项复杂的工程,预测性能受所使用的模态、每个模态的特征提取、信息融合技术、标注人员的标注误差等多方面影响.为了提高多模态维度情感预测的性能,研究者在各个方面都做出了不懈努力.本文综述了维度情感的概念、标注,维度情感预测的性能评价指标以及多模态维度情感预测的研究现状,对比和分析了各种因素对多模态维度情感预测性能的影响,并总结出多模态维度情感预测面临的挑战及发展趋势.  相似文献   

11.
软件缺陷预测可帮助开发人员提前预测缺陷程序,合理分配有限的测试资源。软件缺陷预测的准确度不仅依赖于预测方法的选择,更依赖于软件的度量指标。因此,结合多元度量指标进行软件缺陷预测已成为当前的研究热点。从度量指标出发,对传统度量指标、多元度量指标以及结合多元度量指标的缺陷预测的研究进展进行了系统介绍。主要工作包含:介绍了传统的代码和过程度量指标、基于传统度量指标的软件缺陷预测模型以及影响数据质量的因素;阐述了语义结构度量指标;分析列举了当前用于软件缺陷预测的评价指标;结合预测粒度、传统度量指标、语义结构度量指标、跨项目软件缺陷预测对多元度量指标软件缺陷预测未来的研究趋势进行了展望。  相似文献   

12.
特征提取是软件缺陷预测中的关键步骤,特征提取的质量决定了缺陷预测模型的性能,但传统的特征提取方法难以提取出软件缺陷数据的深层本质特征。深度学习理论中的自动编码器能够从原始数据中自动学习特征,并获得其特征表示,同时为了增强自动编码器的鲁棒性,本文提出一种基于堆叠降噪稀疏自动编码器的特征提取方法,通过设置不同的隐藏层数、稀疏性约束和加噪方式,可以直接高效地从软件缺陷数据中提取出分类预测所需的各层次特征表示。利用Eclipse缺陷数据集的实验结果表明,该方法较传统特征提取方法具有更好的性能。  相似文献   

13.
Just-in-time defect prediction can remind software developers and managers to verify and fix bugs at the moment they appeared, thus improving the effectiveness and validity of bug fixing. Existing studies mainly focus on just-in-time prediction for software files (JIT-F). JIT-F is a binary classification problem, which classifies (hence predicts) a file change as buggy or clean. This article provides a detailed analysis of just-in-time defect prediction for software hunks (JIT-H), which predicts bugs at a finer level of granularity, and hence further improves the efficiency of bug fixing. Classification is performed using the ensemble technique of bagging—aggregated combinations of random under sampling plus multiple classifiers (J48 and Random Forest). An empirical study with 10 open source projects was conducted to validate the effectiveness of JIT-H. Experimental results show that JIT-H is effective at predicting defects in software hunk changes. Compared with JIT-F, JIT-H is more cost effective. Additionally, analysis on the change features indicates that Text Vector features and hunk change level features are of more importance than features in other groups and levels.  相似文献   

14.
随着软件系统的规模越来越庞大,如何快速高效地预测软件中的程序缺陷成为一个研究热点。最近的研究引入了深度学习模型,使用神经网络提取代码特征构建分类器进行缺陷预测。针对现有的神经网络只在单层面、单粒度上提取代码特征,导致特征不够丰富,造成预测精度不高的问题,提出了一种基于特征融合的软件缺陷预测框架。通过将程序解析为抽象语法树(abstract syntax tree,AST)以及Token序列两种不同的程序表示方式,利用树卷积神经网络以及文本卷积神经网络分别提取代码的结构和语义特征进行特征融合,从而提取到更丰富的代码特征用于缺陷预测。同时改进了AST和Token序列提取方法,降低模型复杂度。选择使用公共存储库PROMISE中的公开数据集作为实验数据集,采用softmax分类器预测得到最终的预测结果。实验结果表明,该框架在实验数据集上可以获得比已有方法更高的F1-score。  相似文献   

15.
软件缺陷预测是提升软件质量的有效方法,而软件缺陷预测方法的预测效果与数据集自身的特点有着密切的相关性。针对软件缺陷预测中数据集特征信息冗余、维度过大的问题,结合深度学习对数据特征强大的学习能力,提出了一种基于深度自编码网络的软件缺陷预测方法。该方法首先使用一种基于无监督学习的采样方法对6个开源项目数据集进行采样,解决了数据集中类不平衡问题;然后训练出一个深度自编码网络模型。该模型能对数据集进行特征降维,模型的最后使用了三种分类器进行连接,该模型使用降维后的训练集训练分类器,最后用测试集进行预测。实验结果表明,该方法在维数较大、特征信息冗余的数据集上的预测性能要优于基准的软件缺陷预测模型和基于现有的特征提取方法的软件缺陷预测模型,并且适用于不同分类算法。  相似文献   

16.
针对软件缺陷预测中数据维度的复杂化和类不平衡问题,提出一种基于代理辅助模型的多目标萤火虫算法(SMO-MSFFA)的软件缺陷预测方法。该方法采用了多组策略萤火虫算法(MSFFA),以最小化数据的特征选择比率和最大化模型评测AUC值为多目标目标函数,分别以随机森林(RF)、支持向量机(SVM)和K近邻分类算法(KNN)为分类器构建软件缺陷预测模型。考虑到进化算法自身的迭代特点,嵌入代理模型离线完成部分个体评价函数的计算,以缩短计算耗时。在公开数据集NASA中的PC1、KC1和MC1项目上进行实验验证,与NSGA-II方法相比,在项目PC1、KC1和MC1上模型AUC均值分别提升0.17、降低0.01和提升0.09,平均特征选择比率分别降低0.08,0.17和0.05,平均耗时分别增加131 s,降低了199 s和降低了431 s。实验结果表明,提出的方法在提高模型性能、降低特征选择比率和缩短计算耗时方面具有明显的优势。  相似文献   

17.
软件故障预测中若采用大量度量指标建立预测模型,可能因其中含有无关特征使预测模型性能受到不良影响,故障预测中的特征选择步骤选取一定维度的部分故障数据建立预测模型来提高模型性能,以达到压缩特征维度,提高模型预测精度,降低预测模型复杂度,节约计算资源的目的。传统特征排序方法仅评估单个特征对类标的影响,建立的预测模型有效性较低;特征子集选择方法需搜索所有特征子集,耗费计算资源且所选特征维数较高。针对以上问题,提出一种基于拓展贝叶斯信息准则的特征选择方法(EBIC-FS),该方法对数据进行线性回归,并计算出残差平方和较小且数据维数较少的特征模型。在公开数据集M&R及Promise上进行实验,结果表明该方法能有效压缩特征维度,且预测模型性能与5种基线方法相比有较大提升。  相似文献   

18.
跨项目软件缺陷预测技术可以利用现有的已标注缺陷数据集对新的无标记项目进行预测,但需要两者之间具有相同的度量集合,难以用于实际开发.异构缺陷预测技术可以在具有异构度量集合的项目间进行缺陷预测,该技术引起了大量研究人员的关注.现有的异构缺陷预测技术利用朴素的或者传统机器学习方法为源项目和目标项目学习特征表示,所学习到的特征表示能力很弱且缺陷预测性能很差.鉴于深度神经网络强大的特征抽取和表示能力,本文基于变分自编码器技术提出了一种面向异构缺陷预测的特征表示方法.该模型结合了变分自编码器和最大均值差异距离,能有效地学习源项目和目标项目的共性特征表示,基于该特征表示可以训练出有效的缺陷预测模型.在多组缺陷数据集上通过与传统跨项目缺陷预测方法及异构缺陷预测方法实验对比验证了所提方法的有效性.  相似文献   

19.
倪超  陈翔  刘望舒  顾庆  黄启国  李娜 《软件学报》2019,30(5):1308-1329
在实际软件开发中,需要进行缺陷预测的项目可能是一个新启动项目,或者这个项目的历史训练数据较为稀缺.一种解决方案是利用其他项目(即源项目)已搜集的训练数据来构建模型,并完成对当前项目(即目标项目)的预测.但不同项目的数据集间会存在较大的分布差异性.针对该问题,从特征迁移和实例迁移角度出发,提出了一种两阶段跨项目缺陷预测方法FeCTrA.具体来说,在特征迁移阶段,该方法借助聚类分析选出源项目与目标项目之间具有高分布相似度的特征;在实例迁移阶段,该方法基于TrAdaBoost方法,借助目标项目中的少量已标注实例,从源项目中选出与这些已标注实例分布相近的实例.为了验证FeCTrA方法的有效性,选择Relink数据集和AEEEM数据集作为评测对象,以F1作为评测指标.首先,FeCTrA方法的预测性能要优于仅考虑特征迁移阶段或实例迁移阶段的单阶段方法;其次,与经典的跨项目缺陷预测方法TCA+、Peters过滤法、Burak过滤法以及DCPDP法相比,FeCTrA方法的预测性能在Relink数据集上可以分别提升23%、7.2%、9.8%和38.2%,在AEEEM数据集上可以分别提升96.5%、108.5%、103.6%和107.9%;最后,分析了FeCTrA方法内的影响因素对预测性能的影响,从而为有效使用FeCTrA方法提供了指南.  相似文献   

设为首页 | 免责声明 | 关于勤云 | 加入收藏

Copyright©北京勤云科技发展有限公司  京ICP备09084417号