系统架构设计师备考站2027 上半年 · 通勤版 ⌕搜索
本页目录 · 5 节
  1. 一、知识框架
  2. 二、必背要点
  3. 9.1 基本概念
  4. 9.2 可靠性建模
  5. 9.3 可靠性管理
  6. 9.4 可靠性设计
  7. 9.5 可靠性测试
  8. 9.6 可靠性评价
  9. 三、易混淆概念对比
  10. 四、常见考法与出题角度
  11. 五、速记与自测

第 9 章 软件可靠性基础知识

对应大纲:科目 1-8 软件可靠性基础知识|教材 P305–P329|优先级 ★★★★|综合知识估分 3~5 分
读法:先背定义与 4 个公式,再用「建模—管理—设计—测试—评价」一条线串起来;容错三法是案例与论文的高频素材。


一、知识框架

软件可靠性基础知识
├─ 9.1 基本概念
│   ├─ 定义:规定条件、规定时间、规定功能
│   ├─ 定量描述:R(t)、F(t)、λ(t)、MTBF、MTTF、MTTR、A
│   ├─ 可靠性目标与测试意义
│   └─ 广义/狭义可靠性测试
├─ 9.2 可靠性建模
│   ├─ 影响因素:运行剖面、缺陷引入与排除、环境
│   ├─ 建模方法:失效时间、失效计数、程序结构
│   └─ 模型分类:种子法、失效率类、曲线拟合、马尔可夫、贝叶斯
├─ 9.3 可靠性管理:大纲、组织、计划、监控、数据
├─ 9.4 可靠性设计
│   ├─ 容错:N 版本、恢复块、防卫式
│   ├─ 检错:断言、日志、校验、心跳
│   ├─ 降低复杂度:模块化、信息隐藏
│   └─ 系统配置:双机热备、集群、冗余
├─ 9.5 可靠性测试
│   ├─ 运行剖面与构造步骤
│   ├─ 用例设计
│   └─ 测试实施
└─ 9.6 可靠性评价:选模型→收数据→评估预测

二、必背要点

9.1 基本概念

定义:软件可靠性是软件在规定条件下、规定时间内完成规定功能的能力。三个「规定」缺一不可,是判断题的常设陷阱。

定量描述

指标含义要点
可靠度 R(t)规定时间内完成功能的概率单调递减,0≤R(t)≤1
失效概率 F(t)规定时间内发生失效的概率F(t)=1−R(t)
失效率 λ(t)单位时间发生失效的概率软件随排错总体下降
MTBF平均故障间隔时间针对可修复系统
MTTF平均无故障时间针对不可修复系统
MTTR平均修复时间反映恢复能力
可用度 A任意时刻可提供服务的比例A=MTBF/(MTBF+MTTR)

两个必会公式:

R(t) = e^(−λt)            (失效率恒定时)
A = MTBF / (MTBF + MTTR)  (稳态可用度)

注意:软件没有硬件那种磨损失效,借用的浴盆曲线只对应「早期失效」与「偶然失效」两段;随着缺陷被排除,失效率总体下降,不会因使用时长自行回升。

可靠性目标:用 MTBF、失效率、可用度、残余缺陷密度等可测量指标表达,依据业务关键程度、投入成本与用户容忍度设定,并能在测试中验证。

可靠性测试的意义:发现缺陷、验证指标是否达标、支持发布决策、度量可靠性增长、降低上线后的运维风险。

广义与狭义可靠性测试

类型范围内容
狭义验证阶段验证软件是否达到规定的可靠性要求,即可靠性验证测试
广义全生命周期以发现缺陷、提升可靠性为目的,含增长测试与验证测试

9.2 可靠性建模

影响因素:运行剖面是否真实、缺陷引入率与排除率、测试环境与运行环境差异、失效数据的完整性与独立性、软件规模与复杂度。

建模方法:基于失效时间(时间域)、基于失效计数(失效数据域)、基于程序结构(构件可靠度合成)。建模的共同前提是失效数据可信,因此测试剖面与数据记录规范比模型选择更关键。

模型分类

类别代表或思路适用与特点
种子法植入已知缺陷,按捕获比例估算总数可估残余缺陷,依赖植入假设
失效率类J-M、Musa、Goel-Okumoto失效数据随时间下降,最常用
曲线拟合用统计曲线拟合失效数据简单直观,外推能力弱
马尔可夫状态转移描述可靠性与可用性适合冗余、维修系统
贝叶斯先验分布加实测数据更新小样本有效,依赖先验质量
结构模型由构件可靠度按串并联合成系统可靠度适合构件化、可分解系统

9.3 可靠性管理

  • 可靠性大纲:明确目标、指标、活动与验收准则。
  • 组织与职责:设可靠性负责人,明确设计、测试、运维分工。
  • 计划:把可靠性活动纳入项目计划与里程碑。
  • 监控与评审:跟踪失效率、缺陷趋势,设置阶段评审点。
  • 数据收集:统一记录失效时间、现象、原因与修复,形成闭环。

9.4 可靠性设计

技术类别核心思想典型手段
容错用冗余掩盖故障,系统仍正确输出N 版本、恢复块、防卫式
检错尽早发现故障并隔离断言、日志、校验和、心跳
降低复杂度减少出错机会模块化、信息隐藏、简化控制流
系统配置用部署冗余提升整体可用双机热备、集群、冗余网络

容错三法对比

方法做法特点
N 版本程序设计N≥3 个团队独立开发同一规格,运行后表决可靠性高、成本最高、需独立开发
恢复块主块执行后验收测试,失败则回滚执行备块串行冗余、成本较低、切换有延迟
防卫式程序设计加前置检查、断言与异常处理,防错误扩散不增冗余、成本低、只能防可预见错误

系统配置:双机热备(主备切换)、双机互备(互为备份)、集群(负载均衡加故障转移)、冗余电源与网络链路。

9.5 可靠性测试

运行剖面:对软件使用方式的定量描述,说明有哪些用户与使用模式、哪些功能与输入、各自发生的概率。

构造步骤:确定用户类型与使用模式 → 划分功能与输入空间 → 估计各输入发生概率 → 生成测试用例 → 按概率分配执行次数。

用例设计:覆盖高频路径,兼顾边界与异常,用例比例与剖面概率一致,保证样本代表性。

实施:搭建接近真实运行的仿真环境,按剖面执行并记录失效时间、类型与复现条件,再做统计分析与反馈。

9.6 可靠性评价

步骤做什么输出
选择模型按数据形态与阶段选模型适用模型与假设
收集数据记录失效时间、失效数、执行时间有效数据集
评估预测估计当前可靠度、MTBF、残余缺陷达标结论与发布建议

三、易混淆概念对比

AB关键区别
可靠性可用性可靠性看规定时间不失效;可用性看任意时刻可服务比例
MTTFMTBFMTTF 用于不可修产品;MTBF 用于可修系统,含修复间隔
失效率失效概率失效率是单位时间的失效速率;失效概率是一段时间的累计
广义可靠性测试狭义可靠性测试广义含增长测试与验证测试;狭义仅指验证是否达标的验证测试
可靠性增长测试可靠性验证测试前者找缺陷促改进;后者验证是否达到规定指标
N 版本恢复块N 版本并行冗余加表决;恢复块串行冗余加回滚
容错检错容错让系统带故障继续工作;检错只发现并隔离故障
运行剖面测试用例剖面是使用概率分布;用例是按剖面生成的具体输入
软件可靠性软件安全性可靠性关注不出失效;安全性关注失效不造成危害
可靠性设计可靠性测试设计在前端注入能力;测试在后端验证与度量

四、常见考法与出题角度

题型出题角度典型问法答题要点
单选指标辨析「可修复系统的平均寿命指标是」MTBF
单选公式计算给出 MTBF、MTTR 求可用度A=MTBF/(MTBF+MTTR)
单选模型分类「J-M 模型属于哪类」失效率类
单选容错方法「N 版本程序设计至少需要几个版本」3 个,且独立开发
单选运行剖面「运行剖面的核心作用」按使用概率分布生成测试
简答设计技术「提高可靠性的设计手段有哪些」容错、检错、降复杂度、系统配置四类
简答评价步骤「可靠性评价分哪三步」选模型、收数据、评估预测
案例题角度可靠性方案给出关键系统问「如何保证可靠性」设计上用冗余与容错,测试上用剖面,管理上闭环
论文可用角度正文举例「论文写高可靠系统时怎么用本章」可写:「核心交易采用 N 版本程序设计,三套独立实现并行运行并多数表决,配合双机热备将年可用度提升到 99.99%。」

五、速记与自测

速记

  • 定义三要素:条件、时间、功能
  • 可修看 MTBF,不可修看 MTTF
  • 可用度:MTBF 除以两者之和
  • 设计四类:容、检、简、配
  • 容错三法:N、恢、防
  • 评价三步:选、收、评

自测

  1. 某系统 MTBF 为 990 小时,MTTR 为 10 小时,可用度是多少?
  2. 失效率恒为 0.001/小时,运行 100 小时的可靠度约为多少?
  3. N 版本程序设计至少需要几个独立版本,为什么?

答案:1. 990/1000=99%;2. e^(−0.1)≈0.905;3. 3 个,两两比较才能多数表决并容忍一个版本出错。