软件可靠性模型研究综述
2016-04-29王二威
摘 要:本文对软件可靠性经典模型、模型选择、普适模型的研究进行了归纳和述评,提出了软件可靠性综合预测框架,给出了软件可靠性综合预测进一步的研究方向。
关键词:软件可靠性;经典模型;综合预测;框架研究
中图分类号:TP311 文献标识码:A
1 引言(Introduction)
软件已经成为影响国民经济、军事、政治乃至社会生活的重要因素。自20世纪60年代“软件危机”出现之后,越来越多的学者开始关注软件可靠性的定量评估和预测。软件可靠性覆盖整个软件开发过程,与软件工程密切相关,它源于工程,又服务于工程。在新技术、新应用(如web软件、移动APP等等)不断涌现的当前,重新审视软件开发和应用环境,开展软件可靠性预测研究,有助于推动软件工程项目的实践,降低软件错误率,提升软件质量,从而保障软件所支撑的工程项目的高效完成,推动我国软件产业的持续发展。
本文对软件可靠性模型研究的相关文献进行了梳理,对前人的研究成果进行了归纳,构建了新计算范式下软件可靠性综合预测框架,提出了软件可靠性综合预测的研究方向。
2 经典软件可靠性模型(Classical software reliability
model)
软件可靠性建模的基本方法是:以历史失效数据为基础,对软件失效规律进行趋势拟合,进而预测未来的失效可能。早期软件可靠性的研究是基于概率统计的思想,将软件失效过程看作一个随机过程,从Hudson的工作开始,到1971年J-M模型的发表,再到今天,已公开发表了几百种模型[1](此类模型称之为“经典模型”)。
经典模型存在两个明显的缺陷:第一,在对软件可靠性进行评估预测时都有些固定不变的假设,而这些假设无从证明;第二,模型只考虑输入的随机性,而软件在实际运行时却可能受到各种随机因素影响,使得软件失效出现的情况比较复杂多变。而用某一个固定的失效模式去解释复杂多变的情况,显然是不合适的。实践证明,经典模型的应用存在不一致性的问题,对一个软件有很好的适用性而对其他的软件则效果很差[2,3],此外预测精度也不够理想。
针对经典模型的不一致性问题,研究者们从两个方面开展了进一步的研究:一是设计一套行之有效的模型选择方法,能够让工程人员从众多的软件可靠性经典模型中选择出最适合实施项目的模型,二是建立一个普适模型。
3 模型选择的研究(Research on model selection)
模型选择策略基本可以归纳为两类:一类是基于模型假设与软件环境的相似性,一类是基于对历史失效数据预测性能的评价。
(1)基于模型假设与软件环境的相似性的模型选择。Andersson、Goel、Sharma等人分别提出了模型假设相似性来选择合适模型的方法[4],基于假设矩阵的模型选择技术实践结果也并不理想[5]。
(2)基于对历史失效数据预测性能的评价。该类策略的模型选择技术依赖于对模型预测性能的评价,1983年,Musa等人提出了“预测有效性、模型能力、假设质量、模型适用性、简单性”等五个软件可靠性模型评价准则,在学术界获得了较大范围的认可。之后的研究人员不断拓展软件可靠性的影响变量范围,提出了模型拟合性、模型偏差、模型偏差趋势、覆盖度、预测数量、模型噪声等等众多的评价准则,力图从多个角度对软件可靠性模型进行评价。
关于采用何种评价方法来选择模型,一是基于数据挖掘、机器学习的方法[6],汪浩等人提出了基于聚类思想的软件可靠性模型选择,吴勤、吴晨、朱磊等人采用Kohonen网络、BP神经网络、决策树等方法对汪浩等人的研究成果进行了改进,在一定程度上提高了分类系统的准确性,李克文等人提出了基于时间序列的模型选择方法[6];二是基于多属性决策理论的方法[4],张永强等人根据可测空间中未确知集合理论来综合评价准则,Asad等人提出基于软件开发的生命周期,不同的阶段采用不同的评价准则进行模型选择,还需要考虑各个评价准则的相对重要程度;田涛等人采用模糊综合评判法来综合主观权重集和客观因素集,马飒飒等人则采用熵权法对评价准则客观值和专家主观偏好权重进行综合。
模型选择的研究能够针对某一项目选择合适的预测模型,一定程度上解决了经典模型的不一致性问题。然而,依靠模型选择来进行软件可靠性预测有较大局限,即其预测能局限于候选模型的预测性能,而且,Littlewood Bev通过研究提出了“变点”的思想,认为(在一个失效数据集中)从失效1至失效20大致可以用一个模型来描述,从失效21至失效60大致可以用另一个模型来描述。这表明不能期望用某一个或两个经典模型来描述软件的整个失效过程。
4 普适模型的研究(Research on universal model)
进入21世纪,越来越多的学者将最新的理论研究成果,如:神经网络、支持向量机、灰色理论、混沌理论、粒子群等,应用于软件可靠性的建模和优化,产生了许多新的预测方法。尤其是基于神经网络和支持向量机的方法,取得较好的成果和预测效果[7-12]。该类方法模型多聚焦于短期预测(next-step),对于长期预测(long-term)仍需更进一步的研究。
香港中文大学的Michael Lyu在大量数据实验的基础上得出:将多个经典模型进行综合预测一般比单个经典模型的预测效果更好,且抗数据“噪声”能力强,不但对短期预测有效,长期预测效果尤为明显。所以多模型综合精度更高,稳健性更好。研究者先后提出用贝叶斯方法、聚类方法、神经网络、时间序列、模糊数学、泛函网络等用于软件可靠性综合预测,取得良好的效果[13-16]。
5 综合预测框架及进一步研究方向(Comprehensive
prediction framework and further research
direction)
综合多个经典模型的预测性能是解决经典模型不一致性问题的一个很好的思路。但存在如下问题:(1)待综合的单个经典模型多数是根据主观经验确定或直接指定,对于选择哪些经典模型进行综合缺乏深入的研究。(2)在对多个经典模型进行综合预测过程中赋权是一次性,导致仍然存在“变点”影响预测精度,缺乏对动态赋权策略的研究。(3)对多个经典模型进行综合预测的策略多数是线性的,对于非线性综合有待进一步的研究。
可以将软件故障过程看作一个不确定系统,利用不确定理论、技术和方法对此不确定系统进行分析,构建软件可靠性综合预测框架:包括经典模型的评价准则及方法、待综合的经典模型选择的方法、经典模型综合的方法、综合模型的验证与应用,如图1所示。
图1 软件可靠性综合预测框架
Fig.1 The framework of software reliability
comprehensive prediction
经典模型评价:通过对已有软件可靠性模型评价准则的梳理,建立准则库,分析不同准则之间的相关程度,并根据实际需要建立准则集,不同准则集保持相对独立。
模型选择策略:主要采取数据驱动式模型选择。将经典模型划分成乐观预测模型集和悲观预测模型集,根据一定的评价准则,采用决策树、集团序等方法分别从乐观预测模型集和悲观预测模型集中选择排序最靠前的模型参与综合预测。
综合策略与方法:根据预测时间要求,分为短期预测(next-step)和长期预测(long-term)两种综合策略;根据算法性质,分为线性综合和非线性综合两种策略。这两种策略基本可以满足不同软件不同环境的要求。线性综合涉及不同方法下的赋权问题,静态权重适合长期预测,动态权重通过不断感知软件环境的变化更新权重信息,能够很好解决“变点”问题,提高短期预测的精度。非线性综合可采用神经网络、遗传算法、泛函网络等基于知识的方法在软件可靠性预测中的应用,但这些方法存在“过度学习”的风险,不适合长期预测。
6 结论(Conclusion)
结合不确定理论、技术和方法,为软件可靠性预测研究提供了新的思路。本文对经典随机过程模型进行了梳理,对解决经典模型不一致性问题的模型选择和普适模型研究进行了述评,指出了综合预测仍存在的问题,提出了综合预测研究框架和进一步的研究方向,为软件可靠性研究提供新的路径。
参考文献(References)
[1] 徐仁佐.软件可靠性工程[M].北京:清华大学出版社,2007:1-3.
[2] Amin,A.,Grunske,L.,Colman,A..An approach to software
reliability prediction based on time series modeling[J].Syst.
Softw,2013,86:1923-1932.
[3] Raj Kiran,N.,Ravi,V..Software reliability prediction by soft
computing techniques[J].Syst.Softw,2008,81:576-583.
[4] Sharma,K.,Garg,R.,Nagpal,C.K.,Garg,R.K..Selection of
optimal software reliability growth models using a distance based
approach[J].IEEE Trans.Reliab,2010,59:266-276.
[5] Dharmasena,L.S.,Zeephongsekul,P.,Jayasinghe,C.L..Software
reliability growth models based on local polynomial modeling
with kernel smoothing[C].2011IEEE 22nd International
Symposium on Software Reliability Engineering,2011:220-229.
[6] 李克文,刘洪太.基于时序数据的软件可靠性模型组合新方
法[J].计算机应用,2014,34(S2):208-210;249.
[7] Hu,Q.,Xie,M.,Ng,S.,Levitin,G..Robust recurrent neural
network modeling for software fault detection and correction
prediction[J].Reliab.Eng.Syst.Saf,2007,92:332-340.
[8] 崔正斌,汤光明,乐峰.遗传优化支持向量机的软件可靠性预
测模型[J].计算机工程与应用,2009,45(36):71-74.
[9] 靳昂,等.基于灰色模型的软件可靠性建模[J].计算机应用,
2009,29(3):690-694.
[10] 张柯,张德平,汪帅.软件可靠性混沌神经网络模型[J].计算机
科学,2014,V41(4):172-177.
[11] 侯雪梅,等.基于量子粒子群的软件模糊可靠性分配模型[J].
信息工程大学学报,2013,14(1):124-128.
[12] Kumar,P.,Singh,Y..An empirical study of software reliability
prediction using machine learning techniques.Int.J.Syst.Assur.
Eng.Manag,2012,3:194-208.
[13] Yu-Shen Su,Chin-Yu Huang.Neural-network-based
approaches for software reliability estimation using dynamic
weighted combinational models[J].Journal of Systems and
Software,2007,80(4):606-615.
[14] 滕云龙,师奕兵,康荣雷.软件可靠性组合预测模型研究[J].
计算机应用,2008,28(2):3092-3094.
[15] 王二威,侯福均,郑述招.基于隶属度的软件可靠性综合预
测方法[J].微型机与应用,2011,30(15):4-7.
[16] 王二威,吴祈宗.基于泛函网络的软件可靠性多模型综合预
测方法[J].计算机科学,2015,42(10):175-179.
作者简介:
王二威(1985-),男,硕士,讲师.研究领域:决策理论与方
法,软件工程.