ONEPSOFT | 软考学习知识库
deepread8|论文8 软件可靠性设计(定义 / 定量描述 / 容错三技术)详解
对应清单条目:#8 论文·软件可靠性设计(定义/MTTF/MTTR/MTBF/容错:恢复块·N 版本·冗余)
教材来源:《系统架构设计师教程(第 2 版)》第 9 章 软件可靠性(9.1 概念、9.2 影响因素、9.4 可靠性设计)
教材校准:第 9 章实际 9.3 为「可靠性管理」,串联/并联可靠度计算不在第 9 章(属硬件可靠性,见第 1 章)。本文据第 9 章真实结构讲 " 可靠性定义 + 定量 + 容错设计 "。
一、知识点定位
一句话定位:软件可靠性 = " 规定条件 + 规定时间 + 完成规定功能的能力 ";量化靠 MTTF(无失效时长)/MTTR(恢复时长)/MTBF=MTTF+MTTR;设计靠容错(恢复块/N 版本/冗余)保证失效后果可控。
二、教材原文精摘(第 9 章,原封不动)
【软件可靠性定义】原文:
软件可靠性是软件产品在规定的条件下和规定的时间区间完成规定功能的能力。规定的条件是指直接与软件运行相关的计算机系统的状态和输入条件;规定的时间区间是指软件的实际运行时间区间;规定功能是指为提供给定服务必须具备的功能。
IEEE 1983/国标 GB/T-11457:在规定条件下、规定时间内,软件不引起系统失效的概率。
软件与硬件可靠性 4 不同:①复杂性(设计错误是软件失效主因);②物理退化(软件无物理退化,正确性⇔可靠性);③唯一性(软件复制不改本体);④版本更新快。
【定量描述】原文:
失效概率 F(t):F(0)=0,单调递增,F(+∞)=1。
可靠度 R(t)=1-F(t);R(0)=1,R(+∞)=0。
失效强度 f(t):单位时间出现失效的概率。
MTTF(平均失效前时间):不可修复系统从 t=0 到失效的期望运行时长。
MTTR(平均恢复前时间):从故障到修复成功的期望时间,越短易恢复性越好。
MTBF(平均故障间隔时间)= MTTF + MTTR(可靠度服从指数分布时)。
【影响可靠性因素 9.2】原文:
①运行剖面 (环境);②软件规模;③软件内部结构(越复杂缺陷越多);④开发方法与环境(结构化比非结构少缺陷);⑤可靠性投入(设计/管理/测试/评价的人力资金)。
【可靠性设计 9.4】原文:
容错设计技术(失效后果严重时用):常用恢复块设计、N 版本程序设计、冗余设计 3 种。
①恢复块设计:一组操作作容错单元,含若干功能相同、设计差异的程序块文本,构成 " 动态冗余 "。
②N 版本程序设计:设计多个模块/版本,对相同初始条件和输入的结果实行多数表决;须保证设计全过程不相关性。
③冗余设计:在一套完整软件外,设计不同路径/算法/实现方法的模块作备份。
检错技术:故障后及时发现报警,代价低于容错,但不能自动解决故障;要素:检测对象/延时/实现/处理方式。
降低复杂度设计:结构越简单可靠性越好。
三、系统解读(逐段讲透)
MTBF=MTTF+MTTR 必背。可用性 ≈ MTTF/(MTTF+MTTR)。核心一句话总结:可靠性=正确完成功能的能力;MTBF=MTTF+MTTR 量化;容错三技术(恢复块动态冗余 / N 版本多数表决 / 冗余备份)保证失效后果可控;降复杂度是最朴素有效的可靠性手段。
四、工程实践举例(土木工程视角)
" 结构可靠性/安全冗余 " 与软件可靠性同构:
知识点 ↔ 工程实践 对照表
| 教材知识点要素 | 你的实践场景对应 | 映射说明 |
|---|---|---|
| 软件可靠性三要素 | 结构可靠度(条件/时间/功能) | 同一定义骨架 |
| MTTF / MTTR / MTBF | 无故障工期/抢修工期/检修间隔 | MTBF=MTTF+MTTR |
| 恢复块(动态冗余) | 备用施工工艺切换 | 运行时切备用 |
| N 版本(多数表决) | 多套独立计算书表决 | 设计不相关 |
| 冗余设计 | 双回路/备用设备 | 不同路径备份 |
| 检错技术 | 监测报警 | 能报不能修 |
| 降低复杂度 | 简化结构 | 少构件少节点 |
| 影响可靠性因素 | 荷载/体量/复杂/方法/投入 | 5 因素一一对应 |
当知识点涉及容错技术对比时,补充结构:
流程图(结构化呈现)
对应关系
| 节点A | 关系 | 节点B |
|---|---|---|
| 失效后果严重 | 代价低 | 检错:报警不自愈 |
运维视角提示:MTTR(恢复时长)是运维最核心的 KPI——架构做容错(恢复块/N 版本/冗余)本质就是压低 MTTR、抬高可用性,让你半夜不用爬起来救火。可靠性设计阶段就定下了运维的 " 救火频率 ",容错=运维友好的硬保障。