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

核心知识点

1. 软件可靠性基本概念

  • 定义:软件在规定的条件下和规定的时间内,完成规定功能的能力
  • 与硬件可靠性区别:软件不会"磨损老化",故障主要是设计缺陷
  • 三大属性
    1. 规定的条件:运行环境、使用方法
    2. 规定的时间:时间区间
    3. 规定的功能:需求规格

2. 可靠性相关时间指标

  • MTTF(Mean Time To Failure):平均无故障时间
  • MTTR(Mean Time To Repair):平均修复时间
  • MTBF(Mean Time Between Failures):平均故障间隔时间 = MTTF + MTTR
  • MTTD(Mean Time To Detect):平均故障检测时间
  • 考试角度:选择题常考这些指标的区分和计算

3. 可用性计算

  • 公式:可用性 = MTTF / (MTTF + MTTR) = MTTF / MTBF
  • 含义:可用性是系统正常工作时间占比

4. 软件可靠性模型

  • 硬件可靠性:浴盆曲线(早期故障期→偶然故障期→损耗故障期)
  • 软件可靠性模型分类
    • 故障率模型:Jelinski-Moranda模型、Goel-Okumoto模型
    • 错误植入模型:Mills模型
    • 基于输入域模型:Nelson模型

5. 软件可靠性管理

  • 各阶段工作
    • 需求分析阶段:确定可靠性需求、制定可靠性计划
    • 设计阶段:可靠性设计(容错、冗余)、可靠性分配
    • 编码阶段:代码审查、单元测试
    • 测试阶段:可靠性建模、可靠性测试、可靠性增长
  • ⚠️ 可靠性建模不在需求分析阶段(2024上考)

6. 容错技术

  • N版本程序设计:N个独立团队开发相同功能,投票表决
  • 恢复块方法:主块+后备块,主块失败切换后备块
  • 防卫式程序设计:输入检查、异常处理

7. 软件可靠性评价

  • 评价过程
    1. 确定可靠性目标
    2. 选择可靠性模型
    3. 收集故障数据
    4. 参数估计
    5. 可靠性预测
    6. 验证达标情况

真题考点映射

| 真题 | 考点 | 章节 | |------|------|------| | 2024上选择题第43题 | 可靠性建模不在需求分析阶段 | 09-可靠性 | | 2024上选择题第56题 | MTTD是平均故障检测时间 | 09-可靠性 | | 2023下论文 | 软件可靠性评价 | 09-可靠性 | | 2024上选择题第41题 | 可用性=正常工作时间占比 | 09-可靠性 |

易错点/陷阱

  • 可靠性建模不在需求分析阶段——常作为错误选项
  • MTBF = MTTF + MTTR,不要混淆
  • 软件不会"磨损老化",不要和硬件浴盆曲线混淆
  • 可用性计算公式中分子是MTTF不是MTBF

记忆口诀

  • 三个时间指标:TF故障发生、TR故障修复、BF故障间隔(BF=TF+TR)
  • 可用性:TF/(TF+TR)
  • 容错方法:N版投票、恢复块切换、防卫式检查