基于失效数据的软件可靠性研究①
2015-04-14尹春娇陈秀明
钱 丽,陈 路,尹春娇,陈秀明
(1.安徽新华学院信息工程学院,安徽 合肥2300881;2.中国科学技术大学,安徽 合肥230026)
0 引 言
研究软件可靠性是为了能够发现软件运行过程中可能存在的缺陷,同时借助排除软件缺陷来提高软件可靠性,提高软件可靠性评估的预测水平也为软件质量管理提供决策支持[1].本文基于失效数据分析软件可靠性发展趋势,首先以MUSA J D采集的贝尔实验室Beta 软件系统运行过程中的失效数据作为研究对象;然后利用指数函数模型拟合失效数据发展趋势;最后进行软件可靠性趋势分析,为选择合适的软件可靠性模型提供了有利的参考依据.
1 软件失效
软件失效是指功能部件执行其规定功能的能力丧失,或者出现偏离预期结果的行为,软件失效行为可以按照严重程度划分成轻度、中度、致命和灾难性失效等级别,而且不同系统对软件失效级别的定义也存在不同.
1.1 软件失效原理
软件可靠性受到失效时间、失效次数的制约,假设某个软件在单位时间内发生失效次数较多,或者发生失效行为的时间间隔较短,那么软件可靠性就较差.
软件失效原理包涵四个方面,如图1 所示:
图1 软件失效原理
(1)错误(error):指的是软件设计人员在开发过程中因为疏忽、失误或者错误导致软件失效的行为.
(2)缺陷(defect):指的是程序员开发的代码当中存在一个或者多个错误、失效编码行为,一旦软件设计文档的描述不准确、功能需求不合理、功能存在遗漏都会造成软件缺陷的存在.
(3)故障(fault):指的是软件运行阶段出现了用户不希望看到或者用户无法接受的状况,一般都是软件运行错误.
(4)失效(failure):软件运行过程中出现缺陷行为或者软件功能无法满足用户需求都造成软件失效.
1.2 失效数据的分类
软件失效数据分为完全数据和不完全数据两类:(1)完全数据也称为失效时间数据,是指每次失效发生的间隔时间或者累计时间;(2)不完全数据也称为失效计数数据,是指单位时间发生的失效数或者累计失效数.
根据失效数据的类型收集相应的数据,需要确保失效数据收集的准确性、完整性和及时性.失效数据收集首先需要确定数据类型,然后制定收集计划以及确定所需的收集工具,最后分析失效数据并且评价失效数据.
2 基于失效数据的软件可靠性分析
软件可靠性失效数据的分析方法主要有拉图形法、拉普拉斯法、曲线图技术、数据建模技术等方法,不同失效数据分析技术具有各自的使用场合和优势.以下首先介绍图形法在判断数据趋势中存在的局限性,然后采用拉普拉斯法对失效数据进行趋势分析,最后根据失效数据的发展趋势选择相应的可靠性模型.
图2 图形法测试失效数据趋势图
2.1 图形测试法
图形法是分析软件失效数据集的工具之一,它能够非常直观、快速、简单地体现软件失效数据的集中性和相关性特征.图形分析法主要对软件使用时间、累计失效数目、平均时间段失效数目等各种变量之间关系进行分析,以下图2 反映的是累计软件失效次数和时间之间存在的函数关系,横坐标是时间信息,纵坐标是累计软件失效次数.
图2 中显示的两条曲线,一条曲线是MO 模型,它是针对对数函数模型;另一条曲线是GO 模型,它是针对指数函数模型,这两个模型存在着显著的区别,然而图中这两个模型对数据的拟合非常相似,说明图形法对不同模型比较的效果不好,它只能粗略判断数据趋势,因此存在一定的局限性.
2.2 拉普拉斯法
拉普拉斯法主要用于分析软件失效数据变化趋势,它是检验失效数据趋势的一种有效的方法.拉普拉斯法分析的数据即可以是软件软件失效时间间隔,也可以是失效强度.下面分别以拉普拉斯失效间隔时间和失效强度为对象,分析软件可靠性发展趋势.
图3 失效数据趋势分析图
(1)失效间隔时间
以下选择软件失效间隔时间作为分析的对象,设失效间隔时间θj,j=1,2,3……L 为随机变量Ti的一个实现,可以按照以下公式1 对每一个失效i计算相应的拉普拉斯因子u(i):
通过公式1 计算出的软件失效数据在每一个点的拉普拉斯因子后就可以分析失效数据趋势.在实际的应用中需要考虑正态分布下显著水平值,显著性水平是估计总体参数落在某一区间内可能犯错误的概率,如果显著水平取值0.05,那么对所有的点i 有如下情况:|u(i)|<1.96 成立时,表明软件可靠性趋势是稳定的;当|u(i)|<1.96 不满足时,说明软件可靠性趋势是不稳定的.
(2)软件失效强度
以下选择软件失效强度作为分析对象,如果把某个失效时间间隔[0,T]划分成k 个等长的单位时间,那么在第i 个时间中观测到的失效数为n(i),拉普拉斯因子表达式为公式2:
假设N(k)表示到时刻k 所发生的累积失效数,则N(k)可以表达为公式3:
将公式(3)代入公式2 中得出公式(4):
公式(4)中如果拉普拉斯因子u(k)减少,表示失效强度降低,那么软件可靠性就会增强;如果拉普拉斯因子u(k)增加,表示失效强度增加,那么软件可靠性就会降低.
2.3 软件可靠性模型的选择
分析失效数据的发展趋势是为了有效地选择软件可靠性模型,从而对软件可靠性进行科学地评估和预测.失效数据可靠性分析结果通常有以下四种类型:(1)可靠性稳定趋势:这种情况一般是软件缺陷的修复对软件系统没有太多影响,或者存在软件缺陷被忽略的情况.针对可靠性稳定趋势建模一般采用指数分布模型,例如失效时间服从指数分布模型或者HPP 模型等.(2)可靠性增长:一般是在修复软件系统缺陷之后,软件缺陷减少,这种情况可以采用J-M 模型、G-O 模型进行可靠性建模;(3)可靠性下降:一般是在测试的初级阶段发生,其原因可能是增加了系统的新用户、采用不同方式激活系统、改变测试数据集、修改软件缺陷后引起新的BUG 等原因,这种情况首先需要检查系统代码和安全性能,然后选择相应的软件可靠性模型;(4)可靠性先降后升:针对这种情况可采用Y-O 模型、Ohba 三参数NHPP 等模型建模.
3 可靠性趋势分析实例
本实例以拉普拉斯失效强度为测试对象来分析软件可靠性趋势.首先对Beta 软件运行过程中单位时间的失效数进行收集;然后通过MATLAB编程实现对拉普拉斯因子u(k)的计算,导出软件失效数据趋势分析图;最后分析软件可靠性发展趋势,基于失效数据集的特点和规律选择相应的软件可靠性模型.
3.1 失效数据收集
本次实验采用软件可靠性评测权威机构IEEE Computer Society Press and McGraw-Hill Book Company 发布的J1.DAT[2]失效数据,该数据记录了Beta 软件运行过程中单位时间的失效数,一共有62 个失效数据.为了更好的表现软件可靠性发展趋势,本次实验提取了前42 个数据作为失效趋势分析对象,如表1 所示.表中第一列是以星期为时间单位,第二列是每个星期观测到的失效数.
表1 软件失效数据
3.2 拉普拉斯因子计算
由表1 的数据可知收集的失效数据为单位时间内观测到的失效数,通过MATLAB 编程实现对拉普拉斯失效因 子u(k)的计算,即公式2 的计算,部分代码如下:
3.3 软件可靠性趋势分析
根据失效强度计算出拉普拉斯失效因子u(k)后,再通过MATLAB 工具仿真失效数据趋势分析图3:
前面章节提到拉普拉斯因子u(k)的变化和软件可靠性成反比关系,根据图3 分析软件可靠性发展趋势.该系统在第13 周之前可靠性大致是降低趋势;在第13 周至28 周期间可靠性大致是增长趋势,即该系统在第28 周之前的可靠性趋势是先降后升;在第31 周以后该系统的软件可靠性大致趋于稳定.
4 总 结
研究软件可靠性模型对提升软件质量具有重要的意义,本文研究基于失效数据的软件可靠性趋势,对软件可靠性领域的问题提出了一些解决方法.
(1)软件可靠性模型的选择是基于失效数据集的特点和规律进行的,在软件运行阶段收集失效数据集,借助失效数据模型的假设条件和使用范围,选择和分析软件可靠性模型;
(2)通过对可靠性软件失效原理的分析,以及对Beta 软件运行期间收集的失效数据进行处理和分析,为软件可靠性模型的选择提供了科学的参考依据.
[1] 钱丽,万家华,陈秀明.基于混沌理论软件可靠性定性仿真建模方法[J].四川大学学报(自然科学版),2015,52(2):312-318.
[2] http://www.cse.cuhk.edu.hk/~lyu/book/reliability/data.html.