基于程序语义的软件缺陷预测技术研究与实现
发布时间:2021-06-17 18:15
软件缺陷预测技术能够辅助开发者发现潜在的软件缺陷,并降低发现缺陷所需的开销。传统软件缺陷预测方法通常利用软件度量元信息(代码行数、控制流圈复杂度等)作为特征来构建机器学习模型,预测有缺陷的软件模块。然而这种方法的缺点在于软件度量元中不包含软件的语法结构信息和语义信息。本文提出了一种使用词嵌入和深度学习技术以学习程序语义信息,进而预测程序中缺陷的方法Seml(Semantic LSTM model)。本方法首先从源码的抽象语法树中按顺序抽取特定结点token,组成一个token序列,然后利用一个无监督训练得到的词嵌入模型,将每个token映射为一个定长的实值向量。在将每个样本的token序列转换为向量序列后,本方法利用训练集的向量序列和它们的标签(是否包含缺陷)来构建基于长短期记忆网络的缺陷预测模型。长短期记忆网络模型能够从序列中自动学习token的顺序关系,从而习得程序的语义信息。在PROMISE数据集的8个开源项目上进行的一系列实验表明,相比于现有的基于深度学习的缺陷预测方法以及目前先进的基于度量元的缺陷预测方法(DBN方法,tb-LSTM方法和ISDA方法),本文提出的方法在项目内...
【文章来源】:北京邮电大学北京市 211工程院校 教育部直属院校
【文章页数】:69 页
【学位级别】:硕士
【部分图文】:
图3_?1?Sem丨的整体结构??Semi的输入为以文件为单位的软件项0的源码,输出为待测文件的标签(有??缺陷或无缺陷)
缺陷预测??报告??图4-1系统框架图??图4-1为基于程序语义的软件缺陷预测系统的框架图。系统的输入为文件名??中带有标识字符串的训练集源码或待测项目源码,输出为训练好的缺陷预测模型??或待测项目的缺陷预测报告。系统由标签识别、特征抽取、token预处理、token??映射、CBOW模型训练、缺陷预测模型训练、缺陷预测和报告生成等模块组成。??下面对每个模块的设计和部分细节进行简要介绍:??1.
?取消??图4-3系统特征抽取界面??如图4-3所示为系统的特征抽収部分的界而。这一部分能够指定源码文件所??在的文件夹和生成的token序列所在的文件夹,从而实现对源码文件进行批量抽??取特征。??特征抽収部分的工作流程为:从用户指定的文件夹中读取全部Java文件,??对每个Java文件,首先将其转换为抽象语法树,再从抽象语法树中抽収特定结??点并记4?token。生成token序列后,将每个token序列在用户指定的位置保存为??一个文本文件,并以对应源码文件的绝对路径来命名该文件。??4.2.2模型训练??特S文件所在目录:?(None丨?▼??模型选择:??◎长短期记忆网络(LSTM)??其他??开始训练?取消??图4-4系统模型训练界面??图4-4为系统的模型训练界面。模型训练界而能够指定训练集特征所在目录。??其中训练数据需要人工进行标注,标注方法为:对于包含缺陷的源码文件,在其??25??
【参考文献】:
期刊论文
[1]基于深度自编码网络的软件缺陷预测方法[J]. 周末,徐玲,杨梦宁,廖胜平,鄢萌. 计算机工程与科学. 2018(10)
[2]基于局部稀疏重构度量学习的软件缺陷预测[J]. 王晴,荆晓远,朱阳平,吴飞,董西伟,程立. 计算机技术与发展. 2016(11)
[3]一种面向软件缺陷预测的可容忍噪声的特征选择框架[J]. 刘望舒,陈翔,顾庆,刘树龙,陈道蓄. 计算机学报. 2018(03)
[4]基于集成学习的软件缺陷检测[J]. 黄文聪,荆晓远,姚永芳,吴飞. 计算机技术与发展. 2015(10)
[5]代价敏感分类的软件缺陷预测方法[J]. 李勇,黄志球,房丙午,王勇. 计算机科学与探索. 2014(12)
[6]基于均衡有偏支持向量机的软件缺陷预测[J]. 李倩茹,姚伟. 计算机工程. 2013(08)
本文编号:3235680
【文章来源】:北京邮电大学北京市 211工程院校 教育部直属院校
【文章页数】:69 页
【学位级别】:硕士
【部分图文】:
图3_?1?Sem丨的整体结构??Semi的输入为以文件为单位的软件项0的源码,输出为待测文件的标签(有??缺陷或无缺陷)
缺陷预测??报告??图4-1系统框架图??图4-1为基于程序语义的软件缺陷预测系统的框架图。系统的输入为文件名??中带有标识字符串的训练集源码或待测项目源码,输出为训练好的缺陷预测模型??或待测项目的缺陷预测报告。系统由标签识别、特征抽取、token预处理、token??映射、CBOW模型训练、缺陷预测模型训练、缺陷预测和报告生成等模块组成。??下面对每个模块的设计和部分细节进行简要介绍:??1.
?取消??图4-3系统特征抽取界面??如图4-3所示为系统的特征抽収部分的界而。这一部分能够指定源码文件所??在的文件夹和生成的token序列所在的文件夹,从而实现对源码文件进行批量抽??取特征。??特征抽収部分的工作流程为:从用户指定的文件夹中读取全部Java文件,??对每个Java文件,首先将其转换为抽象语法树,再从抽象语法树中抽収特定结??点并记4?token。生成token序列后,将每个token序列在用户指定的位置保存为??一个文本文件,并以对应源码文件的绝对路径来命名该文件。??4.2.2模型训练??特S文件所在目录:?(None丨?▼??模型选择:??◎长短期记忆网络(LSTM)??其他??开始训练?取消??图4-4系统模型训练界面??图4-4为系统的模型训练界面。模型训练界而能够指定训练集特征所在目录。??其中训练数据需要人工进行标注,标注方法为:对于包含缺陷的源码文件,在其??25??
【参考文献】:
期刊论文
[1]基于深度自编码网络的软件缺陷预测方法[J]. 周末,徐玲,杨梦宁,廖胜平,鄢萌. 计算机工程与科学. 2018(10)
[2]基于局部稀疏重构度量学习的软件缺陷预测[J]. 王晴,荆晓远,朱阳平,吴飞,董西伟,程立. 计算机技术与发展. 2016(11)
[3]一种面向软件缺陷预测的可容忍噪声的特征选择框架[J]. 刘望舒,陈翔,顾庆,刘树龙,陈道蓄. 计算机学报. 2018(03)
[4]基于集成学习的软件缺陷检测[J]. 黄文聪,荆晓远,姚永芳,吴飞. 计算机技术与发展. 2015(10)
[5]代价敏感分类的软件缺陷预测方法[J]. 李勇,黄志球,房丙午,王勇. 计算机科学与探索. 2014(12)
[6]基于均衡有偏支持向量机的软件缺陷预测[J]. 李倩茹,姚伟. 计算机工程. 2013(08)
本文编号:3235680
本文链接:https://www.wllwen.com/kejilunwen/ruanjiangongchenglunwen/3235680.html