[发明专利]一种软件缺陷预测的改进排序学习方法在审
申请号: | 201910231073.4 | 申请日: | 2019-03-26 |
公开(公告)号: | CN109947652A | 公开(公告)日: | 2019-06-28 |
发明(设计)人: | 杨晓杏;温武少;李鑫 | 申请(专利权)人: | 中山大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F11/00 |
代理公司: | 广州市华学知识产权代理有限公司 44245 | 代理人: | 林梅繁 |
地址: | 510275 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 排序 训练数据 复杂度 预处理 模型参数 软件缺陷 优化模型 回归 多目标优化算法 源代码文件 测试数据 构造预测 模型分析 缺陷信息 软件模块 实际需求 应用场景 优化算法 单目标 组模型 预测 度量 改进 学习 赋予 | ||
本发明为软件缺陷预测的改进排序学习方法,包括步骤:从已知缺陷个数的源代码文件中提取度量元和相应的缺陷个数,作为训练数据;对训练数据进行预处理;利用预处理过的训练数据构造预测模型,使用多目标优化算法同时优化模型的排序性能、回归性能以及模型复杂度,得到一组模型参数,然后根据实际需要选择合适的模型参数,或者先根据实际需求对模型的排序性能、回归性能以及模型复杂度赋予相应的权值,然后使用单目标优化算法求得模型参数;利用训练得到的模型分析测试数据,得到相应软件模块的缺陷信息。本发明能优化模型的排序性能、回归性能以及模型复杂度,更好适应不同应用场景下的不同需求。
技术领域
本发明涉及软件工程中的软件分析及缺陷预测领域,具体为一种软件缺陷预测的改进排序学习方法。
背景技术
软件缺陷预测起始于20世纪70年代,是指利用统计学习技术,根据历史数据以及已经发现的缺陷等软件度量数据预测软件系统的缺陷数目及其类型。缺陷预测技术的目的在于统计计算软件系统的缺陷数、没有发现但还可能存在的缺陷数,以决定系统是否可以交付使用。缺陷预测技术促进了软件质量的提高,同时,也使软件工程技术向前大大地发展了一步。
于2016年12月7日公开的发明专利“基于代价敏感半监督的软件缺陷预测方法”(公开号CN106201871A),提出了一种整体代价最小化的半监督预测方法,解决了软件缺陷预测中缺陷数据难以获取和类不平衡的问题。于2016年5月18日公开的“一种基于SMOTE+Boosting算法的软件缺陷倾向预测方法”(公开号CN105589806A),使用SMOTE算法合成人工少数类样本,根据原样本分布的密度信息计算人工少数类样本的惩罚因子以调整人工样本的权重,使基本分类器区别原样本和人工少数类样本的学习而更偏重原样本和可信度较高的人工样本的学习,提高了少数类和多数类的分类精度。于2019年1月8日公开的发明专利“基于核主成分分析算法的软件缺陷预测模型设计方法”(公开号CN109165160A),使用核主成分分析算法来对数据集进行降维处理,解决了软件缺陷的度量元中存在冗余数据的问题,提高了机器学习算法的准确率。
软件缺陷预测技术大体上分为静态缺陷预测方法和动态缺陷预测方法。其中,静态缺陷预测方法基于缺陷相关的度量数据对程序模块的缺陷倾向性、缺陷密度或缺陷数进行预测。而动态缺陷预测方法则是基于缺陷或失效产生的时间对系统缺陷随时间的分布进行预测,以发现软件缺陷随其生命周期或其中某些阶段的时间关系的分布规律。
基于度量元的软件缺陷预测是静态软件缺陷预测的一个主要分支,其利用软件模块的各种特征(如代码长度、代码变化等)构造模型,用于预测新的软件模块的缺陷相关信息。模型预测的软件模块的缺陷相关信息不但能反映软件模块的质量,还能用于指导测试资源的分配。最为常见的预测目标包括预测软件模块是否含有缺陷,以及预测软件模块含有缺陷的个数。根据这两种预测目标,目前基于度量元的软件缺陷预测大致分为两类:分类任务的软件缺陷预测和排序任务的软件缺陷预测。
排序任务的软件缺陷预测模型适用于测试资源未知的情况——测试资源少时,只对含缺陷个数很多的软件模块进行测试;当测试资源多时,含缺陷个数较少的软件模块也能得到测试。现有的排序任务的软件缺陷预测模型的主要构造算法是回归算法,主要由最小二乘法或者最大似然法得到,以拟合度为目标。这样构造排序任务的软件缺陷预测模型存在的问题是,拟合度好的模型给出的模块排序不一定好。因此,有份文献(X.Yang,K.Tang,and X.Yao,A Learning-to-Rank Approach to Software Defect Prediction,IEEE Transaction on Reliability,Vol.64,No.1,pp.234-246,2015.)提出排序学习算法,即通过直接优化软件缺陷预测模型的排序性能来构造模型;实验结果表明,与最小二乘法、最大似然法相比,直接优化模型的排序性能得到的预测模型能给出更好的模块排序。
发明内容
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中山大学,未经中山大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910231073.4/2.html,转载请声明来源钻瓜专利网。
- 上一篇:人工智能引擎优化方法和装置
- 下一篇:用于测试用例库自动更新的方法与设备