现在的位置: 首页 > 综合 > 正文

系统架构师学习笔记_第十三章(上)_连载

2011年11月29日 ⁄ 综合 ⁄ 共 2475字 ⁄ 字号 评论关闭

第十三章  系统的可靠性

13.1  软件可靠性

目前,硬件可靠性测试技术和评估手段日趋成熟,已经得到了业界的认可。

软件可靠性模型的研究多集中在 开发阶段、测试阶段、评估阶段 的可靠性模型。

13.1.2  软件可靠性的定义

可靠性(Reliability)是指产品在 规定的条件下 和 规定的时间内 完成规定功能 的 能力。

按照产品可靠性的形成,分为 固有可靠性、使用可靠性。

固有可靠性是通过 设计、制造 赋予产品的 可靠性。

使用可靠性 既受设计、制造 的 影响,又受使用条件的影响。

软件与硬件 从可靠性角度来看,主要有4个不同点:

1、复杂性,软件内部的逻辑高度复杂,硬件则相对简单。

2、物理退化,一个正确的软件任何时刻均可靠,一个正确的硬件、元器件、系统 则可能在某个时刻失效。

3、唯一性,软件是唯一的,软件复制不改变软件本身,硬件不可能完全相同,概率方法在硬件可靠性领域取得巨大成功。

4、版本更新快,软件版本更新较快,也给软件可靠性评估带来较大的难度。

1983年,美国IEEE 对“软件可靠性”做出了更明确的定义。

1989年,我国国家标准 GB/T-11457也采用了这个定义。

定义:在规定的条件下,在规定的时间内,软件不引起系统失效的概率。

依然沿用了“产品可靠性”的定义。

1、规定的时间

由于软件运行的环境与程序路径选取的随机性,软件的失效为随机事件,所以运行时间属于随机变量。

2、规定的条件

不同的环境条件下的可靠性是不同的,计算机的配置情况、对输入的要求。

有了明确规定的环境条件,还可以有效地判断软件失效的责任在用户方还是开发放。

3、所要求的功能

软件可靠性还与规定的任务和功能有关。

要准确度量软件系统的可靠性,必须先明确它的任务和功能。

4、“软件可靠性”定义具有如下特点:

1. 用内在的“缺陷” 和 外在的“失效”关系来描述可靠性。

2. 定义使人们对软件可靠性进行量化评估成为可能。

3. 用概率的方法描述可靠性是比较科学的。

13.1.3  软件可靠性的定量描述

软件的可靠性可以基于 使用条件、规定时间、系统输入、系统使用、软件缺陷 等变量构建的数学表达式。

1、规定时间:自然时间、运行时间、执行时间。

使用执行时间来度量软件的可靠性最为准确。

2、失效率:把软件从运行开始,到某一时刻t 为止,出现失效的概率用 F(t)表示。

F(0)=0,即软件运行初始时刻失效概率为0。

F(t)在时间域(0,+无穷大)上是单调递增的。

F(+无穷大)=1,即失效概率在运行时间不断增长时 趋向于1,这也意味着任何软件都存在缺陷。

3、可靠度:在规定的条件下,规定的时间内 不发生失效的概率。

公式略。

4、失效强度(Failure Intensity)单位时间 软件系统出现失效的概率。

公式略。

5、失效率(Failure Rate)又称 风险函数(Hazard Function),也可以称为条件失效强度。

就是当软件在 0~t 时刻内 没有发生失效的条件下,t时刻 软件系统的失效强度。

公式略。

6、可靠度 与 失效率 之间的换算。

略。

7、平均失效时间(Mean Time to Failure,MTTF)就是软件运行后,到下一次出现失效的平均时间。更直观地表明一个软件的可靠度。

公式略。

需要对 软件可靠度 这个反映软件可靠性的肚量指标作下列补充说明:

1. 需指明它与其他软件的界限。

2. 软件失效必须明确定义。

3. 必须假设硬件无故障(失效)和软件有关变量输入正确。

5. 必须指明时间基准:自然时间(日历时间)、运行时间、执行时间(CPU 时间)、其他时间基准。

6. 通常以概率度量,也可以模糊数学中的可能性加以度量。

7. 在时间域上进行,是一种动态度量,也可以是在数据域上,表示成功执行一个回合的概率。

软件回合是软件运行最小的、不可分的执行单位。

8. 有时将软件运行环境简单地理解为软件运行剖面(Operational Profile)。

运行剖面定义了关于软件可靠性描述中的“规定条件”,测试环境、测试数据 等一系列问题。

13.1.4  可靠性目标

使用 失效强度 表示软件缺陷对软件运行的影响程度。

不仅取决于软件失效发生的概率,还和软件失效的严重程度有很大关系。引出另外一个概念——失效严重程度类(Failure Severity Class)。

失效严重程度类 就是对用户具有相同程度影响的失效集合。

对失效严重程度的分级 可以按照不同的标准进行,对成本影响、对系统能力的影响 等。

对成本的影响 可能包括失效引起的 额外运行成本、修复和恢复成本、现有潜在的业务机会的损失 等。

对系统能力的影响 常常表现为 关键数据的损失、系统异常退出、系统崩溃、导致用户操作无效 等。

可靠性目标 是指客户对软件性能满意程度的期望。通常用 可靠度、故障强度、平均失效时间(MTTF)等指标来描述。

建立定量的可靠性指标 需要对 可靠性、交付时间、成本 进行平衡。

13.1.5  可靠性测试的意义

1、软件失效可能造成灾难性的后果。

2、软件的失效在整个计算机系统失效中的比例较高。

80%和软件有关。

结构太复杂了,一个较简单的程序,其所有路径数量可能是一个天文数字。

3、相比硬件可靠性技术,软件可靠性技术很不成熟。

4、软件可靠性问题是造成费用增长的主要原因之一。

5、系统对于软件的依赖性越来越强。

13.1.6  广义的可靠性测试与侠义的可靠性测试

广义的软件可靠性测试 是指 为了最终评价软件系统的可靠性而运用 建模、统计、试验、分析、和评价 等一系列手段对软件系统实施的一种测试。

侠义的软件可靠性测试 是指 为了获取可靠性数据,按预先确定的测试用例,在软件的预期使用环境中,对软件实施的一种测试。

也叫“软件可靠性试验(Software Reliability Test)”,它是面向缺陷的测试,以用户将要使用的方式来测试软件,所获得的测试数据与软件的实际运行数据比较接近。

可靠性测试是对软件产品的可靠性 进行调查、分析、评价 的一种手段。

对检测出来的 失效的分布、原因、后果 进行分析,并给出纠正建议。

总的来说,可靠性测试的目的可归纳为以下三个方面:

1、发现软件系统在 需求、设计、编码、测试、实施 等方面的 各种缺陷。

2、为软件的 使用、维护 提供可靠性数据。

3、确认软件是否达到可靠性的定量要求。

抱歉!评论已关闭.