软件可靠性

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

7.7 软件可靠性

7.7.1 基本概念 1. 软件可靠性的定义

定义 1 软件可靠性(software reliability )是指软件在规定的运行环境中和规定的时间内无失效运行的概率[ANSI91]。所以它是时间t 的函数,我们用)(t R 来表示。

定义 2 软件故障率(failure rate )是指在单位时间内软件发生故障的概率。它和软件可靠性的关系如下:

)

()

()(t R dt t dR t -

=λ 或者是:

))(exp()( 0 ⎰-=t

dt t t R λ

定义3 软件平均无故障时间(MTTF)。指软件从开始运行到出现一个故障的期望时间,根据可靠性的定义有:

=

)(dt t R MTTF

和软件中错误相关的定义

定义4 软件错误(Software Error )。指在软件生存期内的不希望或不可接受的人为错误。软件错误是一种人为的行为,相对于软件本身是一种外部行为。

定义 5 软件缺陷(Software Defect )。指存在于软件(文档、数据、程序)之中的那些不希望或不可接受的偏差。其结果是软件在某一特定条件时出现运行故障。当软件指程序时,软件缺陷即程序污点(Bug )。

定义 6 软件故障(Software Fault )。指软件运行过程中出现的一种不希望或不可接受的内部状态。软件故障是一种动态行为。

定义 7 软件失败(Software Failure )。指软件运行时产生的一种不希望或不可接受的外部行为结果。

2. 软件的可用性定义

程序在给定的时间点,按照SRS 的规定,成功地运行的概率。 可靠性与可用性的区别:

可靠性指在0到t 这段时间间隔内系统没有失效;可用性仅仅意味着在时刻t ,系统是正常运行的。

在时刻t 系统是可用的,意味着两种可能:1)在0到t 这段时间间隔内系统一直没有失败;2)在0到t 这段时间间隔内,系统失效了若干次,但都被修复好了。

如果一端时间内,软件系统故障停机时间分别为t d1 , t d2 ,⋯⋯,正常运行时间分别为t u1 , t u2 ,⋯⋯。则系统的稳态可用性Ass 为:

∑∑∑+=

di

ui ui

SS t t t

A

如果引入系统平均无故障时间MTTF 和平均维修时间MTTR 的概念,则

MTTR

MTTF MTTF A SS +=

其中平均维修时间MTTR 是修复一个故障所需时间,它取决于维护人员的技术水平、对系统的熟悉程度、系统的可维护性。

平均无故障时间MTTF 是系统按照SRS 成功地运行地平均间隔时间,它主要取决于系统中潜伏的故障数目。

7.7.2 估算MTTF 的方法 1. 符号

E T ——测试之前程序中故障总数 I T ——程序长度(机器指令总数) τ ——测试(包括调试)时间 E d (τ)——在0到 τ 期间发现的错误数 E c (τ)——在0到 τ 期间改正的错误数

2. 基本假设

(1)E T /I T 近似为常数。通常介于千分之5到千分之20

(2)失效率(软件故障率)正比于软件中剩余的(潜在的)故障数,而MTTF 反比于软件中剩余的(潜在的)故障数。且假设错误一旦发现就得以纠正,并没有引入新的错误。因此 E c (τ) = E d (τ) 剩余的故障数)(τc T r E E E -= 单位程度程序中剩余故障数T

c T T

r r I E E I E )

()()(τττε-=

=

3. 估算 MTTF

经验表明,MTTF 与单位程度程序中剩余故障数成反比。

MTTF

k I E E E E k I k MTTF T T c c T T

r ⋅-

=-=

=)())

(()

(1

τττε

K 为经验常数,其典型值为200

4. 估计故障总数的方法

(1) 植入故障法

植错法是最早的一种排错性测试方法,它起源于通过软件测试来估计软件中所包含的错误的个数。其基本思想与经典的“估计一个鱼池中某种鱼的数目”的统计方法相类似。为了估计一个鱼池中的某种鱼的数目,可以先从鱼池中随机地捕一批适当数量的鱼,设其数量为K ,并给它们做上记号,再放回鱼池中。等这批放回的鱼在鱼池中与其它鱼充分均匀混合后,再捕一批鱼,在这批鱼中找出做过记号的鱼。假设在第二批鱼中,做过记号的鱼的数目是N ,而未做过记号的这种鱼的数目是M ,那么,由最大似然法进行统计推理,该鱼池中共有这种鱼约(M+N )K/N 条。

(2) 分别测试法

是对植错法的改进。因为人为植入的错误和程序原有的可能性质不同,测试时所发现的概率不同,发现的难易程度也可能不同。

如果能对程序中原有的错误加上标记,然后再通过进一步的测试,就可以对潜在故障进行估计。解决的办法是,由两个测试组分别测试同一个程序的两个副本,并把其中一个加上标记,然后再测试、估算。

影响软件可靠性的原因分析

影响软件可靠性的原因是多方面的,从一般意义上而言,任何和软件开发相关的活动都有可能影响软件可靠性。它包括技术层面的、经济层面的乃至社会和文化科学层面的因素的影响。在这里我们主要讨论在软件生存期内影响软件可靠性的因素,也称软件可靠性因素。从软件开发的角度而言,影响软件可靠性的主要因素包括:

软件规模。从直观上而言,软件的规模越大,影响其可靠性的问题也就越多。简单软件的可靠性问题很容易通过较为全面的测试而解决,所以软件可靠性主要是针对于中型以上的软件而言。对于这点在Halstead 的“软件科学”的思想中可以得到体现[Healstead77]。

相关文档
最新文档