试谈软件缺陷预测在软件开发过程中的研究
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件研发与应用SOFTWARE DEVELOPMENT&APPLICATION
试谈软件缺陷预测在软件开发过程中的研究
宋锦华
(鹤壁职业技术学院,河南鹤壁458000)
摘要:软件缺陷预测是对软件质量进行控制和预测,从而提高软件测试效率、保证软件高质量的一个重要方法。
近年来,随着软件的发展、规模的扩大以及复杂度的不断提高,尽早地挖掘出软件缺陷,从哪些方面进行数据挖掘,怎样设计出与缺陷相关的度量元,采用什么方法构建缺陷预测模型,已然成为了软件工程中一个重要的研究课题。
关键词:缺陷预测;度量元;数据挖掘;缺陷预测模型
1软件缺陷预测
1.1概述
软件缺陷预测是一种在软件工程开发早期对软件质量进行控制和预测的方法。
其主要使用机器学习的理论方法,设计出与缺陷相关的内在度量元,然后构建软件质量预测模型。
而软件缺陷预测则是通过构建出的缺陷模型,来对软件中潜在的缺陷进行预测和预警。
软件缺陷预测不仅有效地提高软件的质量,而且能更好地满足用户的需求,降低软件开发的成本,对软件开发具有重要意义。
1.2软件缺陷模式
软件缺陷模式是软件缺陷预测的基础。
软件开发者为了避免同类的问题出现,会采用很多种软件缺陷的检测方法,但是这些方法在软件开发的各个过程中应用有所不同,因此无法形成一个统一的评判标准来度量。
因此,在这个基础上将缺陷数据进行收集,然后对缺陷模式进行分类,抽取归纳出相应的缺陷模式。
首先。
具体的软件缺陷模式可以通过这样的步骤来获取:将国内外项目的实践经验以及软件开发和软件测试的缺陷数据进行收集,然后依据领域专家经验来提取信息以完备缺陷数据,最后抽象出软件缺陷模式。
2软件开发过程度量元
软件开发人员运用相关的技术,想要挖掘出有缺陷的模块,就首先要找到与缺陷相关的一些属性,例如通过缺陷外在表现显现出的一些属性。
这些属性就是软件度量数据即度量元。
通常每个度量都与软件项目的一些功能属性相关,比如模块的耦合性、内聚性等。
开发人员大多关注软件的静态度量元,比如圈复杂度、代码行数等软件静态信息。
因此传统的软件缺陷预测方法也大 多聚焦在选取软件静态度量元上,但其实软件开发过程中很多动态因素对于软件缺陷的影响也占很大比例,比如过程度量元和人因度量元。
2.1过程度量元
过程度量元主要是在软件开发过程中的一些常见因素对软件质量的影响,是在软件发布过程期间收集的度量元,常见的有:开发人员的数量、开发者的开发经验、客户要求修改需求、文件修改数量等。
过程度量元是重要且容易收集的,举例来说,软件开发过程中客户提出新的需求,或者修改需求,软件开发人员就要在过程中修改代码,但这种代码的变更产生的影响或者错误不一定在第一时间能够发现,而后期发现错误进而重新修改代码是又费时又费力的,因此对变更是否会引入缺陷进行预测必不可少。
2.2人因度量元
人因度量元主要是在软件开发全过程中,人因因素对软件质量的影响。
例如开发者年龄、身体状况、心理压力、开发经验、认知风格、能力水平、开发者对需求的理解、编码习惯和历史编码记录等。
综合这些因素影响分析,总结人因度量元为以下3大类。
(1)历史编码度量元。
通过分析编码的历史以获取到近期的工作状态等度量元数据。
例如:开发人员在开发过程中因为身体状态、心理状态、能力水平、或者工作强度等因素导致某段时间的工作状态不好,从而影响软件质量。
虽然不同的人,不同的人因因素对工作状态的影响程度不同,但都会对软件质量直接造成一定的影响。
(2)组织环境度量元。
可以通过问卷调查的方式,对企业的工作环境、组织管理等因素进行度量。
例如企业的等级、
作者简介:宋锦华(1981-),女,讲师,硕士,研究方向:软件开发。
人员对企业管理的评价、软件过程监督和管理是否科学化、标准化、文档化、规范化等。
(3)开发者能力水平度量元。
也可以通过问卷调查的方式,前期收集开发 人员的专业知识、能力水平,过程中收集开发人员应对问题的方法策略、应变能力等。
开发者能力水平度量元是人因度量元中的一个重要的分类,主要是对开发人员的知识架构、方法策略、开发经验、熟练程序等能力的度量,收集能力水平度量元数据对于预测软件缺陷有着 可靠的参考价值。
综合以上论述,如表1所示。
表1人因因素度量元
分类产生时间度量因素
历史编码度量元软件开发前开发人员的工作状态
组织环境度量元软件开发过程中工作环境、企业文化、企业管理方式
开发者能力水平度量元软件开发前开发人员专业知识、应变能力、开发经验
3软件缺陷预测模型构建方法
3.1缺陷倾向性预测
软件项目管理者不仅要保证软件的质量和可靠性,还要考虑合理地分配资源、有效降低软件开发成本等问题,因此,准确地预测软件模块的缺陷倾向性能够帮助软件项目管理者解决这些问题。
缺陷倾向性预测首先是将要预测的软件模块按照有缺陷和无缺陷的标准进行了分类,然后采用统计学方法、机器学习方法等分类技术来构建出软件缺陷倾向性预测模型。
经过调查分析发现,研究者对缺陷倾向性预测的研究大多都是基于机器学习方法来进行的。
总结几种方法如下。
(1)对有缺 陷的样本集和无缺陷的样本集进行标记,利用这些已标 签的样本集来综合优化参数,从而获得预测方法。
这种分类可以由很多种算法获得。
诸如部分决策树方法,是一种不需要应用全局优化策略生成决策规则的局部优化决策树算法。
具体来说,该方式并不是构建出整棵决策树,而是采用分治策略生成单个或一组决策规则,然后从生成树中删除掉符合该决策规则的实例,即决策规则子树。
利用这种算法可以快速地对特征属性集进行预测,避免早期泛化结果。
(2)综合大量的未标记缺陷数据和已标记缺陷数据来进行缺陷预测。
该方法首先从数据集中抽取小部分数据作为有标签的数据集,通过采用自我训练的模式对这一部分数据集进行随机训练与分类,然后依据它来预测未标记的数据集。
最终得到的样本会是这种方法多次训练之后提炼出的数据集。
并且通过多次训练和建立模型,最终形成一种精炼模型。
(3)针对没有任何标记的有缺陷和无缺陷数据集时,可以采用一种没有导师、没有监督的方法。
例如一种基于4叉树的聚类算法中,通过跨版本预测、版本内预测与跨项目预测等预测范围,形成缺陷倾向性形式,然后分析缺陷严重度和缺陷数目来预测采用的方法。
通过实践,这种方法潜在优于前两种方法。
3.2缺陷数预测
缺陷数预测是通过参考软件历史数据,使用逻辑回归等算法,来对软件模块的缺陷数量进行预测的一种模型。
例如泊松分布在各个研究领域已经得到非常迅速的发展和应用,因此有的研究者提出了随机信念泊松回归网络来计算缺陷数,通过引入双随机齐次泊松过程模型,受SBN公式的启发,在每个时间点的失效参数上进行建模,从而对软件缺陷数进行预测。
除此之外,还有很多诸如利用遗传算法等进行训练,通过整合函数推出缺陷数等。
3.3缺陷严重度预测
缺陷严重度预测是针对软件模块的缺陷严重度进行的一种预测,近年来开发者对缺陷严重度预测的方法多有研究。
例如利用逻辑回归的方法,对软件模块进行排序,合理分配测试资源,从而来预测缺陷的严重度。
再比如也有人提出了一种单目标的多线性回归方法,根据软件中的bug个数进行排序,从而预测缺陷的严重度。
3.4实验验证
以软件缺陷倾向性预测为例。
按照软件缺陷预测的步骤,首先选择实验数据集。
经过筛选数据集和子集,选定3个实验集。
接着根据实验设定的缺陷特征建立模型,然后对这些数据集进行软件缺陷预测,得到软件缺陷占比数。
如表2所示。
表2实验数据集
数据集模块数缺陷模块数缺陷占比渊%)a1201714.1
b61012019.7
c48021 4.38
实验中,可以选择基于关联度特征选择算法,或者决策回归算法,在这些数据集上检测结果都具有较高的精度和优势。
4结语
从软件缺陷预测概念、模式、度量元、软件缺陷预(下转第59页
)
软件研发与应用SOFTWARE DEVELOPMENT&APPLICATION
示例:买一只公鸡需5元钱,买一只母鸡需3元钱,买3只小鸡需一元块钱,如果花100元钱买一百只鸡,问公鸡、母鸡、小鸡各可以买多少只?
#include<stdio.h>
int main()
{
int i,j,k;/i,j,k分别代表公鸡、母鸡、小鸡各自数量
for(i=0;i<=100;i++)/三重循环
for(j=0;j<=100;j++)
for(k=0;k<=100;k++)
{
if((k%3==0)&&(i+j+k==100)&&(5i+3
*j+k/3== 100))/枚举条件
{
printf("公鸡%2d只,母鸡%2d只,小鸡%2d只\n",i,j,k);
}
}
return0;
}
枚举法的优点是比较直观,易于理解,答案可靠性高。
用枚举法解题的最大的缺点是运算量比较大,花费(上接第36页)
决了部分残障人士行动不便的问题,是后续智慧旅游平台重点发展的技术对象。
3结语
进入工业4.0时代以后,信息数据呈现爆炸式地发展,行业数据瞬息万变,物联网核心技术可以应用到未来的多种层面中。
在改善民生、提升物体的智能程度、提高信息传输实效性、降低时间和管理成本方面,物联网展现了自身强大的优势。
全球的经济体系的提升还需 要依赖于物联网技术的进一步发展。
通过对物联网核(上接第38页)
测模型构建方法等几个方面进行了简单的研究,总结了软件缺陷预测需要做的相关工作。
除此以外,软件缺陷预测还存在很多值得研究的问题,例如怎样更加深入地 挖掘出一些与演化有关的度量元,怎样减少人因因素对 软件预测模型的影响等,等待开发者和研究者继续深入了解和研究。
参考文献
[1]宫丽娜,姜淑娟,姜丽.软件缺陷预测技术研究进时间较多。
如果问题的规模不是很大,对时间无较高要求,则可以采用枚举法。
3结语
C语言是模块化语言,功能强大,可移植性强,深受广大编程者的喜爱。
程序爱好者在程序设计时经常要实现计算、查找、排序等一些功能,对相关常用算法进行了介绍、分析,并以实例说明算法功能,提供一些思路,希望对程序爱好者有所启发和帮助,加深对算法了解,提高程序设计的编程能力,在程序设计时能使用合理有效的算法,同时在此基础上培养创新思维,获得更高的解决实际问题的能力。
参考文献
[1]任伟,任正云.C语言中递归调用的算法研究[J].
襄阳职业技术学院学报,2014,(1303):27-30. [2]闫鑫,王琴竹.循序渐进学习C语言选择排序算法
[J].现代计算机(专业版),2018,(14):53-56.
⑶谭浩强.C程序设计[M].4版.清华大学出版社,
2010.
心技术和智慧旅游平台应用的分析,未来不仅仅是旅游事业,任何社会化的产业都需要依赖于物联网技术进一步提升人人、物物以及人物之间的信息传递和反馈。
并且加以总结模拟,提炼出更加人性化的措施方案,使整个社会的信息都变得扁平化,加强所有物体之间的相互联系。
参考文献
[1]薛小平,王骞,张芳.物联网核心技术及应用演进
[J].计算机应用,2013,33(10):2701-2706.
展.软件学报,2019,30(10):3090-3114.
[2]王青,伍书剑,李明树.软件缺陷预测技术.软件
学报,2008,19(7):1565-1580.
[3]于巧.基于机器学习的软件缺陷预测方法研究[博
士学位论文].徐州:中国矿业大学,2017,1:142.
[4]何斌.软件试验缺陷预测模型研究.科学技术创新,
2020,28:101-102.
[5]张洋.部分决策树在软件缺陷预测中的应用.软件
导刊,2020,3:
182-185.。