第4章 软件可靠性度量和测试 [兼容模式]

  • 格式:pdf
  • 大小:598.87 KB
  • 文档页数:10

下载文档原格式

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



5
1
2016/4/28
超高可靠性要求的领域
航空航天领域; 医疗设备; 汽车发动机控制; 轨道、列车控制系统; 金融管理系统;
7
软件可靠性相关定义
软件可靠性(software reliability)R(t)可定义为:在给定条件下 ,在时间[0,t]内,软件无失效运行的概率。 软件故障率 (failure rate) λ(t) 指在单位时间内软件发生故障 的概率。
2016/4/28
第4章 软件可靠性度量和测试



随着计算机软件的飞速发展,软件可靠性已变 得越来越重要。据统计,计算机系统中,由于 软件错误引起的故障占所有故障的65%。 硬件飞速发展,软件不相适应,硬件越来越可 靠,软件虽然采取了很多办法,但还是系统崩 溃的主要原因。 究其原因是软件太复杂了,一个小小的程序, 其可能的路径可以是天文数字,以致于在软件 开发过程中难以对其作穷尽的测试,或者说难 于完全排除软件缺陷。
2
1
软件可靠性

第 4章 软件可靠性度量和测试
•软件可靠性是 软件质量特性 中关键、重要 的固有特性。 •软件可靠性反 映了用户的质 量观点。


用软件系统规模越做越大越复杂,其可靠性越来越难保证 。应用本身对系统运行的可靠性要求越来越高,在一些关 键的应用领域,如航空、航天等,其可靠性要求尤为重要 ,在银行等服务性行业,其软件系统的可靠性也直接关系 到自身的声誉和生存发展竞争能力。 软件可靠性比硬件可靠性更难保证,会严重影响整个系统 的可靠性。 在许多项目开发过程中,对可靠性没有提出明确的要求, 开发商(部门)也不在可靠性方面花更多的精力,往往只 注重速度、结果的正确性和用户界面的友好性等,而忽略 了可靠性。 在投入使用后才发现大量可靠性问题,增加了维护困难和 工作量,严重时只有束之高阁,无法投入实际使用。
13
14
软件失效类别
综上所述,软件缺陷是人为错误。 当一个软件缺陷被激活时,便产生一 个或多个软件错误; 当软件错误不加以纠正时,便不可避 免地产生软件故障。 同一个软件缺陷下可能产生不同的软件故障。
15

系统失效,主要是指由于软件故障的发生而导致系统 死机、系统无法启动、系统挂起及系统运行完全失去 应有运行轨迹等。
8


软件可靠性的定义

软件与硬件
软件可靠的生命周期有别于硬件系统。
硬件的老化特 性的体现
1983年美国IEEE计算机学会对“软件 可靠性”一词正式作出了如下的定义:


在规定的条件下,在规定的时间内,软件不引 起系统失效的概率,该概率是系统输入和系统 使用的函数,也是软件中存在的错误的函数; 系统输入将确定是否会遇到已存在的错误(如 果错误存在的话); 在规定的时间周期内,在所述条件下程序执行 所要求的功能的能力。
软件无 磨损性 的体现
9
硬件系统故障率与可靠性
软件系统故障率与可靠性
10
软件可靠性与硬件可靠性

软件的缺陷、故障和失效
软件缺陷(Defect)指在软件生存期内不希 望出现的人为错误。当软件指程序时,软件 缺陷即为Bug。
总数是不可预知的,只能估计 缺陷分为已知和未知(新发现)的 缺陷分为已发现的和未发现的 已发现的缺陷包括已纠正的和未纠正的



软件可靠性关心的主要问题是软件的设计质量,而非使用期限。 硬件的失效一般是物理变化的结果,软件的失效往往来源于设计过程中 存在于程序中的错误。 软件不存在硬件损耗的浴盆曲线。 一些在硬件可靠性理论中很重要的测度,如故障率等,对于软件而言并 无太多意义。 硬件一般考察其风险函数,在软件可靠性中对应地考察其错误函数。 普通用于硬件可靠性研究的冗余技术,对软件可靠性的改进并无帮助。 可以使用预防性维护技术防止硬件发生故障,但对于软件并不适用。 对于硬件故障,可以通过修复失效的系统以重新恢复系统功能,达到纠 错维护的目的。但在软件维护里只有重新完成设计。 在描述硬件的修复时间时,常使用对数正态分布,但对软件并不适用。 硬件发生故障时,可以通过断开失效部件来克服,软件故障不可依此处 理,因为设计错误的影响范围往往不是局部的,而波及整个系统。

Musa和Okumoto根据软件可靠性模型的五种 特征,对模型进行了下述分类:

给定时间间隔内的失效数模型。 两相临失效间的时间间隔模型。
时间域(Time Domain):按时钟时间、执行时间( 或CPU时间)分类; 类别(Category):根据软件在无限的时间内运行时 可能经历的故障数是有限的还是无限的进行分类; 型式(Type):根据软件在运行时间t时的失效数分布 来分类。其中主要考虑泊松分布和二项式分布。 种类(Class):根据软件发生故障的故障密度对时间 的函数形式分类(仅对有限故障类)。 族(Family):根据软件的故障密度对它的期望故障 数的函数形式分类(仅对无限故障类)。
21
软件可靠性模型是用来评估软件可靠性、预测 产品中可能存在的缺陷数的一套方法。



软件可靠性是软件开发、管理、环境、资源、人员等因素 的函数。它不仅依赖于软件开发过程中所使用的方法、技 术和工具,还与验证方法有关。 一个通过完备测试的软件,其可靠性必然得到增长和保证 。软件可靠性还与所使用的程序设计语言、开发与运行环 境以及开发人员的素质和工作质量等密切相关。 因此,一个适用的软件可靠性模型,应尽可能将这些因素 都包括进去。但是,实际上要做到这一点不仅是非常困难 的,甚至是不可能的,也是不必要的。
4.1 软件可靠性 4.2 可靠性模型及其评价标准 4.3 软件可靠性测试和评估
3
4
软件可靠性问题

因软件设计故障与因计算机硬件设计故障而引发的系统失效的比例大 约是:10:1 运行软件的驻留故障密度(每千行代码的故障数目): ——要求很高的关键财务或财产软件为:每千行代码 1~10个故障 ——关键的生命软件为:每千行代码0.01~1个故障 IEEE将软件可靠性定义为:系统在特定环境下,在给定的时间内无 故障运行的概率。 软件可靠性是对软件在设计、开发以及所预定的环境下具有能力的置 信度的一个度量,是衡量软件质量的主要参数之一。而软件测试则是 保证软件质量、提高软件可靠性的最重要手段。
11
在软件开发的各阶段, 软件始终离不开人的参 与,而人难免会犯错误, 这样就必然给软件留下 不良的痕迹。
软件错误(Error)指存在于软件(包括文档 、数据、程序)中的那些不希望或不可接受的 偏差。其结果是软件在某一特定条件下出现 运行故障。 软件故障(Fault)是一种动态行为,指在软 件运行过程中出现的一种不希望或不可接受 的内部状态。
22
历史背景

模型分类


软件可靠性建模是围绕着20世纪40年代的先驱 工作者Telinski、Moranda、Shooman和 Coutinbo等人的工作展开的。 其基本方法是用过去的失效数据建立可靠性模型 ,然后用所建立起来的模型估计现在和预测将来 的软件可靠性。 该方法使用的先验条件是给定过去某个时期内的 软件失效次数或软件的失效时间间隔。 因此,根据模型使用的这两种数据我们将模型分 成如下两类:
故障是缺陷的表现形式,是由存在的缺陷产生的。 缺陷并不一定导致故障,或者条件不具备,或者不会产生 故障。
失效 已纠正的缺陷 故障 缺陷
12
软件失效(Failure)指软件运行时所产生的 某种不希望或不可接受的外部行为结果。系统
不能完成所需要的功能而失败。失效是故障在软件 运行时所产生的后果
2
2016/4/28
Fra Baidu bibliotek16
失效与故障的区别
失 效
面向用户 软件运行偏离用户需求 面向开发者 程序执行输出错误结果
软件失效
故 障

软件失效是随机发生的 描述失效的方法有三个:


可根据对用户应用的严重性等级分类 可根据定位和排除故障的难度分类 如,3次失效/1000 CPU小时 如,6个故障/1KLOC

累计失效函数:即与某时间点相关的平均累计 失效数 失效率函数:用累计失效函数的变化率表示 平均失效时间MTTF函数:对于一个时间段, 表示若干相邻失效时间间隔的平均值;对某个 时间点,表示到下次失效的期望时间
4.2.1 可靠性模型 4.2.2 可靠性模型评价标准 4.2.3 可靠性增长模型和指数模型
软件(理想) 时间
19
20
4.2.1 软件可靠性模型

4.2.1 可靠性模型


为了对软件可靠性进行评估,除了进行软 件测试之外,我们还需要借助软件可靠性 模型的帮助。软件可靠性模型( Software Reliability Model)是指 为预计或估算软件的可靠性所建立的可靠 性框图和数学模型。 建立可靠性模型可以将复杂系统的可靠性 逐级分解为简单系统的可靠性,以便于定 量预计、分配、估算和评价复杂系统的可 靠性。
23
24
4
2016/4/28
4.2.1 可靠性模型

可靠性度量

软件可靠性模型是用来指导我们对软件可靠性进行评 估和预测的。


正确的选择与运用可靠性模型对于指导软件可靠性设计与测试 至关重要。 错误的或不恰当的选择不适合的可靠性模型将会带来错误的预 测值,从而错误地指导软件过程。 通过度量获得历史数据 对故障数据进行分析,拟合成概率分布函数 对拟合函数进行参数分析 确定所期望的可靠性度量值并预测可能的故障行为
17
18
3
2016/4/28
软件失效率
•如果没有缺陷,软 件失效率为0 •如果发现的缺陷能 被及时、完全修复, 失效率会趋向0 •实际上,发现的缺 陷数会递增,而纠正 一个缺陷会引入更多 的缺陷,因而失效率 会增加
失效率
4.2 可靠性模型及评价标准
硬件 软件(实际)
•软件可靠性建模过程 是根据软件过去的故 障行为建立软件可靠 性数学模型的过程 •建模的目的是为了预 计软件将来的故障行 为

比如:计算器无法正确地计算了或只要执行计算系统就出 错等。

局部失效,主要是指系统当中的某一个或几个模块的 功能失效,但并不影响其它模块的正常使用。

比如:一个基于网络的分布式软件,由于网络连接模块的 功能失效使得系统无法与服务器进行数据同步,但由于该 系统支持离线工作,一旦网络连接故障排除便可与服务器 进行数据同步,这种情形我们可以视之为软件系统的局部 失效。


建模过程:


常见的软件差错包括非法转移、误转移、死循环 、空间溢出、数据执行和无理数据等。在软件可 靠性分析和设计中,常常利用故障模型来对不同 的故障表现进行抽象。 故障模型可以建立在系统的各个级别上。建立的 级别越低,进行故障处理的代价就越低,但模型 所覆盖的故障也越少。 常用的故障模型有基于逻辑级、基于数据结构级 和基于系统级的故障模型。


故障。在一个计算机程序中出现的不正确的步骤、过程或数据定 义常称为故障。上述“差错”中的第二项属于故障。 失效。一个程序运行的外部结果与软件产品的要求出现不一致时 称为失效。软件失效证明了软件中存在着故障。上述“差错”中 的第三项属于失效。

需求分析定义错误。如用户提出的需求不完整,用户 需求的变更未及时消化,软件开发者和用户对需求的 理解不同等等。 设计错误。如处理的结构和算法错误,缺乏对特殊情 况和错误处理的考虑等。 编码错误。如语法错误,变量初始化错误等。 测试错误。如数据准备错误,测试用例错误等。 文档错误。如文档不齐全,文档相关内容不一致,文 档版本不一致,缺乏完整性等。
软件的差错、故障和失效

软件差错

异常。偏离期望的状态(或期望值)的任何情形都可称为异常。 缺陷。不符合使用要求或与技术规格说明不一致的任何状态常称 为缺陷。 差错。从一般意义上说,差错有下面几个方面不同的含义:

软件差错是软件开发各阶段潜入的人为错误:

计算的、观测的或测量的值与真实的、规定的或理论上正确的值或条 件之间的差别。 一个不正确的步骤、过程或数据定义。 一个不正确的结果。 一次产生不正确的结果的人的活动。
(t ) lim
t 0
R(t ) R(t t ) f (t ) tR(t ) R(t )
软件平均失效时间MTTF:对于一个时间段,表示若干相 邻失效时间间隔的平均值;对某个时间点,表示到下次失效 的期望时间
MTTF tf (t )dt R(t )dt
0 0