搜索
您的当前位置:首页软件可靠性

软件可靠性

来源:乌哈旅游


7. 7软件可靠性

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

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

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

靠性的关系如下:

dR(t)

■ (t)

dt R(t)

或者是:

t

R(t)exp( - ■ (t)dt)

o

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

MTTF ° R(t)dt

和软件中错误相关的定义

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

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

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

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

当软件指程序时,

2.软件的可用性定义

程序在给定的时间点,按照 可靠性与可用性的区别:

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

1)在0到t这段时间间隔内系统一直没有失败;

SRS的规定,成功地运行的概率。

2)在0到t这段时间间隔内,系统失效了若干次,但都被修复好了。

如果一端时间内,软件系统故障停机时间分别为 tu2 ,: = ” = =。则系统的稳态可用性 ASS为:

td1 , td2 , ,正常运行时间分别为 tu1 ,

Z tui

ASS — --------------------------

7 tui • tdi

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

r SS —

A _—MTTF ___________

MTTF + MTTR

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

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

7. 7. 2估算MTTF的方法 1. 符号

ET——测试之前程序中故障总数 I ——程序长度(机器指令总数) ■ -- 测试(包括调试)时间

Ed(J――在0到•期间发现的错误数 Ec(J――在0到.期间改正的错误数

2. 基本假设

(1) ET/IT近似为常数。通常介于千分之 5到千分之20

(2) 失效率(软件故障率)正比于软件中剩余的(潜在的)故障数,而 MTTF反比于软件中剩余的(潜在的)故障数。且假设错误一旦发现就 得以纠正,并没有引入新的错误。因此 Ec( ) = Ed() 剩余的故障数=ET -Ec()

单位程度程序中剩余故障数;「( J =且3二ET「E(.) cIT IT

3.估算 MTTF

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

MTTF

(•))

k MTTF

Ec()

ET -

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

4.估计故障总数的方法 (1) 植入故障法

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

(2) 分别测试法

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

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

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

影响软件可靠性的原因是多方面的,

从一般意义上而言,任何和软件开发相关的活动都

有可能影响软件可靠性。 它包括技术层面的、 经济层面的乃至社会和文化科学层面的因素的 影响。在这里我们主要讨论在软件生存期内影响软件可靠性的因素,也称软件可靠性因素。 从软件开发的角度而言,影响软件可靠性的主要因素包括:

软件规模。从直观上而言,软件的规模越大,影响其可靠性的问题也就越多。 的可靠性问题很容易通过较为全面的测试而解决,

简单软件

所以软件可靠性主要是针对于中型以上的

软件而言。对于这点在 Halstead的\"软件科学”的思想中可以得到体现 [Healstead77]。

因篇幅问题不能全部显示,请点此查看更多更全内容

Top