11-软件可靠性

11-软件可靠性(基于第11小时)

软考-系统架构设计师 | 第3篇 架构设计高级知识 出题形式:单项选择题 + 论文题 分值占比:约 2-4 分(选择)


0. 考点分析

本小时专注于软件可靠性,包括基本概念、建模、管理、设计、测试和评价。

考试特点

  • 选择题 2-3 分(概念 + 可靠性设计技术)
  • 论文题高频素材(软件可靠性设计、容错技术、测试方法)
  • 案例题偶尔涉及

1. 核心知识点

1.1 软件可靠性的定义

  • 定义:在规定的时间内,软件不引起系统失效的概率
  • 关键点
    • 该概率是系统输入和系统使用的函数
    • 也是软件中存在的缺陷函数
    • 系统输入将确定是否会遇到已存在的缺陷

1.2 软件可靠性的定量描述

  • 软件的可靠性是在软件使用条件、在规定时间内系统的输入/输出系统使用等变量构成的数学表达式
  • 度量指标:
    • 可靠度
    • 平均失效时间(MTTF)
    • 故障强度(故障率)

1.3 可靠性的目标

  • 软件可靠性是指用户对所使用的软件的性能满意程度的期望
  • 度量:可靠度、平均失效时间、故障强度

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

5 大意义

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

测试目的(教材图 11.3):

  • 验证软件可靠性水平是否达到预期目标
  • 评估、预测软件可靠性
  • 发现软件中的缺陷
  • 为可靠性建模提供数据

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

维度广义可靠性测试狭义可靠性测试
定义为最终评价软件系统可靠性而运用建模、统计、试验、分析和评价等一系列手段对软件系统实施的测试为获取可靠性数据,按预先确定好的测试用例,在软件预期使用环境中,对软件实施的测试
范围全面评价单一执行
手段建模+统计+试验+分析+评价按测试用例执行

1.6 软件可靠性建模

影响软件可靠性的因素

  1. 运行环境
  2. 软件规模
  3. 软件的内部结构
  4. 软件的开发方法和开发环境
  5. 软件的可靠性投入

建模方法(10 种)

类别方法
种子法在软件中故意植入一些缺陷并估计
失效率类基于失效率的模型
曲线拟合类对历史数据进行曲线拟合
可靠性增长跟踪软件随时间演变的可靠性增长
程序结构分析基于代码结构分析
输入域分类按输入空间分类
执行路径分析基于代码执行路径
非齐次泊松过程NHPP 模型(如 Musa 模型)
马尔可夫过程基于状态转移
贝叶斯分析利用先验信息

可靠性模型的组成和特性

教材图 11.4 展示模型组成和特性。建模时需考虑:

  • 模型假设的适用性
  • 预测能力与质量
  • 模型输出值能否满足可靠性评价需求
  • 模型使用的简便性

1.7 软件可靠性管理

5 大阶段(教材图 11.5):

  1. 需求分析阶段:确定可靠性指标
  2. 设计阶段:可靠性设计
  3. 实现阶段:编码规范、代码审查
  4. 测试阶段:可靠性测试
  5. 运行阶段:可靠性评估与改进

1.8 软件可靠性设计(⭐⭐⭐ 核心重点)

4 大设计技术

技术关键点
容错设计恢复块设计、N 版本程序设计、冗余设计
检错技术代价低,需人工干预
降低复杂度设计简化结构、缩短代码、优化数据流
系统配置技术双机热备、服务器集群

容错设计技术

恢复块设计
  • 选择一组操作作为容错设计单元
  • 把普通的程序块变成恢复块(含有备份/重试逻辑的块)
N 版本程序设计
  • 设计多个模块或不同版本
  • 对相同初始条件和相同输入的操作结果实行多数表决
  • 防止某一软件模块/版本故障提供错误服务
冗余设计
  • 在完整软件系统之外,设计不同路径、不同算法或不同实现方式的模块/系统作为备份
  • 出现故障时使用冗余部分替换

检错技术(4 要素)

要素说明
检测对象检测的目标
检测延时从故障发生到被检测出来的时间
实现方式检测的具体方法
处理方式检测到故障后如何处理
  • 检错设计代价低于容错技术和冗余技术
  • 不能自动解决故障,需要人工干预

降低复杂度设计

  • 思想:在保证实现软件功能基础上,简化软件结构、缩短程序代码长度、优化软件数据流向、降低软件复杂度、提高软件可靠性

系统配置技术

双机热备技术
  • 采用"心跳“方法保证主系统与备用系统的联系
  • 三种工作方式:
模式工作方式
双机热备一台工作,一台后备
双机互备两台运行相对独立应用,互为后备
双机双工两台同时运行相同应用,互为后备
  • 数据写入:Active 服务器 + Standby 服务器同时写入,保证即时同步
服务器集群技术
  • 集群内各节点服务器通过内部局域网相互通信
  • 若某节点服务器发生故障,这台服务器运行的应用被另一节点服务器自动接管

1.9 软件可靠性测试

5 大步骤

  1. 可靠性目标的确定
  2. 运行剖面的开发
  3. 测试用例的设计
  4. 测试实施
  5. 测试结果分析

定义软件运行剖面

  • 为软件的使用行为建模
  • 开发使用模型,明确需测试内容

测试用例设计

  • 测试用例要反映实际使用情况
  • 优先测试最重要和最频繁使用的功能
  • 测试用例组成(教材图 11.6):输入数据 + 测试步骤 + 预期结果

可靠性测试数据(4 类)

按时间定义分:

  1. 失效时间数据
  2. 失效间隔时间数据
  3. 分组时间内的失效数
  4. 分组时间的累积失效数

测试记录与测试报告

组成(教材图 11.7):测试环境 + 测试数据 + 测试结果 + 失效分析

1.10 软件可靠性评价

评价过程

  1. 选择可靠性模型
  2. 收集可靠性数据
  3. 可靠性评估和预测

选择可靠性模型的 4 个方面

  1. 模型假设的适用性
  2. 预测的能力与质量
  3. 模型输出值能否满足可靠性的评价需求
  4. 模型使用的简便性

可靠性数据收集的办法

  1. 尽可能早地确定可靠性模型
  2. 数据收集计划要有较强的可操作性
  3. 重视测试数据的分析和整理
  4. 充分利用技术手段(数据库技术)来完成分析和统计

评估和预测

  • 目的:评估软件系统可靠性状况、预测将来一段时间的可靠性水平
  • 手段:以软件可靠性模型分析为主,以失效数据的图形分析法和试探性数据分析技术等为辅

2. 关键概念速查

概念定义/说明常见考点
软件可靠性规定时间内软件不引起系统失效的概率定义
可靠度软件不引起系统失效的概率三大度量指标
MTTF平均失效时间三大度量指标
故障强度单位时间内故障数三大度量指标
恢复块设计选择一组操作作为容错设计单元容错技术
N 版本程序设计多版本多数表决容错技术
冗余设计不同路径/算法/实现方式作备份容错技术
检错技术 4 要素检测对象/检测延时/实现方式/处理方式必考
双机热备一台工作一台后备3 种模式
双机互备两台独立应用互为后备3 种模式
双机双工两台同时运行相同应用3 种模式
服务器集群通过内部局域网互连,故障自动接管vs 双机热备
可靠性建模方法种子法/失效率类/曲线拟合/可靠性增长/程序结构/输入域/执行路径/NHPP/马尔可夫/贝叶斯10 种方法
可靠性测试 5 步骤目标/运行剖面/用例/实施/分析顺序

3. 典型例题

例题 1(检错技术 4 要素)

题目:采用检错设计技术要着重考虑四个要素:检测对象、( )、实现方法和处理方式。

  • A. 检测延时
  • B. 测试结果
  • C. 性能测试
  • D. 功能测试

答案:A

解析:检错设计 4 要素 = 检测对象 + 检测延时 + 实现方式 + 处理方式。


例题 2(双机热备 vs 集群)

题目:( )是通常所说的 Active/Standby 方式,Active 服务器处于工作状态,Standby 服务器处于监控准备状态,服务器数据包括数据库数据同时往两台或多台服务器写入,保证数据的即时同步。

  • A. 双机热备
  • B. 双机互备
  • C. 双机双工
  • D. 服务器集群

答案:A

解析:Active/Standby = 一台工作一台后备 = 双机热备模式


例题 3(容错设计辨析)

题目:关于 N 版本程序设计,下列说法正确的是:

  • A. 设计一个模块的多个不同版本
  • B. 对相同输入的结果实行多数表决
  • C. 自动恢复故障模块
  • D. 适用于所有类型的系统

答案:B

解析:N 版本程序设计 = 设计多个模块或不同版本 + 对相同初始条件和输入的结果多数表决。不能自动恢复,需要表决选择正确结果。


例题 4(可靠性建模方法)

题目:以下不属于软件可靠性建模方法的是:

  • A. 种子法
  • B. 失效率类
  • C. 曲线拟合类
  • D. 故障树分析法

答案:D

解析:建模方法包括种子法/失效率类/曲线拟合类/可靠性增长/程序结构分析/输入域分类/执行路径分析/NHPP/马尔可夫过程/贝叶斯分析,故障树分析法是硬件可靠性方法。

4. 高频考点

4.1 必须记住的核心要点

  1. 可靠性定义:规定时间内不引起系统失效的概率
  2. 三大度量指标:可靠度、平均失效时间(MTTF)、故障强度
  3. 可靠性测试 5 大意义:灾难后果、高失效比例、技术不成熟、费用增长、社会影响
  4. 可靠性设计 4 大技术:容错设计、检错技术、降低复杂度设计、系统配置技术
  5. 容错设计 3 种:恢复块设计、N 版本程序设计(多数表决)、冗余设计
  6. 检错技术 4 要素:检测对象、检测延时、实现方式、处理方式
  7. 双机热备 3 模式
    • 双机热备(一工一备)
    • 双机互备(两台独立应用,互为后备)
    • 双机双工(两台同时运行相同应用)
  8. 集群 vs 双机:集群通过内部局域网通信,故障自动接管
  9. 建模方法 10 种:种子/失效率/曲线拟合/可靠性增长/程序结构/输入域/执行路径/NHPP/马尔可夫/贝叶斯
  10. 可靠性评价 3 步:选模型→收数据→评预测
  11. 测试实施 5 步骤:目标→运行剖面→用例设计→实施→结果分析

4.2 易混淆对比

对比项区别
容错 vs 检错容错自动处理错误,检错需人工干预
容错 vs 冗余容错是处理错误的策略,冗余是备份的实现方式
恢复块 vs N 版本恢复块是重试,N 版本是多版本表决
双机热备 vs 双机互备热备是相同应用(一工一备),互备是不同应用互为备份
双机热备 vs 双机双工热备是一工一备,双工是两台同时工作(互为后备)
集群 vs 双机集群是多节点,通过 LAN 通信,自动接管
广义 vs 狭义可靠性测试广义包含建模+统计+试验+分析+评价,狭义只按用例执行
性能 vs 可靠性性能是响应能力,可靠性是无故障运行能力
鲁棒性 vs 容错鲁棒性是不产生影响,容错是自行修正
使用 Hugo 构建
主题 StackJimmy 设计