版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第十一章软件可靠性第一节软件可靠性的基本概念------------------------(6)一、软件的环境条件-------------------------(8)三、软件的故障----------------------------(11)四、影响软件可靠性因素-------------------(15)第二节软件可靠性的基本特征量-------------(21)二、时间的度量------------------------------(10)第三节软件可靠性的数学模型------------------------(29)一、软件可靠性建模概述-------------------(29)二、J-M(Jelinski—Moranda)模型-----(36)三、Halstead模型------------------------------(45)四、G-O(Goel一Okumoto)NHPP模型---------------------------------(50)1随着计算机软件的飞速发展,软件可靠性已变得越来越重要。据统计,计算机系统中,由于软件错误引起的故障占所有故障的65%。第十一章软件可靠性究其原因是软件太复杂了,一个小小的程序,其可能的路径可以是天文数字,以致于在软件开发过程中难以对其作穷尽的测试,或者说难于完全排除软件缺陷。2图11-1简单程序的控制流程图
为了说明软件的复杂性,让我们考虑一个由10至20条高级语言构成的程序,其控制流程图如图11-1所示。3图11-1中每个结点或圆圈代表一段可能以转移语句结束的顺序执行语句,每条弧代表两段程序间的控制转移。程序含有一个最少重复20次的循环语句,而在循环体内,则有一些嵌套的条件语句。假设程序中所有判断都是相互独立的,由于有5条贯穿循环体的路径:即①c→d→e→f→h→m;图11-1简单程序的控制流程图
②c→d→e→f→i→m;③
c→d→e→g→j→m;④
c→d→e→g→k→m;⑤c→d→l→m。4可见,软件可靠性问题在软件工程实践中极为重要,对软件可靠性问题的研究在国际上已十分活跃。
图11-1简单程序的控制流程图
那么从点A到点B的所有独立路径数为:如果考虑程序输入数据的变化,那情况就更为复杂了。
5广义的可靠性是指一切旨在避免、减少、处理、度量软件故障(错误、缺陷、失效)的分析、设计、测试方法、技术和实践活动。第一节软件可靠性的基本概念关于软件可靠性的确切定义,国际学术界曾经有过长期的争论。对软件可靠性定义的理解有广义和狭义两种:广义的可靠性:与之相关的内容有软件可靠性度量、软件可靠性设计、软件可靠性建模、软件可靠性测试和软件可靠性管理等。6狭义的可靠性:狭义的可靠性是指在工程上软件在规定的运行环境中和规定的时间内无故障运行的概率(可靠度)。与之相关的内容有软件可靠性度、软件失效强度和软件平均失效时间等。7一、软件的环境条件例如计算机型号、字长、内存容量、外存介质的数量及容量、输入和输出设备的数量、通信网络、操作系统和数据管理系统、编译程序及其他支持软件等。环境条件还包括软件的输入分布。软件的输入有外部和内部输入。环境条件包括与程序存储有关的计算机及其操作系统。这些因素对程序的运行有很大的影响,但在使用中一般没有变化。8程序运行一次所需的输入数据构成程序输入空间的一个元素,这个元素是一个多维向量。全部输入向量的集合构成程序的输入空间。程序在启动运行时,需要给变量赋值,即给程序提供输入数据,输入的数据可能由外部设备输入,也可能由早已存储在计算机内等待读取。一组输入数据经过程序处理后得到一组输出数据,这些输出数据构成一个输出向量,全部输出向量的集合构成程序的输出空间。
程序输入空间的元素数量非常庞大,程序运行中每个元素被选用的概率各不相同,形成一定的概率分布,我们称此为程序运行剖面,程序的不同的运行状态,对应于不同的运行剖面。9二、时间的度量1.日历时间软件的测试和运行以日、周、月、年等为计时单位。2.时钟时间软件从运行开始到运行结束以时、分、秒为计时单位。其中包括等待时间和其他辅助时间,但不包括停机占用时间。3.执行时间计算机在执行程序时,实际占用中心处理器(CPU)的时间,又称CPU时间。以CPU时间为可靠性度量的时间。例如,某软件在一周内运行48小时,CPU工作的时间是运行时间的2/3,则日历时间是一周;时钟时间是48小时,CPU时间是32小时。10软件可靠性工程的主要目标是保证提高软件可靠性。为达到这一目标,显然首先要弄清软件为什么会出现故障。只有这样,才有可能在软件开发过程中减少导致软件故障的隐患,且一旦出现什么故障,有可能采取有效措施加以清除。
三、软件的故障弄清软件故障机理是软件可靠性分析的根本目标。由于软件内部逻辑复杂,运行环境动态变化,且不同的软件差异可能很大,因而软件故障机理可能有不同的表现形式。
譬如有的故障过程比较简单,易于追踪分析,而有的故障过程可能非常复杂,难于甚至不可能加以详尽描述和分析。尤其是运行于高度复杂实时环境中的大型软件。111.软件缺陷
软件开发中残留的内在缺陷称为软件缺陷。这些缺陷可以在软件生存期的各个阶段被引入。
软件故障机理可描述为:软件缺陷、软件错误和软件故障。
缺陷→错误
→故障(失效)在软件开发的各阶段,软件始终离不开人的参与,而人难免会犯错误,这样就必然给软件留下不良的痕迹。例如一段程序进行某些数据处理,若在处理过程中就产生软件错误,则说明这段程序存在缺陷或缺少一个程序段。12
软件缺陷是一个静止的现象,只在一定的输入条件下才能被激活导致软件错误,而且软件错误也不一定导致软件故障。比如容错软件中的错误就可以被检测出来并可纠正或避免,而不导致故障。
软件缺陷在一定条件下暴露并导致系统在运行中出现可感知的不正常、不正确、不按规范执行的内部状态,则认为软件出现“错误”,简称出错。2.软件错误
软件错误是由于软件缺陷造成的。一个错误可能是多个故障源。例如,在求最大值的程序中,设计人员由于疏忽将求得的平均值作为最大值,这就是一个软件错误。
所谓不正确的内部状态,是指在此状态下,当正常的算法继续下去时,就会发生软件故障。13在对错误不作任何纠正和恢复的情况下,导致系统的输出不满足用户提供的正式文件上指明的要求,或双方协议的条款,称为软件的一次故障。3.软件故障软件故障是由于软存错误造成的一种外部表现,它是动态的、程序执行过程中出现的行为表现。综上所述,软件缺陷是人为错误。当一个软件缺陷被激活时,便产生一个或多个软件错误;当软件错误不加以纠正时,便不可避免地产生软件故障。同一个软件缺陷下可能产生不同的软件故障。14
软件可靠性因素是指软件生存期内影响软件可靠性的因素。显然,有许许多多因素可以影响软件可靠性,包括技术的、社会的、经济的、甚至文化的,因为在软件生存期的各个阶段均有人的干预,而人的行为受到各方面因素的影响。
四、影响软件可靠性因素从技术角度来看,影响软件可靠性的因素主要包括以下几个方面:
软件可靠性定义相对于运行环境而言,同一软件在不同运行剖面下,其可靠性行为可能极不相同。1.运行环境(剖面)让我们考虑一个极端例子。我们知道,软件故障是软件缺陷在一定输入情况下被激活的结果。于是可以将软件输入域划分为两个部分(G和F):15
G中的输入不会激活软件的缺陷,F中的输入恒激活软件缺陷。如果运行剖面不包含F中的输入,则软件不会出现故障,其可靠性恒为1。反之,如果运行剖面不包含G中的输入,则每一输入情况下均出现故障。如果没有容错措施,则导致软件故障,软件可靠性恒为0。
16如果软件只含一条指令,那么谈论软件可靠性问题便失去意义。随着软件规模的增大,软件可靠性问题愈显突出。2.软件规模软件工程实践的一个侧面可以反映这一点,即单元测试一般由编程人员本人进行,而综合测试则需独立的测试人员。软件可靠性增长模型也主要应用于综合测试阶段。在我们考虑软件可靠性问题时,软件一般是指中型以上软件(4000~5000条以上语句),这时可靠性问题难以对付。17软件内部结构一般比较复杂,且动态变化,对可靠性的影响也不甚清楚。3.软件内部结构关于软件可靠性设计技术的外延并不明确,但一般是指软件设计阶段中采用的用以保证和提高软件可靠性为主要目标的软件技术。如故障模式与影响分析(FMECA)、故障树分析(FTA)等。显然采用或不采用软件可靠性设计技术对软件可靠性必有影响。4.软件可靠性设计技术。但总的说来,结构越复杂,软件复杂度越高,内含缺陷数越多,因而软件可靠度越低。
18显然,软件开发人员(包括测试人员)的能力愈强,经验愈丰富,所犯错误便可能愈少,所得软件产品质量愈高,相应的可靠性也愈高。
5.软件可靠性测试软件可靠性管理旨在系统管理软件生存期各阶段的可靠性活动。使之系统化、规范化、一体化,这样就可以避免许多人为错误,以提高软件可靠性。研究表明,软件测试方法与资源投入对软件可靠性有不可忽视的影响。6.软件可靠性管理7.软件开发人员能力和经验19研究表明,程序语言对软件可靠性有影响。譬如,结构化语言Ada优于Fortran语言,而软件测试工具优劣则影响测试效果。软件工程表明,开发方法对软件可靠性有显著影响。与非结构化方法比较,结构化方法可以明显减少软件缺陷数。总之,有许许多多的因素影响软件可靠性,在软件设计时应尽量采用有利于提高软件可靠性的手段和方法。8.软件开发方法9.软件开发环境返回120软件质量主要由以下几个方面因素决定。第二节软件可靠性的基本特征量
①时间因素:包括平均故障间隔时间(MIBF)、平均失效前时间(MTTF)、平均系统不工作间隔时间(MTBD)、平均修复时间(MTTR)。
②缺陷频数:包括软件缺陷数、文件缺陷数和用户提出的补充要求数等。
③与软件可靠性有关的百分率:主要包括可靠性、有效性、可维护性、故障率、不合格率、延迟率、错误操作率、原因不明率、同故障事件率、可靠性经济率等。21⑥使用方特征:包括使用软件的系统的特点(如实时系统、嵌入式系统),需根据软件的特点,选择适当的可靠性参数作为软件质量指标。
④对软件的投入:包括完成软件用了不同水平的工作人员的工作日数或工时数和对软件的检查项目数及对用户提出的要求采取对策的费用等。
⑤软件特征:包括软件的复杂性、标准化程度、寿命周期、结构及规模大小等。显然,软件质量是众多因素及指标的综合反映,在软件可靠性评估中,需根据软件的特点,选择适当的可靠性参数作为软件质量指标。22软件常用的可靠性参数有以下几种:在一定时期内,由于软件故障而停止工作,必须由操作者介入再启动才能继续工作的次数称为系统不工作次数。1.系统不工作次数系统平均不工作间隔时间反映了系统的稳定性。2.系统平均不工作间隔时间(MTBD)233.有效性(A)有效性A综合反映了系统的可靠性和维修性。MDT—平均不工作的时间(h)。24平均修复时间反映了出现软件缺陷后采取对策的效率。在一定程度上也反映了软件企业对社会服务的责任心。4.平均修复时间(MTTR)平均不工作时间是指由于软件故障,系统不工作的均值。
5.平均不工作时间(MDT)一般以软件交付使用方后的三个月内为初期故障期。初期故障率以每100h的故障为单位,用它来评价交付使用时的软件质量和预测什么时候软件可靠性基本稳定。6.初期故障率初期故障率的大小取决于软件的设计水平、检查项目数、软件规模、软件调试彻底与否等因素。25一般以软件交付给使用方四个月后为偶然故障期。偶然故障率一般以每1000h的故障数为单位,它反映了软件处于稳定状态下的质量。
7.偶然故障率使用方不按照软件规范及说明等文件使用造成的错误叫“使用方错误”。在使用次数中,使用方误用次数占的百分率叫“使用方误用率”。8.使用方误用率造成使用方法误用的原因之一是使用方对“说明”理解不深,操作不熟练,但也有可能是说明书没有讲清楚而引起误解。26另外还有软件系统的可操作性还应改进、对使用方的使用培训还不够深入等。
生产方有责任及时调查使用方误用的原因,对软件功能加以改进。
用户提出补充要求数主要是反映软件未能充分满足用户的需要,有些要求是特定用户的特殊要求,生产方为了更好地为社会服务,应该尽力满足他们的要求。9.用户提出补充要求数
有些要求是带有普遍性的,这就要求给予足够重视,因为它反映了原来的软件功能还不够全面。27处理能力有各种指标,例如,可用每小时平均处理多少文件、每项工作的反映时间多少等来表示,具体情况根据需要而定。
在评价软件及系统的经济效益时需用这项指标。10.处理能力返回128第三节软件可靠性的数学模型软件可靠性建模是在根据与软件可靠性(故障)有关的数据以统计方法给出软件可靠性的估计值或预测值,是从本质上理解软件可靠性行为的关键之一。
一、软件可靠性建模概述软件可靠性建模活动最早可追溯到Hudson的工作,他当时以随机生灭过程描述软件缺陷的引入和剔除过程,并证明被剔除的缺陷数服从二项式分布,其均值时间函数具有威布尔(Weibull)分布形式。
软件可靠性建模研究真正获得重视始于60年代末“软件危机”的提出,并在70年代获得巨大的发展。291.模型种类
Jelinski和Moranda于1972年正式出版有关他们的模型的论著。这一模型是软件可靠性系统研究的真正开端,至今在软件可靠性建模方面仍具有重要意义,这是因为:
(1)Jelinski-Moranda模型软件可靠性模型主要有以下8种模型:①这一模型首次将硬件可靠性的基本概念,如可靠度、故障强度(率)等,系统地引入软件可靠性领域;②这一模型确立了软件可靠性建模的黑箱方法,即不涉及软件内部结构,仅依据软件外部行为(输入输出关系)刻画软件可靠性行为;③这一模型给出了软件可靠性建模的两个主要假设:一是测试用例的选取代表软件实际运行剖面;二是不同软件故障独立发生;30④这一模型简单,众多的后续模型可视为这一模型的某种变形。
Halstead依据其“软件科学”的思想于1972年提出此模型,试图利用软件复杂度确定软件缺陷数。(2)Halstead模型此模型的重要性在于它可应用于软件开发的早期阶段(软件测试之前)。随着软件可靠性设计地位的提高,此模型的重要性也将显著增长。Littlewood和Verrall于1973年发表此模型,其主导思想是将软件故障强度视为随机变量,从而开创了软件可靠性建模的Bayes方法。此模型也间接考虑了发现的缺陷不被完全剔除的可能性。(3)Littlewood-Verrall模型31Musa于1975年发表此模型,主要贡献在于提出将CPU执行时间作为软件可靠性的时间基准。(4)Musa执行时间模型Nelson最早于1973年提出一个基于数据域模型并于1978年得以完善。此模型是基于数据域模型的代表,成为目前应用最多的模型之一。
(5)Sukert模型比较工作Sukert于1976年给出其关于不同模型的分析比较的试验报告,开创了软件可靠性模型比较研究的先河。模型比较研究已成为建模研究的一个基本方面。(6)Nelson模型32
GoeI和Okumoto于1978年发表此模型,将软件故障次数描述为非齐次Poisson过程。此模型是NHPP模型的代表。
(7)Goel—OkumotoNHPP模型Musa于1979年发表了一批软件可靠性数据,对软件可靠性建模研究产生重要影响。目前已成为软件可靠性建模研究的“标准”参考数据。之后Musa,Ianninohe和Okumoto于1987年又发表了“软件可靠性”一书,在软件可靠性领域颇受推崇。该书首次对众多软件可靠性模型给出了统一的数学描述。
(8)Musa软件可靠性数据332.模型组成软件可靠性模型通常由以下几个部分组成:(1)模型假设模型是实际情况的简化或规范化,总要包含若干假设。
此假设认为软件测试用例的选取代表软件实际的运行剖面,甚至认为测试用例是独立随机地选取。①代表性假设此假设实质上是指可以用测试产生的软件可靠性数据预测运行阶段的软件可靠性行为。此假设认为软件故障是独立发生于不同时刻,一个软件故障的发生不影响另一个软件故障的发生。譬如在概率范畴内,假设相邻软件故障间隔构成一组独立随机变量,或假设一定时间内软件故障次数构成一个独立增量过程。②独立性假设34此假设认为所有软件故障的后果(等级)相同,即建模过程只考虑软件故障的具体发生时刻,不区分软件故障的性质。③相同性假设软件可靠性模型的输出量变为性能度量,如故障强度、残留缺陷数、可靠度等。在软件可靠性模型中性能度量通常以数学表达式给山。(2)性能度量某些可靠性度量的实际值无法直接获得(如残留缺陷数),这时需通过一定的方法估计参数的值,从而间接确定可靠性度量的值。(3)参数估计方法当然,对于可直接获得实际值的可靠性度量,便无需参数估计了。
35一个软件可靠性模型要求一定的输入数据,即软件可靠性数据。不同类型的软件可靠性模型可能要求不同类型的软件可靠性数据。(4)数据要求本书仅介绍三种最常用的软件模型。二、J-M(Jelinski—Moranda)模型J–M模型是最早的软件可靠性马尔科夫过程的数学模型,沿用了硬件可靠性的方法。
J–M的假设是:
①软件最初的错误数为常值N。用
(i=1,2,…,N)表示在第(i-1)个错误被改正后,软件投入运行至第i次故障发生前这个阶段的时间,且故障间隔时间
是统计独立的。36④每次故障后总有并仅有一个错误被排除,因此,系统的故障率是阶梯式下降的。
③每个软件错误一经发现立即被修正,且不考虑修改错误的时间,也不产生新的错误。
②在两个相继故障构成的时间间隔内,软件的故障率为常数,其大小正比于软件中的残存错误数。1.可靠性特征量(1)按上述假设得出的软件系统故障的密度函数为:37
(2)故障率为:(3)可靠度函数为:382.可靠性特征量估计
模型的待估参数为φ和N。设t1,t2,…,tn是试验中实际测得的n次故障发生的时间间隔,则其极大似然方程为:
运用极大似然估计法,则39可得模型参数的极大似然估计值和分别为
发现n
个软件错误后,停止测试。此时,软件的可靠性水平为
(1)残存错误数
40
(2)故障率(3)可靠度(4)平均无故障工作时间MTBF41
例11-1Jelinski和Moranda曾在美国海军舰队计算机程序编制中心利用海军战术数据系统(NTDS)的软件故障数据,对他们的模型作了验证。NTDS包括38个不同的模块,每个模块都经过开发、测试、使用三个阶段。验证所用的故障数据是取自两个大型模块的软件反馈报告。这个模块在设计阶段共发现了26个错误,测试阶段又发现了5个(表11-1中27-31)错误,在使用阶段又发现了3个(表11-1中32-34)错误。NTDS的数据见表11-1,J-M根据交付使用前的数据计算的结果也示于表11-1(见下页)。42阶段错误数n错误间隔时间(日)累计时问(日)J.M预计的故障时问设计阶段1234567891011121314151617181920212223242526912114725857161941386113379121921323643455058637071777887919295981041051161491562472492504.74.85.95.25.45.65.86.06.36.66.97.27.68.08.59.09.610.311.112.013.014.315.917.820.323.5表11-1NTDS数据及预计结果4328.13378727测试阶段8493481433总的错误数故障率系数79832使用阶段121.75401353166.440593045.6396122934.83844728J.M预计的故障时间累积时间(日)错误间隔时间(日)错误数n阶段表11-1续表估计软件共有31.2个错误。实际上,此软件三个阶段共有34个错误,可见计算结果与实际数据大致吻合。442.模型假设三、Halstead模型1.模型类别:静态经验模型。(1)程序是良好结构化的,即程序不包含操作符、操作数、表达式的问题。(2)以下方程近似成立:
—为程序中不同操作数个数。
式中:
—为程序中不同操作符个数;
其中:—为程序中操作符出现总次数;
—为程序中操作数出现总次数。
45程序残留缺陷N
的估计值为3.参数估计这里V表示程序容量,即46
例11-2某一汇编语言程序,由9个模块组成,包含约24955条汇编语言指令,如表11-2所列。表11-2某汇编程序原始数据及计算结果模块指令条数缺陷数决策点数调用次数l1l2MA403210237228347l442102MB1329812154418017618MC54539355236261057493MDl6742611l13023120l26ME205l7131519736613871MF25133721718632228737MG69916104321317616MH37925023311025260350MX3412804162304333578047假设每条指令包含一个操作符和一个操作数,则解:
其中,64表示总共有64种机器语言指令。那么可由式(11-11)计算,代入式(11-12)可以得到程序残留缺陷的估计值,见表11-2中最后一列中的值。
48由以上分析可以看出,Halstead模型认为程序中的操作符和操作数与其残留缺陷密切相关。该模型的优点是无需测试数据。尽管众多事实表明,V/N可近似为常数,但E0取值却未必为3000。也许利用程序的若干模块缺陷数(据此可估计E0)去估计其它模块的缺陷数更为合理。
因此,可用于测试之前的软件开发阶段;该模型的缺点是其有效性有待进一步确认。49四、G-O(Goel-OkumotoNHPP)模型2.模型假设1.模型类别模型为动态、宏观、面向错误数模型。软件(测试)运行方式与预计(实际)运行剖面相同。(2)对于任一组有限时间点,在对应时间段内分别发生的错误数为相互独立。(3)每一缺陷有均等机会被检测发现,且等级相同。50(4)任一时刻t发生的软件故障累积次数N(t)服从均值为m(t)的Poisson分布,均值m(t)使得微小时间段(t,t+Δt)内软件故障发生次数与t时刻软件残留缺陷数成正比。式中α—为测试过程最终软件发生故障的总数;
b—为比例常数。
(5)
m(t)是一个有界、非减函数,且51由假设(3)~(5)可知:
由于累积故障数N(t)是均值为m(t)的Poisson分布,那么
523.参数估计
设时间内发生的软件故障次数为
,其概率分布为:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二四年度光伏产品采购与安装合同3篇
- 《高等代数行列式》课件
- 《意健险销售指引》课件
- 智能穿戴设备采购合同书04版2篇
- 《长期决策》课件
- 河南豫南九校2023-2024学年高三联合考试数学试题试卷
- 手房定金协议
- 全新解除合同声明范文下载
- 二零二四年文化创意产业基地开发合同
- 2024年度珠宝设计与加工出口合同2篇
- 烟草的生长发育
- 员工工作考核评分标准表
- 苏教版六年级科学上学期第四单元探索宇宙质量测试卷(二)附答案
- 国家开放大学《公共政策概论》形考任务1-4参考答案
- 第一单元 《项目二:探究计算机中数据表示-认识数据编码》说课课件 2023-2024学年沪科版(2019)高中信息技术必修1
- 学习交流杂物电梯新检验规程课件
- Python实战之数据库应用和数据获取-教学大纲
- 大阳巧客电动四轮车常见故障处理方法之欧阳法创编
- 抖音团长合作协议书
- 机械设备验收记录表(旋挖机)
- 吸收放散实验课件
评论
0/150
提交评论