《中国人工智能学会通讯》——8.43 基于缺陷标注挖掘软件缺陷

简介: 本节书摘来自CCAI《中国人工智能学会通讯》一书中的第8章,第8.43节, 更多章节内容可以访问云栖社区“CCAI”公众号查看。

8.43 基于缺陷标注挖掘软件缺陷

除通过描述程序的正常模式以发现软件缺陷外,另一类有效的软件缺陷挖掘技术则是通过直接对带有人工缺陷标注的程序模块进行学习建模,建立从程序模块的特征表示到软件缺陷的映射关系,以预测给定程序模块的是否可能包含缺陷。

基于缺陷标注挖掘软件缺陷的一般流程如图 1所示。首先人工对软件源代码进行详细软件测试,获得每个模块的缺陷情况标注。然后,利用软件度量 (software metric) [8] 技术提取多种与软件模块的缺陷相关的代码级统计指标 ( 如代码长度、代码分支数、代码的圈复杂度等 ) 作为描述软件模块的特征,从而将程序代码转化为一组特征向量。基于特征向量表示的模块及其缺陷情况标注,通过监督学习得到预测模型,对新的模块的缺陷情况进行预测。

image

特征与学习算法
基于缺陷标注挖掘软件缺陷的建模过程有两个关键步骤,第一,如何提取适合于预测模块缺陷情况的特征;第二,如何选取合适的学习方法。 在特征提取方面,Menzies et al [9] 提出利用代码的静态特征 ( 包括 LOC ( 代码长度 )、McCabe 复杂度、Halstead 复杂度等 ) 来描述软件模块用于缺陷挖掘。在此基础上,Zimmermann et al [10] 提出了图结构特征。Kim et al [11] 提出了软件时空局部性特征,并基于此预测软件模块的缺陷情况。除设计和使用新的软件度量作为特征以外,还可以基于现有特征构建更有利于进行软件缺陷挖掘的特征[12-13] ,或是从源代码出发直接学习新型特征表示[14] 。

在学习算法的选取方面,研究者们早期对不同的学习算法在软件缺陷挖掘任务上的表现进行了研究,使用的学习算法包括朴素贝叶斯分类器[15] 、逻辑回归[16] 、神经网络 [17]等。Lessmann et al [18] 在11 个基准缺陷预测的数据集 NASA 上,通过大量实验对比了 19 个预测模型方法 (SVM、逻辑回归、决策树、朴素贝叶斯等 ),揭示出没有任何算法在所有数据上都一致优于其他算法,从而也为类似研究画上了句号。

应对昂贵的人工标注
由于软件模块的缺陷标注需要程序员对代码进行详细测试或人工代码检查,会消耗大量软件质量保障资源。对于一个刚完成的开发软件项目通常仅能获得极少量的缺陷标注。利用如此少量的数据进行学习建模,难以获得良好的性能。

为 缓 解昂贵人工缺陷标注导致训练样本不足这一问题,一种思路是利用有较多缺陷标注积累的早期版本或者软件项目来扩充训练数据。然而,由于发现不同项目的代码特征分布相差大,直接进行跨软件项目的缺陷挖掘性能很差[19] 。

针对这一问题,Turhan et al [20] 利用最近邻方法从其他公司的缺陷数据中筛选出与本项目数据分布相似的模块,并利用这些模块来帮助预测当前项目的缺陷,获得了性能的改善;Nam et al [21] 基于迁移学习技术将其他项目的缺陷信息映射到当前软件项目并加以利用,提升了跨项目缺陷预测的性能。

除利用其他项目的历史数据资源外,另一种思路是充分利用待预测的软件模块中蕴涵的分布信息来辅助提升学习性能。Seliya et al [22-23] 最早将半监督学习技术引入软件缺陷挖掘 , 他们使用基于约束的 k- 均值算法来对当前的软件模块数据进行半监督聚类,并据此标注软件模块的缺陷情况;Lu et al [24]使用了一种基于自我训练的半监督分类方法对软件缺陷进行预测,在此基础上,通过对软件模块数据进行降维,从而获得更好的性能[25] 。由于在实际应用中,包含软件缺陷的模块数量往往远少于正常模块数量。Jiang et al [26] 讨论了缺陷模块分布不平衡对学习性能造成的影响,并提出了一种的能够应对数据分布不平衡的半监督学习方法 ROCUS,较直接进行监督学习性能提升超过了 70%。Li et al [27]提出代价敏感半监督软件缺陷预测方法,能够在高风险应用场景中更加有效地识别高风险缺陷。为进一步降低人工标注开销,Li et al [28] 在半监督学习中进一步引入主动学习机制,通过主动挑选出最困难的模块获得人工缺陷标注并加以学习,在有限测试资源投放的情况下获得了尽可能大的性能提升。

面向更多实际问题
在基于缺陷标注的软件缺陷挖掘中,除需要有效应对昂贵人工标注为学习建模带来的困难,还需要考虑其他的各种实际问题,以提升软件缺陷挖掘在实际软件开发中的可用性。Jiang et al [29] 指出不同开发人员的编码习惯和风格会导致缺陷模式各异,因此需要针对不同开发人员构建预测模型,从而获得更优的缺陷预测性能。Tantithamthavorn etal [30] 研究了软件数据所包含噪声对缺陷预测结果的影响。Peters et al [31] 研究了跨项目挖掘中的隐私保护问题,提出了 LACE2 模型减少数据分享带来的隐私泄露隐患。Tan et al [32] 提出了软件缺陷挖掘的评估和建模应该考虑时序关系。

相关文章
|
4月前
|
机器学习/深度学习 人工智能 自然语言处理
人工智能情感标注(Emotion Labeling)
人工智能情感标注(Emotion Labeling)
95 2
|
机器学习/深度学习 人工智能 自然语言处理
搜狗翻宝Pro机再次开挂,智能翻译硬件成中国人工智能的新风口
第五届世界互联网大会正在如火如荼的举行。
搜狗翻宝Pro机再次开挂,智能翻译硬件成中国人工智能的新风口
|
机器学习/深度学习 人工智能 自然语言处理
阳过→阳康,数据里的时代侧影;谷歌慌了!看各公司如何应对ChatGPT;两份优质AI年报;本周技术高光时刻 | ShowMeAI每周通讯 #003-12.24
这是ShowMeAI每周通讯的第3期。本期内容关键词:新冠、ChatGPT、2022 AI 报告、腾讯·绝悟、阿里·AliceMind、小红书·全站智投、OpenAI·Point-E、Google·CALM、Wayve·MILE、AI2·MemPrompt、Stanford x MosaicML·PubMed GPT、腾讯全员大会、特斯拉裁员、图森未来裁员、AI 应用与工具大全。
472 0
阳过→阳康,数据里的时代侧影;谷歌慌了!看各公司如何应对ChatGPT;两份优质AI年报;本周技术高光时刻 | ShowMeAI每周通讯 #003-12.24
|
机器学习/深度学习 人工智能 自然语言处理
与世界同行 2017中国人工智能大会有感
与世界同行 2017中国人工智能大会有感
1660 0
与世界同行 2017中国人工智能大会有感
|
人工智能 自动驾驶
2019年上半年收集到的中国人工智能发展详情文章
2019年上半年收集到的中国人工智能发展详情文章
|
人工智能 芯片
中国人工智能计划,我来说几句
中国人工智能计划,我来说几句
|
机器学习/深度学习 人工智能 自然语言处理
2022 年中国人工智能行业发展现状与市场规模分析 市场规模超 3000 亿元
人工智能产业是智能产业发展的核心,是其他智能科技产品发展的基础,近年来,中国人工智能产业在政策与技术双重驱动下呈现高速增长态势。
1715 0
2022 年中国人工智能行业发展现状与市场规模分析 市场规模超 3000 亿元
|
数据采集 人工智能 智能设计
Nat. Biotechnol. | 人工智能药物研发在中国蓬勃发展
Nat. Biotechnol. | 人工智能药物研发在中国蓬勃发展
758 0
Nat. Biotechnol. | 人工智能药物研发在中国蓬勃发展
|
机器学习/深度学习 人工智能 监控
中国95后流行色是什么?人工智能给出的答案是它
中国 95 后的流行色是什么?人工智能说是 RGB 值为 22/20/24 的「黑色」。
511 0
中国95后流行色是什么?人工智能给出的答案是它
|
机器学习/深度学习 人工智能 自然语言处理
机器之心选出全球最值得关注的100家人工智能公司(中国27家),同时这是一个开源项目
机器之心和 Comet Labs 联合发布了影响全球人工智能公司的榜单。我们选取了基础研究、技术和产品、行业潜力、公司运营能力、资本实力等五个维度,甄选出了全球范围内最具前途的 100 家人工智能公司,它们包括那些我们已经熟知的科技巨头,垂直行业独角兽,也有尚在萌芽的初创公司。 当然,这份榜单肯定没有做到尽善尽美,也存在 100 家的名额限制,但我们坚信,这份基于我们诚意、内容经验和专业判断的不存在任何商业利益的榜单可以为大家总结和精炼出一些有价值的信息,带给大家灵感和启发。
472 0
机器之心选出全球最值得关注的100家人工智能公司(中国27家),同时这是一个开源项目