白首华 胡天彤
摘 要: 软件静态缺陷预测系统经过常规的优化设计后,泛化能力较差,容易将低缺陷率软件模块误判为高缺陷率软件模块。为此,提出微型嵌入式软件静态缺陷预测系统优化设计。在优化设计中硬件部分使用原有的硬件结构,分析软件静态缺陷预测中的问题,建立软件静态缺陷预测模型,得到的学习目标用来训练样本,利用分类函数和训练样本通过多次迭代实现缺陷预测,完成缺陷系统的优化设计。测试结果表明,在数据集和模块数相同的情况下,与经过常规优化设计的系统相比,所提系统测试结果未发生误判情况,与实际数据相符,泛化能力较强,适合应用在实际项目中。
关键词: 微型嵌入式软件; 缺陷预测; 预测模型; 优化设计; 样本训练; 系统测试
中图分类号: TN911.23?34; TP311 文献标识码: A 文章编号: 1004?373X(2020)10?0097?03
Optimization design of static defect prediction system for miniature embedded software
BAI Shouhua, HU Tiantong
(Zhengzhou University of Aeronautics, Zhengzhou 450046, China)
Abstract: The software static defect prediction system achieved by the conventional optimization design has poor generalization ability, and is easy to misjudge the software module with low defect rate as the one with high defect rate. Therefore, an optimization design of static defect prediction system for miniature embedded software is proposed. In the optimization design, the original hardware structure in the hardware part is still used, the problems in the software static defect prediction are analyzed, the software static defect prediction model is established, the obtained learning objectives are used to training sample, and the classification function and training samples are adopted to realize the defect prediction by multiple iterations. In this way, the optimization design of the defect prediction system is completed. The testing results show that, under the condition of the same number of data sets and modules, in comparison with the system designed by the conventional optimization, the proposed system has no misjudgment, is consistent with the actual data, and has strong generalization ability, which is suitable for the application in the actual project.
Keywords: miniature embedded software; defect prediction; prediction model; optimization design; sample training; system testing
0 引 言
微型嵌入式軟件已经被广泛应用到各行各业中,其自身具有内核小、实时性以及专用性强的特点,一般工作在空间及时间资源严重被限制环境中,对软件质量要求比较高,预测软件缺陷问题难度较大[1]。在微型嵌入式软件静态缺陷预测系统中,静态缺陷是一个研究热点。预测程序模块中是否存在静态缺陷,若存在静态缺陷,及时发现并解决,可达到加速软件测试过程、降低软件测试成本以及提高系统质量的目的[2]。软件静态缺陷存在很多种,如程序缺陷、文档缺陷和设计缺陷等。常规的微型嵌入式软件静态缺陷预测系统优化设计,只优化了预测系统对缺陷分布的预测范围,但是由于其泛化能力较差,容易出现将低缺陷率模块误判为高缺陷率模块的情况,造成测试成本投入增加[3]。为了解决上述问题,提出微型嵌入式软件静态缺陷预测系统优化设计。
1 微型嵌入式软件静态缺陷预测系统优化设计
1.1 建立软件静态缺陷预测模型
微型嵌入式软件静态缺陷预测系统中标记缺陷数据较少,在建立预测模型过程中,没有足够软件静态缺陷数据支撑,但未标记的样本数据能增加建立模型所需样本数据[4]。如图1所示,半监督学习方法不只是利用已有的标记缺陷的样本来训练预测模型,同时也利用未标记的样本来增强学习过程[5]。
通过生成式模型参数的估计解释了半监督学习的有效性。在该方法中,缺陷数据类分布[Kαt]用预测模型集合[Kαt,ε]来表示,更深层的数据类别概率[Kpt]用[λt=Ktλ]表示,其中[t]为标记向量,[ε]表示协方差矩阵,[λ]为混合系数。根据联合密度模型,[Kαt]可以用[λtKαt,ε]表示,通过在概率[λt=Ktλ]上平均化[λtKαt,ε],得贝叶斯预测分布[6][Ktα,ε],则[Kα]边缘分布为:
[Kαε,λ=t=1λλtKαt,ε] (1)
式中:[α]为缺陷数据;[ε]为协方差矩阵;[λ]为混合系数;[t]为标记向量。在获得标记缺陷数据样本和未标记的缺陷数据样本的情况下,式(1)经最大化处理,得到学习目标就是用来训练样本,达到预测软件静态缺陷的目的[7]。在预测模型建立完成后,计算分类函数,预测更多未知测试样本数据[8]。
1.2 计算分类函数
常规预测系统优化设计中存在误判的情况,可将决策平面向少数类方向移动阈值,使训练得到的分类器以及分类函数对于某类数据具有倾向性,解决误判问题[2]。假设[H=H1,H2,…,Hn]表示n维特征,计算每一维特征的特征均值[argi],根据第i维特征均值,将训练集划分为大于等于均值和小于均值的两部分数据,分别训练两个数据集,共同构建成一个强分类器,也就是分类函数[9],即:
[Fx=argmaxdfix,tr] (2)
式中:[fix]表示第i個分类器的分类结果;[tr]表示第r类的软件模块标记;[dfix,tr]表示指示函数。
通过setFilter函数设置过滤器,再利用if语句和setClassifier函数建立不同的分类器[10]。实现分类器构建的部分程序代码如图2所示。
通过上述方式构建多个强分类器,确定分类函数,提高软件缺陷预测系统的整体表现能力,再利用相应的算法实现软件静态缺陷的预测。
1.3 优化预测算法
为了解决常规的预测系统优化中存在的误判问题,对该系统中的预测算法进行优化[11]。在软件缺陷预测的半监督模型中,假设未标记的缺陷数据样本集合为Q,大小为q,系统中各个软件模块的标记为W,存在缺陷的软件模块标记为“true”,无缺陷的软件模块标记为“false”。令带有标记的数据样本集合大小[12]为t。假设Q的分布为R,最终的分类函数[F:Q→W],[fi]表示集成的分裂期,i为常数。在预测算法中,通过T数据集使分类函数初始化,与之对应的训练数据集随着不同的分类函数的初始化结果更新。若出现未标记的分类数据集,通过分类函数的分类结果存在与之相同的结果,则确定对应分类函数后,将其加入到该分类结果对应分类器训练数据集中[13]。考虑未标记的数据集与带标记的数据集有相同分布,即:
[1qi=τ+1τ+qwi=1τi=1τwi] (3)
使用分类器对未标记样本数据集标记时,数据集中主要包括多数类样本,更新每个分类器训练数据集时,新的可信度高,被标记的数据仍然偏向多数类[14]。在每次迭代中,训练样本集中增加正样本个数远远少于负样本个数,使用多数表决的方法更新每个分类器对应的数据集,实现软件静态缺陷预测。
2 软件静态缺陷预测系统优化测试
2.1 测试环境与数据
本次测试软件运行在操作系统为Windows 10,CPU为Intel Pentium Dual,运行内存为4 GB,硬盘内存为500 GB的机器平台上。测试数据选择MDP数据包,包含数据如表1所示。本次测试根据数据集模块缺陷率,使用软件静态缺陷测试平台测试软件模块缺陷情况,为了体现明显的对比效果,在测试平台中新建两个预测任务,上传待预测的数据集,分别用不同的预测系统统一进行预测,任务创建成功后,初始状态为“等待测试”。新建预测任务界面如图3所示。
2.2 测试结果及分析
使用不同的方法优化后的预测系统,预测模块缺陷情况,如图4所示。观察图4,在数据集和模块数相同的情况下,使用提出的优化方法优化后的预测系统测试结果与实际数据基本相符,对于软件静态缺陷等级判断,未出现误判情况。而使用常规优化方法优化后的预测系统,其测试结果整体趋势偏高,缺陷等级高的数据,预测结果与实际数据相似,但是对于缺陷等级低的数据,预测结果过高,出现将低缺陷率模块误判为高缺陷率模块情况,泛化能力较差。两者相比,提出使用半监督学习方法优化的预测系统有效改善了常规优化系统中的问题,泛化能力得到提高。
3 结 语
由于微型嵌入式软件预测系统的硬件部分具有较高的安全性,对软件静态缺陷预测影响较小,所以在优化设计中默认使用常规的硬件结构。以此为基础,设计软件缺陷预测模型,计算分类函数,优化预测算法,实现微型嵌入式软件静态缺陷预测。
参考文献
[1] 杨颖,周志飞,钟理,等.嵌入式软件静态测试技术[J].机车电传动,2017(1):61?64.
[2] 朱朝阳,陈相舟,闫龙,等.基于主成分分析法的人工免疫识别软件缺陷预测模型研究[J].计算机科学,2017,44(z1):493?495.
[3] 周末,徐玲,杨梦宁,等.基于深度自编码网络的软件缺陷预测方法[J].计算机工程与科学,2018,40(10):84?92.
[4] 崔军,刘亚娜,郭新峰,等.基于最大信息系数的软件缺陷预测模型[J].应用概率统计,2019,35(1):90?112.
[5] 哈清华,刘大有,陈媛,等.基于迁移学习的跨公司航天软件缺陷预测[J].光学精密工程,2019,27(2):48?55.
[6] 刘恺,包月青,赵先锋.改进的软件缺陷预测模型研究[J].浙江工业大学学报,2019,47(2):111?115.
[7] 张肖,王黎明.一种半监督集成学习软件缺陷预测方法[J].小型微型计算机系统,2018,39(10):12?19.
[8] 王铁建,吴飞,荆晓远.基于半监督集成学习的软件缺陷预测[J].模式识别与人工智能,2017,30(7):646?652.
[9] 杨杰,燕雪峰,张德平,等.考虑KL散度的多源软件缺陷预测方法[J].小型微型计算机系统,2017,38(11):2494?2498.
[10] 胡芸,胡国祥,胡世港,等.嵌入式软件缺陷的自动定位技术实现[J].现代电子技术,2017,40(18):79?82.
[11] 王海林,于倩,李彤,等.基于CS?ANN的软件缺陷预测模型研究[J].计算机应用研究,2017,34(2):467?472.
[12] 李冉,周丽娟,王华.面向类不平衡数据集的软件缺陷预测模型[J].计算机应用研究,2018,35(9):252?256.
[13] 李勇,黄志球,王勇,等.数据驱动的软件缺陷预测研究综述[J].电子学报,2017,45(4):982?988.
[14] 廖胜平,徐玲,鄢萌.基于采样的半监督支持向量机软件缺陷预测方法[J].计算机工程与应用,2017,53(14):161?166.