Hour 11 · Review Notes

软件可靠性
基础知识

对应教程:第九章 题型:单选题 2–3 分 题型:论文
重点
SOFTWARE
RELIABILITY
01

软件可靠性基本概念

Fundamental Concepts

1.1软件可靠性的定义★★★

软件可靠性是指在规定的时间内,软件不引起系统失效的概率。该概率是系统输入系统使用的函数,也是软件中存在的缺陷函数;系统输入将确定是否会遇到已存在的缺陷。

该定义的三个特点

1.2软件可靠性的定量描述★★★

考点

规定时间的三种形式执行时间最适合度量软件的可靠性。

指标 定义
规定时间 分为三种:① 自然时间;② 运行时间;③ 执行时间。其中执行时间最适合度量软件的可靠性
失效概率 软件从运行开始算起,运行到某一时间 t,出现失效的概率是一个随机函数,称为失效概率。
可靠度 软件在规定条件下、规定时间内不失效的概率。
失效强度 单位时间内软件失效的概率。
失效率 也称风险函数条件失效强度,在运行系统未出现失效的情况下,单位时间软件系统出现失效的概率。
平均无失效时间 软件运行后,到下一次失效的平均时间。更直观地反映软件的可靠度

1.3可靠性的目标

概念

软件可靠性是指用户对所使用的软件的性能满意程度的期望。可以用 可靠度平均失效时间故障强度 等来描述。

1.4可靠性测试的意义和目的

测试的意义(五点)

  1. 软件失效可能造成灾难性的后果。
  2. 软件的失效在整个计算机系统失效中的比例较高
  3. 相比硬件可靠性技术,软件可靠性技术不成熟
  4. 软件可靠性问题会造成软件费用增长
  5. 系统对软件的依赖性强,对生产活动和社会生活影响日益增大。

测试的目的(三点)

1.5广义的可靠性测试 vs 狭义的可靠性测试

分类 定义
广义 为了最终评价软件系统的可靠性而运用建模、统计、试验、分析和评价等一系列手段对软件系统实施的一种测试。
狭义 为了获取可靠性数据,按预先确定好的测试用例,在软件预期使用环境中,对软件实施的一种测试。
02

软件可靠性建模

Reliability Modeling

2.1影响可靠性的因素

软件可靠性的影响因素主要来自以下几个方面:

2.2软件可靠性模型的组成与特性

模型的组成要素

模型应具备的特性

2.3软件可靠性建模方法

  1. 确定预测的目标,明确要度量的可靠性指标。
  2. 选择适合该项目特征的可靠性模型。
  3. 收集可靠性数据(失效数据、运行剖面等)。
  4. 使用收集的数据估计模型参数。
  5. 用估计出来的模型进行可靠性度量与预测。
03

软件可靠性管理

Reliability Management

软件可靠性管理贯穿软件生命周期的六个阶段:

01
需求分析阶段
确定可靠性目标,识别关键功能,进行可靠性需求规约。
02
概要设计阶段
进行可靠性分配,制定容错策略,确定可靠性设计原则。
03
详细设计阶段
详细设计容错、检错、降低复杂度等可靠性设计手段。
04
编码阶段
遵循可靠性编程规范,进行代码审查,使用静态分析工具。
05
测试阶段
实施可靠性测试,收集失效数据,进行可靠性度量与预测。
06
实施阶段
监控运行数据,持续评估可靠性,根据需要进行可靠性维护。
记忆要点: 需求 → 概要 → 详细 → 编码 → 测试 → 实施。每一阶段都有可靠性活动,越早投入收益越大
04

软件可靠性设计

Reliability Design

4.1容错设计技术★★

容错的核心思想:当软件出现错误时,系统仍能继续运行。常见的四种容错技术:

技术 核心思想
恢复块设计 选择一组操作作为容错设计单元,把单一的操作变成"主块 + 验证测试 + 后备块"结构,主块失败时切换到后备块。
N 版本程序设计 由 N 个独立小组开发功能相同的 N 个软件版本,运行时并行执行并表决,少数服从多数。
冗余设计 通过硬件冗余、信息冗余、时间冗余等方式,对关键模块做备份,避免单点失效。
防错性程序设计 程序中包含错误检查代码,对输入、输出、中间状态进行校验,避免错误传播。

4.2检错技术

容错设计成本高,对可靠性要求不太高的部分可采用检错技术。检错设计需考虑四个要素:

4.3降低复杂度设计

原则

软件的复杂度越高,可靠性越低。在保证软件实现功能的前提下,应尽可能简化软件结构

常用手段:

4.4系统配置技术

通过系统层面的配置策略提高可靠性,常见手段:

05

软件可靠性测试

Reliability Testing

5.1软件可靠性测试概述

软件可靠性测试与一般功能测试不同,重点在于按照真实使用模式进行测试,并从测试中获取可靠性度量数据。包含四个主要步骤:

  1. 定义软件运行剖面。
  2. 设计可靠性测试用例。
  3. 实施可靠性测试。
  4. 评估软件可靠性。

5.2定义软件运行剖面★★

概念

运行剖面(Operational Profile):对软件系统使用条件的定量描述,即软件输入空间的概率分布

运行剖面定义包含:

5.3软件可靠性测试用例设计

可靠性测试用例的设计应当:

5.4软件可靠性测试的实施

  1. 制定测试计划:明确测试目标、范围、资源安排、进度等。
  2. 准备测试环境:搭建与实际运行环境一致的测试环境。
  3. 执行测试用例:按运行剖面分布执行测试。
  4. 记录测试结果:详细记录失效现象、失效时间、失效模式。
  5. 缺陷分析与修复:定位失效原因并修复,跟踪验证。
06

软件可靠性评价

Reliability Evaluation

6.1软件可靠性评价概念

概念

软件可靠性评价是运用统计方法对软件可靠性测试和软件运行获取的数据进行处理,并评价软件可靠性的过程。

评价的四个主要步骤:

  1. 选择可靠性模型。
  2. 收集可靠性数据。
  3. 可靠性评估和预测。
  4. 验证评估结果。

6.2如何选择可靠性模型

选择模型时考虑的因素:

6.3可靠性数据的收集

数据收集是可靠性评价的基础,应注意:

6.4软件可靠性的评估和预测

常见的可靠性度量指标包括:

论文方向提示

论文题中常考:① 论软件可靠性设计(容错、检错、降低复杂度、系统配置);② 论软件可靠性测试(运行剖面、测试用例设计);③ 论软件可靠性评价(模型选择、数据收集、评估预测)。答题套路:背景 → 项目简介 → 具体技术应用 → 实施效果。

高频考点速查

Exam Hot Spots
考点 题型 速记
可靠性定义 单选 规定时间内不失效的概率;缺陷 → 失效;可量化
规定时间 单选 自然时间、运行时间、执行时间(最适合度量)
失效率 单选 = 风险函数 = 条件失效强度
MTBF 单选 平均无失效时间,最直观反映可靠度
广义 vs 狭义测试 单选 广义:评价为目的;狭义:获取数据为目的
容错四技术 论文 恢复块、N 版本、冗余设计、防错性程序设计
运行剖面 论文 输入空间的概率分布,是可靠性测试的核心
管理六阶段 论文 需求 → 概要 → 详细 → 编码 → 测试 → 实施