《中国人工智能学会通讯》——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] 提出了软件缺陷挖掘的评估和建模应该考虑时序关系。

相关文章
|
7月前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能在公司监视员工电脑的软件中的崭新应用(TensorFlow)
在当今数字化时代,企业日益依赖人工智能技术来提高工作效率和确保数据安全。最近,TensorFlow作为一种强大的机器学习工具,开始在公司监视员工电脑的软件中崭露头角。本文将探讨TensorFlow在这一领域中的创新应用,并通过多个代码示例展示其功能。
274 0
|
4月前
|
人工智能 安全 Anolis
中兴通讯分论坛邀您探讨 AI 时代下 OS 的安全能力 | 2024 龙蜥大会
操作系统如何提供符合场景要求的安全能力,构建更加安全可信的计算环境。
|
7月前
|
机器学习/深度学习 人工智能 自然语言处理
人工智能情感标注(Emotion Labeling)
人工智能情感标注(Emotion Labeling)
410 2
|
7月前
|
人工智能 自然语言处理 前端开发
ChatGPT更新的使用指南,与其他类似的人工智能的软件和服务-更新版(2023-6-25)
ChatGPT更新的使用指南,与其他类似的人工智能的软件和服务-更新版(2023-6-25)
113 0
|
7月前
|
机器学习/深度学习 人工智能 监控
人工智能在内网上网行为管理软件中的智能分析与优化
随着科技的迅猛发展,内网上网行为管理软件越来越成为企业信息安全的重要组成部分。本文将探讨如何通过人工智能技术对内网上网行为进行智能分析与优化,以提高管理软件的效能。
374 0
|
机器学习/深度学习 传感器 自动驾驶
自动驾驶软件和人工智能
自动驾驶汽车的核心在于其软件系统,而其中的机器学习和深度学习技术是使车辆能够感知、理解、决策和行动的关键。本文将深入探讨这些技术在自动驾驶中的应用,包括感知、定位、路径规划以及道路标志和交通信号的识别。
166 0
|
机器学习/深度学习 人工智能 自然语言处理
搜狗翻宝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 应用与工具大全。
552 0
阳过→阳康,数据里的时代侧影;谷歌慌了!看各公司如何应对ChatGPT;两份优质AI年报;本周技术高光时刻 | ShowMeAI每周通讯 #003-12.24
|
机器学习/深度学习 人工智能 自然语言处理
2022年十大人工智能 (AI) 软件解决方案
IDC 预测,人工智能平台和人工智能应用开发和部署将继续成为人工智能市场增长最快的领域。此列表为组织评估最适合其需求的方法和解决方案提供了一个起点。
940 0
2022年十大人工智能 (AI) 软件解决方案
|
人工智能
ai人工智能写歌词app,ai写歌词网站,ai作词软件创作版,作词人的辅助工具,押韵助手
早在2019年,AI机器人小芝(aixiegeci)就出现在音乐创作创作领域,作为一个AI人工智能写歌词app,在歌词创作领域辅助音乐人写歌词的应用。在软件上输入三句话作为关键词引导句子,选择歌词风格,30秒就能完成一首歌词的创作,根据主题来写一首原创歌词给音乐人作为歌词创作词穷时作为参考借鉴。同时,该应用软件还可以选择歌词的韵脚(十三韵)和每句歌词末尾押韵的字数。
1233 0
ai人工智能写歌词app,ai写歌词网站,ai作词软件创作版,作词人的辅助工具,押韵助手