基于改进粒子群算法的软件可靠性评估

李宁
摘 要: 软件可靠性是软件质量评价的一个重要标准,针对传统方法存在软件可靠性评估精度低,结果不可信等缺陷,提出基于改进粒子群算法的软件可靠性评估模型。首先对当前软件可靠性评估的研究现状进行分析,然后建立软件可靠性评估模型,最后采用改进粒子群算法对模型参数进行求解,并通过具体软件可靠性评估实验对模型的性能进行分析,结果表明,改进粒子群算法可以对软件可靠性进行高精度评估,而且评估结果要明显优于其他软件可靠性评估模型,具有更高的实际应用价值。
关键词: 软件质量; 粒子群优化算法; 可靠性评估模型; 仿真实验
中图分类号: TN911.1?34; TP309 文献标识码: A 文章编号: 1004?373X(2017)21?0102?03
Software reliability evaluation based on improved particle swarm optimization algorithm
LI Ning
(Xian Railway Vocational & Technical Institute, Xian 710014, China)
Abstract: The software reliability is an important standard of software quality evaluation. Since the traditional methods have the defects of low software reliability evaluation accuracy and incredible evaluation result, a software reliability evaluation model based on improved particle swarm optimization algorithm is put forward. The current research status of software reliability evaluation is analyzed. The software reliability evaluation model is established, and its parameters are solved with the improved particle swarm optimization algorithm. The performance of the model is analyzed with the specific experiment of software reliability evaluation. The experimental results show that the improved particle swarm optimization algorithm can evaluate the software reliability accurately, and its evaluation result is much better than that of other software reliability evaluation models. It has high practical application value.
Keywords: software quality; particle swarm optimization algorithm; reliability evaluation model; simulation experiment
0 引 言
随着计算机技术的不断发展,其在各行各業得到了迅速应用,各行各业均出现了许多软件,软件规模越来越大,也变得越来越复杂,而软件可靠性是评价软件质量的一个重要标准,因此对软件可靠性进行评估显得十分重要[1?3]。
硬件可靠性与时间密切相关,随着时间增加,可靠性降低,相对于硬件可靠性,软件系统的可靠性更加复杂,软件可靠性与时间不成正比。在软件测试过程中,故障会慢慢被发现和消除,软件可靠性会越来越高[4?5]。当前软件可靠性主要采用软件失效率来评价,理想状态下,软件失效率为零,但是在软件开发过程中,会不断产生新的故障,所以要使软件失效率完全达到零是不可能的,因此主要对软件失效率进行评估和预测,达到对软件可靠性进行评价的目的[6]。当前软件可靠性模型超过一百多种,最早软件可靠性评估模型为最小二乘算法,它对软件可靠性参数进行线性估计,对于小规模软件,可靠性评估的精度高,对于大规模软件,其工作效率低,而且评估结果的可靠性急剧下降[7]。随后有学者提出了基于极大似然法的软件可靠性评估模型,但也存在一些不足,如简化了模型的约束条件,太理想化,难以应用于实际,同时它属于线性评估模型,而软件可靠性具有明显的非线性变化趋势[8?9]。随着人工智能技术的成熟,有学者将神经网络引入到软件可靠性评估中,对软件可靠性进行预测,获得了较好的软件可靠性评估结果。然而神经网络的训练时间长,泛化能力差,获得了过拟合的软件可靠性评估结果。有学者将支持向量机引入到软件可靠性评估建模中,泛化能力要明显优于神经网络,评估结果的可信度高,但学习时间长,影响软件可靠性评估实时性[10]。智能优化算法具有强大的求解问题能力,有学者提出基于粒子群算法的软件可靠性评估模型,由于该算法可以结合软件可靠性变化的特点,可以对软件可靠性评估模型参数进行估计,提高了软件可靠性评估准确性,然而基于粒子群算法存在易陷入局部最优的缺陷,使得软件可靠性评估的精度有待进一步提高[11?12]。
针对标准粒子群算法存在软件可靠性评估精度低,结果不可信等难题,提出改进粒子群算法的软件可靠性评估模型,结果表明改进粒子群算法可以对软件可靠性进行高精度评估,而且评估结果要明显优于其他软件可靠性评估模型。
1 改进粒子群算法
1.1 标准粒子群算法
随着智能优化理论研究的不断深入,出现许多智能优化算法,其中粒子群算法就是其中的一种。粒子群算法对鸟群觅食行为进行模拟,通过个体和集体协作与竞争模拟问题的求解过程,从而找到问题的最优解。问题解的空间维数为[N,]共有[M]个粒子,粒子均有一个位置和速度向量,采用[Xi]和[Vi]描述,每个粒子群通过不断更新位置和飞行速度调整自己的飞行轨迹,在第[t]代,粒子[i]的最优位置为[pti=(pti1,pti2,…,ptid)],相应的速度和位置为[vti=(vti1,vti2,…,vtid)]和[xti=(xti1,xti2,…,xtid)],粒子群的最好位置为[ptg=(ptg1,ptg2,…,ptgd)],[g=argmin1≤i≤mPti,]粒子速度和位置更新方式为:
[vt+1id=vtid+c1r1(ptid-xtid)+c2r2(ptgd-xtid)] (1)
[xt+1id=xtid+vt+1id] (2)
式中:[c1]为认知项系数;[c2]表示社会项系数;[r1,r2]为服从(0,l)的随机数。
为了更好地搜索问题的最优解,引入惯性权重[w],式(1)变为:
[vt+1id=wvtid+c1r1(ptid-xtid)+c2r2(ptgd-xtid)] (3)
当惯性权重[w]较大时,全局搜索能力强,较小时,局部搜索能力较强,为此,有学者采用动态的变化方式,具体为:
[w=wmax-wmax-wminintermax×inter] (4)
1.2 粒子群算法的改进
1.2.1 混沌技术
在自然界的非线性系统中,大多数都具有混沌运动特征,混沌就是一种看似没有规律,实际有规律的运动,遍历性能相当好,可以逃离局部最优陷阱。混沌系统动力学的Logistic方程为:
[Cr(t+1)=k×Cr(t)×(1-Cr(t))] (5)
式中:[Cr(0)]为随机数;[k]为一常数。
1.2.2 速度更新公式的混沌粒子群算法
将混沌理论引入到粒子群算法的速度改善中,通过采用混沌技术的遍历特性提高算法的搜索能力,这样式(3)变为:
[vt+1id=wvtid+c1Cr(ptid-xtid)+c2(1-Cr)(ptgd-xtid)] (6)
2 改进粒子群算法的软件可靠性评估模型
2.1 软件可靠性评估模型的适应度函数
设软件失效的发生时间为[t,]模型参数为[E,]那么软件可靠性的累计失效数可以表示為:
[Failure=F(t,E)] (7)
式中:[E=(e1,e2,…,ek),][k]为估计参数数量。
适应度函数采用累计失效数与实际累计失效数([F(t)])之间的偏差表示,具体为:
[f(E)=i=0TF(i,E)-F(t)2n] (8)
式中:[T]为软件测试时间;[n]为测试样本数。
2.2 改进粒子群算法的软件可靠性评估步骤
Step1:对具体一个软件可靠性数据进行收集,计算软件可靠性的累计失效数。
Step2:设置粒子的初始位置、位置的下界与上界的值。
Step3:初始化粒子群,当迭代次数为[t=0]时,粒子[i]和种群的当前最好位置均为[x0i,]即有[P0i=x0i]。
Step4:对粒子个体的最优位置向量进行更新操作,并计算其适应度值[f(Xt+1i)]。
Step5:如果[f(Xt+1i)<f(pt+1i)],那么[pt+1i=xt+1i,]否则[pt+1i=pti]。
Step6:对粒子群的最优位置向量进行更新操作,计算其适应度值[f(Gt),]如果[f(Pt+1i)<f(gti),]则[gt+1i=pt+1i,]否则[gt+1=gt。]
Step7:通过式(4)对粒子的惯性权值进行更新操作。
Step8:采用混沌技术对粒子的速度进行处理。
Step9:如果[xt+1i,j>Xmax,]那么有:[xt+1i,j=Xmax;]如果[xt+1i,j<xmin,]那么有:[xt+1i,j=xmin。]
Step10:检查是否满足终止条件,如果不满足,[t=t+1,]执行Step2,否则得到软件可靠性参数估计值。
Step11:根据参数的估计值建立软件可靠性评估模型,具体如图1所示。
3 仿真实验
3.1 数据源
当前软件可靠性模型的类型很多,本文选择常用的非齐次泊松过程模型,其表达式为:
[F(t,E)=α×(1-e-b×t)] (9)
式中:[E=(a,b),][a]为期望的软件出现的故障数量,[b]为故障被检测的概率。
非齐次泊松过程模型包括7组数据,它们由失效间隔的时间序列表示,选择标准粒子群算法进行对比测试,选择软件可靠性评估精度和平均评估时间对性能进行分析。
3.2 结果与分析
3.2.1 适应度值比较分析
统计改进粒子群算法和标准粒子群算法的不同数据集的适应度值,结果如表1所示。
从表1可知,改进粒子群算法的软件可靠性模型的适应度值要小于标准粒子群算法,这表明改进粒子群算法的软件可靠性评估误差更小,软件可靠性评估结果更好,这是因为改进粒子群算法克服了标准粒子群算法存在的局限性,具有更好的收敛性,能够找到软件可靠性评估模型参数的全局最优值。
3.2.2 软件可靠性评估的正确率比较
统计改进粒子群算法和标准粒子群算法的不同数据集的软件可靠性评估精度,结果如图2所示。对软件可靠性评估精度进行对比和分析可以发现,改进粒子群算法的软件可靠性评估精度要远远高于标准粒子群算法,这表明改进粒子群算法可以获得更加理想的软件可靠性评估模型参数,建立了更优的软件可靠性评估模型。
统计改进粒子群算法和标准粒子群算法的不同数据集的软件可靠性评估时间,结果如图3所示。从图3可知,标准粒子群算法的平均评估时间长,这是因为它极易陷入局部最优解,而改进粒子群算法由于引入了混沌理论对粒子速度进行处理,加快了软件可靠性评估模型的参数寻优速度,可以避免进入局部最优解,保证求得全局最优值。
4 结 语
软件可靠性具有重要的研究价值,当前软件评估模型存在评估精度低的难题,为此,提出基于改进粒子群算法的软件可靠性评估模型,通过粒子群算法对模型的参数进行优化和估计,并通过多个数据对模型的有效性进行了测试。测试结果表明,改进粒子群算法可以对软件可靠性评估模型参数进行准确估计,建立了性能优异的软件可靠性评估模型,评价精度要远远高于当前其他软件可靠性评估模型,具有较高的实际应用价值。
参考文献
[1] 郑艳艳,郭伟,徐仁佐.软件可靠性工程学综述[J].计算机科学,2009,36(2):20?25.
[2] 徐高潮,刘新忠,胡亮,等.引入关联缺陷的软件可靠性评估模型[J].软件学报,2011,22(3):439?450.
[3] 楼俊钢,江建慧,靳昂.考虑软件不同失效过程偏差的软件可靠性模型[J].计算机学报,2010,33(7):1263?1266.
[4] 贾治宇,康锐.软件可靠性预测的ARIMA方法研究[J].计算机工程与应用,2008,44(35):17?19.
[5] 余正伟,吴玉美.基于失效分析的软件可靠性评估方法研究[J].计算机工程与应用,2008,44(35):16?17.
[6] 许宁,张毅坤.基于正交分层聚类算法软件可靠性模型的预测分析[J].计算机应用,2007,27(3):635?638.
[7] 李东林,徐燕凌,蒋心怡.软件可靠性数据预处理研究[J].电子技术应用,2010,36(8):153?156.
[8] XIAO X, DOHI T. Wavelet shrinkage estimation for non?homogeneous Poisson process based software reliability models [J]. IEEE transactions on reliability, 2013, 62(1): 211?225.
[9] 赵靖,张汝波,顾国昌.考虑故障相关的软件可靠性增长模型研究[J].计算机学报,2007,30(10):1713?1720.
[10] 梁军涛,蒋晓原,张海.根据软件体系结构评估软件可靠性[J].应用科学学报,2009,27(3):277?281.
[11] MOHANTY R, RAVI V, PATRA M R. Hybrid intelligent systems for predicting software reliability [J]. Applied soft computing journal, 2013, 13(1): 189?200.
[12] PARK J, BAIK J. Improving software reliability prediction through multi?criteria based on dynamic model selection and combination [J]. Journal of systems and software, 2015, 101(C): 236?244.