已阅读5页,还剩42页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
南京邮电大学硕士研究生学位论文 摘要 摘要 软件在当今生活中扮演着日益重要的角色,软件质量是软件生存的重要保障,而软件 可靠性是软件质量的重要衡量标准,并且直接关系到软件发布后的可用性。软件中不可避 免的存在各种缺陷和错误,这一点在中大型规模软件中体现的尤为明显,错误的排除无疑 可以提高软件的可靠性,而软件可靠性模型恰是对软件错误进行科学预测的有力工具。 自从1 9 6 7 年生灭过程模型提出以来,软件科学家们便建立了各种各样的模型来对软 件的错误进行预测。到目前为止,已发表的模型数量已经超过百种,其中非齐次泊松过 程( n h r p ) 模型占有相当的比重。 测试覆盖是指测试能够覆盖程序中潜在错误点的程度。测试覆盖是软件测试过程中常 用的准则之一。测试覆盖和软件可靠性之间有着密切的联系,国内外专家均对此做出过一 定的研究。 本文对已发表的非齐次泊松过程( n h p p ) 模型进行了深入的学习和研究,得出了众多 n h p p 模型之间的相似性,从测试覆盖的角度,同时提出了测试过程中测试人员的“学习 现象 ,并考虑了软件排错过程中新错误的引入和错误的不完全排除等情况,提出了一 种新的软件可靠性模型。通过和已有模型进行仿真试验对比显示,本文提出的模型对实际 数据有很好的拟合性能,具有很好的工程实践意义。 关键词:软件可靠性;可靠性模型;测试覆盖;非齐次泊松过程 南京邮电大学硕士研究生学位论文 a b s t r a c t a b s t r a c t s o f t w a r ep l a y sa ni n c r e a s i n g l yi m p o r t a n tr o l ei no u rm o d e ml i f e s o f t w a r eq u a l i t yi sa c r u c i a lg u a r a n t e et oi t se x i s t e n c e ,a n ds o f t w a r er e l i a b i l i t y , a ni m p o r t a n tc r i t e r i o nt oi t sq u a l i t y , i s d i r e c t l yr e l a t e dt oi t su s a b i l i t ya l t e rr e l e a s i n g t h e r ea r ev a r i o u sd e f e c t sa n de r r o r si ns o f t w a r e , p a r t i c u l a r l yi nm e d i u m - l a r g es i z es o f t w a r e s o f t w a r e sr e l i a b i l i t yc a nb ei m p r o v e di fe r r o r sa r e e l i m i n a t e d ,a n ds o f t w a r er e l i a b i l i t ym o d e li st h ev e r yp o w e r f u lt o o lt op r e d i c ts o t h v a r ee r r o r s s c i e n t i f i c a l l y s i n c et h ef i r s ts o f t - w a r er e l i a b i l i t ym o d e lw a sp r o p o s e di n19 6 7 ,s o f t w a r es c i e n t i s t sh a v e b e e np r o p o s i n gm o r ea n dm o r em o d e l st op r e d i c ts o f t w a r ee r r o r s c u r r e n t l yt h e r ea r em o r et h a n o n eh u n d r e ds o f t w a r er e l i a b i l i t ym o d e l s ,a m o n gw h i c hn h p pm o d e l st a k eu par a t h e rl a r g e p e r c e n t a g e t e s tc o v e r a g e ,t h ee x t e n tt ow h i c hp o t e n t i a lf a u l ts i t e sa r ec o v e r e d ,i sac o m m o nc r i t e r i o n u s e di ns o f t w a r et e s t t h er e l a t i o n s h i pb e t w e e nt e s tc o v e r a g ea n ds o f t w a r er e l i a b i l i t yi ss oc l o s e t h a te x p e r t sb o t hh o m ea n da b r o a dh a v ed o n em a n yr e s e a r c h e si n t oi t i nt h i sd i s s e r t a t i o n ,s o m er e l e a s e dn h p ps o f t w a r er e l i a b i l i t ym o d e l sa r ec a r e f u l l ys t u d i e d , t h es i m i l a r i t ya m o n gt h e mi sr e a p e da n dan e wn h p pm o d e li sp r o p o s e db a s e do nt h ef a c t st h a t p e r f e c td e b u g g i n g ,i m p e r f e c td e b u g g i n ga n dt e s tw o r k e r ss t u d yp h e n o m e n o n i nt h et e s tp r o c e s s a r ec o n s i d e r e di nt e r m so ft e s tc o v e r a g e a f t e rc o n t r a s t i n g 谢t l ls o m er e l e a s e dm o d e l s ,t h en e w m o d e l s h o w sb e t t e rp e r f o r m a n c et of i td a t aa n dt h e o r e t i c a l l yc a l lb ea p p l i e di n t op r o j e c t s k e y w o r d s :s o f t w a r er e l i a b i l i t y ,r e l i a b i l i t ym o d e l ,t e s tc o v e r a g e ,n h p p i i 南京邮电大学学位论文原创性声明 本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得 的研究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包 含其他人已经发表或撰写过的研究成果,也不包含为获得南京邮电大学或其它 教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的 任何贡献均已在论文中作了明确的说明并表示了谢意。 研究生签名:- 二 受瓦蕴一日期:钮严啦 南京邮电大学学位论文使用授权声明 南京邮电大学、中国科学技术信息研究所、国家图书馆有权保留本人所送 交学位论文的复印件和电子文档,可以采用影印、缩印或其它复制手段保存论 文。本文电子文档的内容和纸质论文的内容相一致。除在保密期内的保密论文 外,允许论文被查阅和借阅,可以公布( 包括刊登) 论文的全部或部分内容。 论文的公布( 包括刊登) 授权南京邮电大学研究生部办理。 研究生签名:i 鱼整 导师签名: 日期:弓吐 南京邮电大学硕士研究生学位论文第一章绪论 1 1 研究背景 第一章绪论 软件是计算机的灵魂,软件可靠性对软件系统起着举足轻重的作用( m j 。几十年来,硬 件技术特别是集成电路技术飞速发展,但软件技术在产品质量,生产力,成本以及性能等 众多方面都滞后于硬件技术的发展。随着软件系统规模和复杂性的增加,其开发成本以及 由于软件失效而造成的经济损失也正在增加,软件质量问题已成为制约计算机发展的关键 因素之一。 随着人们对软件要求的不断提高,软件的规模和复杂性也在不断的提高,软件代码 也在不断的增加着,归纳起来主要有以下两点:一是人们对计算机需求和依赖的与日俱增, 计算机系统的规模和复杂性急剧增加;另一个是软件体系结构越来越复杂。然而由于软件 是程序员设计开发的,其中不可避免的会参入人的因素,导致软件错误和潜在错误的存在, 为了提高软件生产力,软件过程趋于复杂,许多人协同工作,层次化的或网状的体系结构 和层次化的开发方法,都使得计算机软件的规模以惊人的速度急剧膨胀。与此同时,计算 机软件出现失效引起危机的可能性也逐渐增加。由于计算机硬件技术的进步,元器件可靠 性的提高,硬件故障相对显得次要,和硬件设计故障引起的失效相比起来,由于软件设计 缺陷导致的失效就要大的多。 这样就自然提出了一个问题,特别是对大型软件更为重要,如何根据已有的部分失效 数据的收集来预测某些时刻的错误数呢? 软件可靠性模型就是在这样的背景下应运而生 的。软件可靠性模型就是利用软件测试所提供的有关软件系统的失效数据,估算软件的可 靠性,对软件将来的失效行为进行预测,以协助开发人员监督软件开发过程,辅助软件过 程管理,如过程评估、风险分析、项目估计与决策等1 1 。软件可靠性的预测是软件产业 界极其关心的,软件的可靠性不达到一定的标准,不能推向市场,所以必须经过详细的测 试。测试的时间又不能拖得过长,以致影响进入市场的时间,造成经济损失。一个软件究 竟应该测试多长时间再推向市场才算最好,自然成为软件业界关注的重要问题。软件可靠 性预测是保证软件可靠性和软件质量的一种十分有效的手段。也正是基于上述原因,对于 软件可靠性预测的研究是非常必要的。 近三十年软件可靠性模型方面的研究衍生出大量模型及其变种,模型的“泛滥”说明 软件可靠性的复杂性和不确定性,另一方面也使得如何选择和运用模型成了一个棘手的问 l 南京邮电大学硕士研究生学位论文第一覃绪论 题。对不同模型的应用研究表明目前为止尚没有一个对所有软件产品都普遍适应的通用模 型【1 2 1 。 目前软件可靠性模型的选择主要依据度量者个人的经验,并通过对实际软件系统测试 情况的观察来对软件可靠性增长模型进行取舍和修改。因此研究减少对度量者个人经验的 依赖性并且具有良好预测精度的软件可靠性预测模型就显得非常有意义。 1 2 国内外研究现状 1 2 1 国外研究现状 第一篇关于软件可靠性的论文是1 9 6 7 年h d u n o 提出的生灭过程模型,该模型给出了失 效时间间隔的威布尔分布。1 9 7 2 年,j e l i n s k i 等人对软件的失效率做了进一步研究,给出了 基于一定的假设条件下,失效率同残留差错数的函数关系。以上模型中的参数估计大多采 用经典的统计方法。大量的事实表明,当观察值的分布偏离原来的假设模式时,由经典统 计所得到的参数估计值往往可靠性较低。7 0 年代末至8 0 年代初,软件可靠性的研究工作开 始集中于对软件可靠性模型进行比较和选择。 9 0 年代以来,软件可靠性研究工作进展较快。利用软件可靠性增长测试产生的失效数 据进行可靠性建模【l2 1 ,是一种使用广泛的软件可靠性评价方法。经过3 0 多年的研究与发展, 己出现上百种软件可靠性模型【1 2 以4 】,传统的软件可靠性预测模型大多通过拟合己收集到的 软件失效数据,来预测软件在未来时间的失效数。软件可靠性增长模型伴随着非完美调试 和变点问题,s h y u rhj 提出一种随机软件可靠性模型,该模型用从软件开发过程中得来的 失效数据来分析软件的可靠性和软件发布时的剩余错误。简单指数可靠性函数保存了多项 式指数可靠性函数大部分数学属性,所以b u s t a m a n t eas t l 5 】提出从简单指数可靠性函数推 出多项式指数可靠性函数来预测软件可靠性。 文献【1 6 】介绍了包括非均匀泊松过程软件可靠性,带环境因素的非均匀泊松过程和代 价模型在软件可靠性工程中的应用。对于软件可靠性预测中的不一致问题,k a r t m a i t h i n 1 1 7 - 1 9 j 等人在1 9 9 1 和1 9 9 2 年这两届的i e e e 关于软件可靠性工程的国际会议上,提出了利用神 经网络来解决该问题。在训练人工神经网络阶段,使用执行时间作为输入,而将观察到的 累积错误数作为目标输出,在训练结束时,输入一个附加的、未来的、执行时间的区间段, 并考察人工神经网络对累积错误数的估计精度。结果发现,相对于基于统计学的软件可靠 性估计方法,神经网络方法对预测显示良好的一致性,对提高预测的精度具有积极的贡献。 2 南京邮电大学硕士研究生学位论文 第一章绪论 1 2 2 国内研究现状 国内软件可靠性方面的研究起步比较晚,始于8 0 年代初,是在7 0 年代国际软件可靠性 研究高潮之后,国内的软件可靠性研究主要集中于软件可靠性建模。虽然与国外比起来还 有一定差距,但某些工作己达到了相当的水平,比如黄锡滋、蔡开元均有学术论文在国际 可靠性权威杂志上发表,刘纯生的工作也在国外发表。鉴于我国的软件可靠性发展要求, 国防科工委直接领导成立了许多专门的软件可靠性研究机构,使得国内软件可靠性方面的 研究工作得以广泛的开展,并取得了良好的效果。以武汉大学软件工程国家重点实验室的 徐仁佐教授主持的软件可靠性研究小组开发的 ,为在国内 推广软件可靠性技术的应用,做出了很有意义的贡献。虽然,目前提出的软件可靠性模 型很多,但使用情况不是非常令人满意,针对这一情况,武汉大学邹丰忠博士提出了软件 可靠性补偿模型,其思想是当传统模型 ( f ) ) 不能完全刻画实际软件故障行为时,用随机 过程 x ( f ) ) 来表征两者不相吻合的部分,则实际的故障行为可以用 人r ( f ) 和 x ( f ) ) 的复合 叠加来全面表征。实验表明,这种方法非常可行实验结果令人满意。 人工神经网络是目前国际上发展迅速的前沿交叉学科,在非线性建模方面有广泛的应 用。目前,很多研究人员采用前向神经网络对故障数据的动态过程进行可靠性建模。由于 传统基于数理统计的软件可靠性模型,应用比较狭窄,存在较大的人为性和较低的求解精 度,常常会出现错选模型的问题,给实际工程带来不便。用神经网络对故障数据进行可靠 性建模则不存在这些问题。对神经网络方法在软件可靠性建模中的应用,参考文献【2 0 】有 深入的论述。纵观国内软件可靠性理论研究工作,可以说取得了一定的成绩。首先在学术 上软件可靠性在可靠性领域占有一席之地,其次,某些工作达到了相当的水平。 3 南京邮电大学硕士研究生学位论文 第一章绪论 1 3 论文主要结构 论文主要由6 部分组成。 第一章简要叙述了本文研究的背景和国i 为# 1 - 对软件可靠性模型的研究现状。 第二章主要对软件可靠性进行了概述,重点介绍了软件可靠性及其影响因素,建模方 法和理论,以及讨论了软件可靠性模型研究的意义。 第三章对软件可靠性模型用到的数学知识进行了简单的总结和概述。 第四章对几种常用的软件可靠性模型进行了简洁而全面的介绍。 第五章是本文的重点章节,本章首先提出了测试覆盖的概念并对其进行了简要的介 绍;然后对一些已发表的非奇次泊松过程进行比较研究,得出它们之间的内在联系;从测 试覆盖的角度提出了一种新的软件可靠性模型,并完整地给出了模型建立的理论假设,数 学推导,参数估计等过程;最后通过对实际数据的仿真比较显示本文提出的模型的可行性。 第六章是本文的工作总结和展望,对论文进行了总结,并对未来工作做出展望。 4 南京邮电大学硕士研究生学位论文第二章软件可靠性概述 第二章软件可靠性概述 2 1 软件可靠性及其影响因素分析 2 1 1 软件可靠性定义 可靠性是软件的一个重要质量指标。明确这个观点,可以避免可靠性工作与质量保证 工作相对立。另一方面,如果在软件的开发过程中,仅限于泛泛提及软件质量,忽视软件 可靠性的特殊性,在许多情况下是不妥当的。软件如果不具有足够的可靠性水平,使用过 程中频繁失效,其后果轻则给用户带来麻烦,造成经济损失,重则导致安全事故发生。这 样的软件不仅没有使用价值,而且非常危险。 关于软件可靠性的确切含义,学术界有过长期的争论。曾有人否认软件具有可靠性属 性,把软件可靠性说成是科学家寻求的一种“神圣梦想”,但是现在仍然保持这种偏颇观 点的人士已十分罕见。还有一些软件工程专家,认为软件具有与硬件不同的性质,不宜将 硬件可靠性的定义引申到软件领域。经过长期的争论和研究,1 9 8 3 年美国i e e e 计算机学 会对“软件可靠性一词做出如下的定义【2 1 1 : ( 1 ) 在规定的条件下,在规定的时间内,软件不引起系统失效的概率,该概率是系统输 入和系统使用的函数,也是软件中存在的错误的函数:系统输入将确定是否会遇到已存在 的错误( 如果存在的话) 。 ( 2 ) 在规定的时间周期内,在所述条件下,程序执行所要求的功能的能力。 软件可靠性定义中提到的“规定的条件”和“规定的时间”,在工程中有重要的意义, 需要进一步解释。软件测试和运行中有三种时间度量。第一种是日历时间,日历时间是指 日常生活中使用的日,周,月,年等计时单元;第二种是时钟时间,它是指从程序运行开 始,到运行结束所用的时,分,秒,其中包括等待时间和其它辅助时间,但是不包括计算 机停机占用的时间;第三种是执行时间,执行时间是指计算机在执行程序时,实际占用的 处理器时间,所以又称为c p u 时间。 定义中所指的“条件”,是指环境条件。环境条件包括了与程序存储,运行有关的计 算机及其操作系统。例如计算机的型号,字长,内存容量,外存介质的数量和容量等,这 些因素显然对程序的运行有重要的影响,但是这些因素在使用中一般没有变化。定义中的 环境条件还包括软件的输入分布。程序在启动运行时,需要给变量赋值,即给程序提供输 入数据。输入数据可能是由外部设备输入,也可能早已存储于计算机内存等待读取。 5 南京邮电大学硕士研究生学位论文 第二章软件可靠性概述 2 1 2 软件可靠性相关术语 人y 蝴c 2 2 j ( h u m a ne r r o r ) 是指在软件生存期内出现的不期望或不可接受的人为差错, 其结果会导致产生软件缺陷。人为错误是人们在软件开发活动中不可避免的一种行为过 失。 软件缺陷( s o f t w a r ed e f e c t ) 是存在于软件中的、不期望的或不可接受的偏差,其结果是 当软件运行于某一特定条件时将出现软件故障( 软件缺陷被激活) 。软件缺陷以一种静态 的形式存在于软件的内部,是软件开发过程中人为错误的结果。 软件故障( s o f t w a r ef a u l t ) 是指在软件运行过程中出现的一种不期望的或不可接受的内 部状态,此时若无适当措施加以处理( 例如,容错等) 就会产生软件失效。软件故障是一种 动态行为,是软件缺陷被激活后的表现形式。 软件失效( s o f t w a r ef a i l u r e ) 是指软件对要求行为的偏离,是软件运行时产生的一种不期 望的或不可接受的外部行为结果。 在某种意义上讲,软件缺陷和软件失效代表了软件的两个不同层次的问题。软件缺陷 是软件的内部问题,是软件开发人员能够察觉到的问题:软件失效是软件的外部问题,是 用户能够察觉到的问题。 软件可靠性预测( s o f t w a r er e l i a b i l i t yp r e d i c t i o n ) 是指利用可知的任何度量与规程确定 未来软件的可靠性。 2 1 3 软件可靠性定义的数学描述 软件可靠性的数学描述为:以f 表示给定的时间,设系统是在时刻0 开始运行,直到丁 时发生故障,则 r ( f ) = p ( t f ) ( 2 1 ) 就表示软件系统在特定的环境下正常工作到时刻,时的概率,其中,丁是从时刻0 开始, 软件系统运行到发生故障的时间。按照概率论的观点,“软件系统正常工作 是一事件, 则它的对立时间“软件系统运行出错”定义了一个故障率函数f ( f ) ,因而显然有 尺( ,) + f ( t ) = l( 2 2 ) 一般地,我们用2 ( t ) 来表示失效率,也有人称它为“风险函数 ,2 ( t ) 就是程序正确运 行到时刻t 时,单位时间内程序发生失效的概率。于是有 6 南京邮电大学硕士研究生学位论文 第二章软件可靠性概述 旯( f ) ,= p , 因此,又可以写 r ( t + a t ) = p t + a t ) ) = p ( r f ) 且区间i t ,+ 缸】内程序不发生故障 = r ( r ) 【1 2 ( t ) a t 】 对式( 2 4 ) 求微分,得到 d r = - 2 ( t ) r ( t ) d t 由式( 2 - 5 ) ,可以得到方程的解: r ( f ) = e x p j 。i 2 ( t ) d t r ( f ) 。 上式描述了失效率函数力( f ) 与可靠度函数r ( t ) 的关系。 2 1 4 软件可靠性影响因素分析 ( 2 - 3 ) ( 2 - 4 ) ( 2 5 ) ( 2 6 ) 影响软件可靠性的因素式多方面的【4 j ,从一般意义上而言,任何和软件开发相关的活 动都有可能影响软件的可靠性。它包括技术层面的,经济层面的乃至社会和文化科学层面 的因素的影响。在这里主要讨论在软件生存期内影响软件可靠性的因素,也称软件可靠性 因素。从软件开发角度而言,影响软件可靠性的主要因素包括: ( 1 ) 软件规模:从直观上而言,软件的规模越大,影响其可靠性的因素也就越多。简 单软件的可靠性问题很容易通过较为安全的测试而解决,所以软件可靠性主要针对中型 以上的软件而言。 ( 2 ) 运行剖面:软件对于不同的运行剖面有着不同的可靠性,所以在软件可靠性模型 和软件可靠性测试中尽量使得操作剖面和运行剖面一致。对于一个软件而言,其软件故 障是因为某个输入激活了软件某个内部的缺陷所致。对输入空间故障的划分可以参考 n e l s o n 的输入域模型。 ( 3 ) 软件内部结构:总的来说,软件的内部结构越复杂,所包含的变化也就越多,它 可能包含的内部缺陷也就越多,软件的可靠性也就越低。对于这方面内容可以从h a l s t e a d 的软件科学度量和m c c a b e 的循环c y c l o n a t i c 复杂系数中得到相关论述。 ( 4 ) 软件可靠性测试与投入:不同的软件测试方法对软件可靠性的影响是不同的,以 前我们主要采用调试的方法进行软件测试,但研究表明,采用运行测试的方法比调试的 测试方法能更能够提高软件可靠性。同时软件可靠性的资源投入也很重要的。对于同样 7 塑室堕皇奎堂堡主堕壅竺兰垡笙壅望三至鏊堡里差堡塑堕 的测试方法,资源投入越大,其测试越完备,软件达到的可靠性程度也越高。 ( 5 ) 软件可靠性管理:随着软件开发的工程化,软件开发本身也越来越变成了一种企 业行为,所以良好的管理对于合理分配资源,遵守开发规范有着重要的作用,从而提高 软件的可靠性水平。 ( 6 ) 软件开发人员的能力和经验:我们当然希望软件开发人员的能力很强,经验丰富, 但对这方面的需求除了要加强对开发人员的学习和培训之外,也必须在软件开发过程中 合理地进行人力资源分配,在现有的情况下,最大限度地利用人力资源的结构,达到最 佳效果。 ( 7 ) 软件开发方法:采用不同的软件开发方法对系统可靠性的影响是显而易见的。就 目前的软件工程现状而言,采用结构化的,面向对象等软件设计方法可以明显地减少软件 缺陷数。 ( 8 ) 软件开发环境:选择适当的程序开发语言和软件测试工具等软件开发环境,可以大 幅度提高软件可靠性模型。 2 2 建模方法和建模理论 2 2 1 模型假设 传统的软件可靠性模型,都以某些假设为基础,这些失效过程的随机性假设是软件可 靠性模型建立的主要依据。在不同的模型中,对故障强度的假设也是各不相同,包括指数 衰减型、s 型、r 型、威布尔型、倒线性型、几何衰减型等【2 2 】。 此外,常见软件可靠性传统模型建模的假设还包括口1 j : ( 1 ) 失效间隔时间独立; ( 2 ) 发现错误立即除去; ( 3 ) 除错时不引入新的错误; ( 4 ) 失效率与软件中残存错误数成正比; ( 5 ) 测试环境代表运行环境: ( 6 ) 失效数据的质量足够高。 各类模型的很多假设是与软件开发实际不相符合的,模型的假设条件成为制约模型广 泛应用的一个瓶颈,是模型局限性所在。例如,许多现存模型,考虑到排错引入新的错误 会使问题复杂化,于是假设排错不引入新的错误。这样做的结果虽然使理论处理简单明了, 8 南京邮电大学硕士研究生学位论文第二章软件n - i 霏性概述 但与实际情况相距太远,软件的开发靠人完成,且排错也由人工完成,人类行为的不可预 测性无论在软件开发或排错阶段,都要表现出来。事实上,由于排错时的某些处置失当, 往往会产生许多副作用,引入一些始料不及的新错误是十分自然的。这也正好解释了在对 软件中出现的错误进行观察记录时,为什么经常会大幅度的震荡的原因。引入新的错误, 另一方面的原因还在于软件产品各模块间的逻辑关系错综复杂,互为因果,故而使得局部 的某些改动甚至可能产生牵涉全局性的许多问题。此假设与软件开发实际不相吻合,表现 出了软件可靠性模型假设的局限性。 模型假设存在局限性,正是现在这些模型应用不一致性的症结所在,直接导致了传统 可靠性模型的精度不高和适应性不好。目前,软件工程界对于软件可靠性模型的诸多疑虑, 也多半来自于此。它的突破,也就会消除软件工程界的疑虑,使软件可靠性理论得到更广 泛的应用,从而,必然反过来促使软件可靠性理论的发展。 2 2 2 建模方法 当前软件可靠性建模技术主要有马尔科夫过程,随机时序分析和人工神经网络等【2 0 】。 下面将对这三种主要的建模技术进行介绍和分析。 ( 1 ) 马尔科夫过程 在众多的软件可靠性模型中,能用马尔科夫过程描述的随机过程模型占了绝大多数。 马尔科夫过程的概念可以描述软件在时间r 的残存错误数和时间f 以前经历的故障数等随 时间变化的随机行为。马尔科夫过程具有这样的性质【5 l :过程的将来行为仅依赖于现在的 状态,而与它的历史无关。例如认为软件故障过程主要依赖于残存错误数。通常,马尔科 夫过程用状态停留时间和状态间的转移特性来描述。实际上,由于错误难以观察,而故障 是可以发现的,因此人们常将软件运行在时间f 之前经历的故障数看作是一个马尔科夫过 程。根据建模假设的不同,又可以将马尔科夫过程模型分为一般的泊松型模型和二项式型 模型。马尔科夫过程模型的主要优点在于其模型的简单性,易于理解和实旌。但这种简单 性来源于模型的理论假设,同时也是软件可靠性模型应用不一致性的根源。 ( 2 ) 随机时序分析 随机时序分析以随机过程理论作为建模基础,通过对失效数时序的分析,完成软件可 靠性的建模和预测。失效数时序就是按时间顺序排列的失效数据。从表面上看时序分析撇 开了现象之间的任何相关关系或结构关系,但事实上,由于时间序列中反映了曾经发生过 的所有相关关系或结构关系的影响,时间序列分析可以从总的方面进行考察,来说明其作 9 南京邮电大学硕士研究生学位论文第二章软件司靠性概述 用力的综合作用,这就是时间序列模型所以成为预测有效工具的理论基础。因此,当我们 所关心的指标的影响因素错综复杂或有关的数据资料无法得到时,就直接采用时间作为变 量来代替这些因素。时间作为一个明确的自变量进入模型,其意义表面上是指标随时间变 化而变化,而实际上是代表了决定此指标变化各因素的联合影响。 影响指标的因素众多,关系复杂,不易确定自变量;或者在许多因素中能找出若干重 要的自变量,但对这些变量又缺乏必要的通解,所以应用回归模型就比较困难,而时间序 列模型可避免这一难题。但经典时序分析理论是建立在线性这个主要假设基础上的,它分 析的对象为线性系统或同质非线性系统( 可转换为线性系统的非线性系统) 。实际应用中模 型的合理性只能通过具体数据进行检验,实旌较马尔科夫过程模型复杂,但预测精度却能 得到较大提高。 ( 3 ) 人工神经网络 人工神经网络是基于现代对生物神经系统的认识而提出的一种高度抽象的数学模型。 它通过模仿大脑神经元工作的机制对系统历史、经验的数据进行学习,从而建立研究系统 的等价模型。一个人工神经网络至少应包括:大量称为神经元的简单处理单元,它们对给 予的输入信息进行局部计算,并产生输出信息;大量加权的神经元之间的联结,它们对 网络的知识进行编码;同步或异步的处理模式;学习算法,它可以根据实际数据对网 络结构信息进行更新。 同马尔科夫过程和随机时序分析相比,使用人工神经网络进行软件可靠预测,不需要 假定随机性作为数据的基本特征,也无需关心数据是否为线性或同质非线性,更不需要了 解失效的内在过程。在具体建模中,它不受各个数据集特殊性的影响,因此能够在所提供 的数据而不是在近似的基础上对一个“真实”过程进行建模。然而,神经网络复杂,算法 众多,各种网络模型的结构和参数均隐式表达,具有不透明性,这使得一方面具体模型的 选择存在难度,另一方面以对实际失效过程提供直接的深入了解。同时,神经网络学习中 还存在学习不足和过拟合的问题,并且在实际应用中呈现出拟合能力强,预测外推能力弱 的现象,这也使得神经网络模型在失效时序数据预测上很不稳定。 2 2 3 建模原理与建模过程 软件可靠性模型说明了失效过程对影响它的主要因素的通用依赖形式:错误引入,错 误消除,操作环境等。图2 】给出了软件可靠性建模的基本思想。此图中,软件系统的失效 率总体上随着软件失效的发现与消除而减小。在任一给定时间( 如,标有当前时间的点) , l o 南京邮电大学硕士研究生学位论文第二章软件可靠性概述 可以观察到软件失效率的历史。软件可靠性建模技术通过统计结果预测失效率曲线。其目 的有两个: ( 1 ) 预测达到规定目标还需要多少测试时间; ( 2 ) 预测测试结束时软件的期望可靠性。 失效率 出现失效率 指定目标 试时间 图2 - 1软件可靠性建模基本思想 软件可靠性建模一般采用下面的过程或类似过程: ( 1 ) 考察数据。研究数据( 缺陷计数或是失效间隔时间) 的特性,分析时间的单位( c p u 时 间,日历天,周,月等) ,数据跟踪系统和数据可靠性以及数据的任何有关方面。 ( 2 ) 根据对测试过程,数据的理解,选择合适的建模方法,如:马尔科夫过程,随机时序分 析,人工神经网络等。 ( 3 ) 估计模型的参数,得到拟合模型。 ( 4 ) 进行拟合程度检验,并估计模型的合理性。 ( 5 ) 基于拟合的模型做出可靠性预测。 2 3 软件可靠性模型研究的意义 软件系统测试及发行后阶段的可靠性度量是以软件可靠性模型为基础对软件可靠性 行为进行评价和预测的过程。其中软件可靠性增长模型是应用的核心和关键,用于定量的 估计和预测软件可靠性行为。近三十年软件可靠性增长模型方面的研究衍生出大量模型及 其变种,如此众多的模型让软件工程师们不知所措。一方面,模型的“泛滥”说明软件自 身及其失效行为的复杂性和不确定性,另一方面也使得如何选择和运用各种模型成为一个 棘手的问题。对不同模型的应用研究表明,目前为止仍然没有一个对所有软件都普遍适应 的通用模型。这种现象在软件可靠性领域称为模型应用不一致性( t h ei n c o n s i s t e n c yo f 南京邮电大学硕士研究生学位论文第二章软件可靠性概述 a p p l i c a t i o no f s o f t w a r er e l i a b i l i t ym o d e l s ) 。 产生软件可靠性模型应用不一致性的根源在于模型建立的前提假设各不相同,软件可 靠性建模在建模中虽然使用了许多领域的知识,但是作为其中起主要作用的仍然是统计方 法。目前实际应用中的各种模型都有其特定的理论假设。因此,不同模型对于可靠性有不 同的推导及计算方法,从而可能得到不同的可靠性评估和预测结果。目前看来,提出普适 性的模型很有难度,如果又是根据一定假设提出新的增长模型,只会给软件开发人员对模 型应用的不致性带来更大困惑。因此,作为模型应用不一致性问题主要解决方法之一的 模型选择己成为模型应用的研究重点。 2 4 小结 本章简要对软件可靠性进行了概述,重点介绍了:软件可靠性定义,相关术语,可靠 性定义的数学描述,影响软件可靠性的因素;软件可靠性建模的假设,方法,原理和建模 过程等;最后本章对软件可靠性模型研究的意义进行了简单的阐述。通过本章的介绍,读 者会对软件可靠性有初步和梗概的认识。 1 2 南京邮电大学硕士研究生学位论文第二章软件可靠性概述 第三章软件可靠性分析的数学基础 在软件可靠性定义的数学描述和软件可靠性度量指标的分析中,不难看出,在软件可 靠性分析和模型的应用中,经常需要用到随机分布,随机过程,参数估计三方面的数学知 识,因此本章就着重从这三个方面进行简要的介绍。 3 1 常用随机变量及其分布 3 1 1 常用离散型分布 若丁仅在一非连续空间取值,即r 可取值为f l ,t 2 ,go t l 0 ,q 0 ,p + q = 1 ,则称x 服从几何分布。 3 1 2 常用连续型分布 ( 1 ) 指数分布 指数分布函数为可靠性研究中最常见的分布,它的概率密度为 f ( t ) = a e m t 0 它相应的分布函数为 f ( t ) = 1 一e 一加 f 0 可靠度函数为 r ( t ) = 1 一y ( t ) = e 一t 0 指数分布的最大特点是它的故障率函数为一常数,即 心,= 器= 等舢 ( 2 ) w e i b u l l 分布 w e i b u l l 分布是在1 9 3 9 年由瑞典科学家w a l o d d iw e i b u l l 首先提出来的, 靠性研究中常见的寿命分布,它有效地描述了许多产品的可靠性。 w e i b u l l 分布函数主要由它的故障率函数表示 ( 3 - 5 ) ( 3 6 ) ( 3 7 ) ( 3 - 8 ) ( 3 9 ) ( 3 - 1 0 ) ( 3 1 1 ) 目前已称为可 南京邮电大学硕士研究生学位论文 第三章软件可靠性分析的数学基础 r ( t ) = 筇( 九) 声。1 其密度函数为 ( 3 1 2 ) 厂( f ) = 筇( 办) 声一1e 一( m y ( 3 13 ) 它的可靠度函数表达式为 尺( ,) = e - ( m ) , ( 3 一1 4 ) w e i b u u 分布具有单调的故障率,若 l ,则故障率递增;若0 l ,则故障率递减。 ( 3 ) 极值分布 极值分布的可靠度函数为 月( f ) :e x p - e x p ( 半) 】 ( 3 15 ) 相应的密度函数是 加) :b le x p 【_ t - n e x p 掣) 】 ( 3 1 6 ) dd 极值分布与w e i b u l l 分布有着密切的关系,若x 服从w e i b u l l 分布,则t = l n x 服从极值分 布。 ( 4 ) i e 态分布 若随机变量x 具有密度函数 f ( t ) = 去e x p _ 警】。 ( 3 - 1 7 ) 则称x 服从正态分布。 3 1 3 常用随机过程 对某时刻,有随机变ix ( t ) 与之对应,则称 x ( ,) ,f 0 ) 为一随机过程。对于任意的 t o f l r 2 ,满足以下条件: ( ,) ,f 0 具有不相关增量 ( 多p ( n q + 办) 一( ,) 2 ) = d ( 办)( 3 1 8 ) ( 9 p ( n ( t + h ) 一n ( t ) 1 ) = 允( f ) h + o ( h )( 3 1 9 ) n ( 0 ) = 0( 3 - 2 0 ) 则称 ( ,) ,o 为具有强度五( ,) 的非齐次泊松过程,函数朋o ) = ( 名( z ) 为非齐次泊松过 程的均值函数。若名( f ) = c ,c 为常数,那么该非齐次泊松过程就蜕变为一般泊松过程。根 据式( 3 - 1 8 ) ,( 3 - 1 9 ) 可知,事件a 在o ,t + h ) 内发生次数的概率分布为 p n ( t + 办) 一( s ) = n 】 :三二兰兰芋兰竺! e x p c f + 5 名c 甜,d 甜, = 旦竺g 二竽e x p 一【历。+ s ) 一,”o ) ( 3 - 9 _ 1 ) 上式与泊松计数过程条件,是等价的【2 3 1 。另外,由泊松计数过程的条件,以 及式( 3 2 1 ) 可以得到 p 0 ) = ,z 】= p f n ( t ) 一( 0 ) = n 】 :巡粤e x p 一垅( f ) 】( 3 - 2 2 ) 行! 在本文的以下章节中,经常要讨论软件可靠性模型中常用的非齐次泊松过程( n h p p ) 过程,在本小节中我们通过一个实例简单叙述一下n h p p 是如何应用在可靠性模型中的。 例:设随机变量s k ( k = 1 , 2 ) 表示从t = 0 开始运行的软件系统第k 次故障发生的时刻, 随机变量x ( 七= 1 , 2 ) 表示第k 一1 次故障与第k 次故障间的时间间隔。x 。和s 七之间的关 南京邮电大学硕士研究生学位论文第三章软件可靠性分析的数学基础 系如图3 1 所示。 f l l 一 图3 - 1x t 和s 七的关系图 从图中可以很容易得到 以= 瓯一s k l ( 后= 1 , 2 ,3 ;s o = 0 ) ( 3 - 2 3 ) 通过以上的描述,再结合本文2 1 节中所述可以分析( f ,f + x ) 时间段内的软件可靠性。 由2 1 1 节可知软件可靠性的定义可以简单叙述为:在规定的条件下,在规定的时间内软 件不引起系统失效的概率。据此,我们可以知道软件在o ,f + x ) 的可靠性等同于在这段时间 类软件失效次数等于零的概率,亦即 r ( xf ) = p n ( t + x ) 一( f ) = 0 】( 3 - 2 4 ) 假定软件系统失效现象符合非齐次泊松过程,若f 时刻为止以及发生了k 一1 次失效, 根据软件可靠性定义,我们知道( r ,h - z ) 内该系统的可靠性实际上等价于第k 一1 次失效与 第k 次失效之间的间隔时间大于x ,据此可以得到 r ( xff ) = p ( x k x fs k l = f ) = p n ( t + x ) 一( f ) = 0 】 = e x p - m ( t + x ) 一m ( f ) 】) 若给定s = t ,则可以知道随机变量x 七的条件分布函数 f ( xlt ) = l g ( xlf ) = 1 一e x p 一【肌o + x ) 一朋( f ) 】) 从上式可以看出,x 。的概率分布函数与故障发生次数k 无关。 ( 3 ) 马尔科夫过程 1 7 ( 3 - 2 5 ) ( 3 - 2 6 ) 南京邮电大学硕士研究生学位论文 第三章软件可靠性分析的数学基础 设 x ( ,) ,f o ) 为一组非负且只取整数值的随机变量。若对于任意k 1 , t 2 t ,以及非负整数:,如,i m ,有 p ( x ( t ) = i mix ( t 1 ) = ,x ( t 七) = i k ) ) ( 3 - 2 7 ) 则称 x ( ,) ,f o ) 为马尔科夫链。当f 仅取整数值时, x ( ,) ,t o ) 为离散时间的马尔科夫链。 当f 在非负轴上取值时, x ( f ) ,f 0 ) 为连续时间的马尔科夫链或马尔科夫过程。 3 2 常用参数估计方法 3 2 1 最大似然法 最常用也是最经典的统计方法为最大似然估计方法。设母体x 具有密度函数 ( x ;9 ) ,0 ,且x = ( 五。x :,而x 。) 是来自x 的一个给定的样本,则似然函数: 三( x ;矽) = 兀f ( x 。;目) f = i 是参数目的函数。假设p ( 功存在,那么有 三( 秒( z ) ;x ) = s u pl ( o ,x ) o e o 称护( x ) 为参数0 的最大似然估计。 若密度函数( x ;目) 关于臼是可微的,则0 满足下列似然方程: 者l n 即;圳谚= 。,净1 ,2 ( 3 2 8 ) ( 3 - 2 9 ) ( 3 3 0 ) 当母体具有离散分布时,用分布列p ( x ,;臼) 代替上述密度函数,则这里的定义及计算方 法仍然适用。 3 2 2 最小二乘法 设经过某一变换,寿
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 重大项目工程实施质量承诺书范文5篇
- 2026年宠物店员工培训考核题
- 遵守合规和道德要求承诺书7篇
- 2026年法律职业资格考试客观题仿真题解析
- 办公设备维护保障使用稳定性手册
- 2026年结构监理师强化练习题
- 技术服务专业高效承诺书3篇
- 智慧校园学生在线选课操作流程与技巧手册
- 骨科护理团队建设
- 新一代社交网络应用趋势分析
- 2026-2030中国丙烷脱氢(PDH)市场专项调研与营销创新发展趋势分析研究报告
- 2026年甘肃省兰州市重点中学小升初英语考试真题和答案
- 凝心聚力、共赴高考-2026届高三高考动员主题班会
- 某机械厂安全生产管理准则
- 2026年湖南省长沙市初二地理生物会考真题试卷(+答案)
- 中佳19井、中佳152井、中佳142井等13口井地面建设工程环境影响报告书
- GB/T 10801.2-2025绝热用挤塑聚苯乙烯泡沫塑料(XPS)
- 水利工程施工课程设计
- DB14∕T 1925-2019 流通领域供应链标准体系
- 2022年中考语文12本名著导读考点梳理
- GB/T 30791-2014色漆和清漆T弯试验
评论
0/150
提交评论