系统架构设计师 9:软件可靠性

一、软件可靠性

软件可靠性是软件产品在规定的条件下和规定的时间区间完成规定功能的能力。

1 软件可靠性的定量描述

  1. 规定时间。

使用执行时间最为准确。

执行时间:软件运行过程中,CPU执行程序指令所用的时间总和。

  1. 失效概率。

用 F(t) 表示,可以看作关于时间 t 的一个连续、可导的函数。

  1. 可靠度。

可靠度就是软件系统在规定的条件下、规定的时间内不发生失效的概率。

用 R(t) 表示,R(t) = 1 - F(t)。

  1. 失效强度。

失效强度是指单位时间软件系统出现失效的概率。

用 f(t) 表示,f(t) = F'(t)。

  1. 平均失效前时间。

MTTF,定义为从 t=0 时到故障发生时系统的持续运行时间的期望值。

MTTF = R(t)在(0, ∞)上的积分。

  1. 平均恢复前时间。

MTTR,就是从出现故障到修复成功中间的这段时间。MTTR越小表示易恢复性越好。

  1. 平均故障间隔时间。

MTBF,失效或维护中所需的平均时间。

对于可靠度服从指数分布的系统,从任一时刻 t₀ 到达故障的期望时间都是相等的,因此有 MTBF = MTTF + MTTR。

2 可靠性目标

2.1 失效严重程度类

失效严重程度类就是对用户具有相同程度影响的失效集合。

(通俗地讲,就是把失效分为致命、严重、一般 等级)

2.2 可靠性目标参考

|-------------|-------------|----------|-------------|
| 失效严重程度类 | 可靠性要求/% | 失效强度 | 平均无失效时间 |
| 1 | 99.9999 | 10⁻⁶ | 114年 |
| 2 | 99.99 | 10⁻⁴ | 417天 |
| 3 | 99 | 10⁻¹ | 4天 |
| 4 | 90 | 1 | 9小时 |

3 可靠性测试

  1. 发现软件系统在需求、设计、编码、测试和实施等方面的各种缺陷。

  2. 为软件的使用和维护提供可靠性数据。

  3. 确认软件是否达到可靠性的定量要求。

二、软件可靠性模型

文献记载的软件可靠性统计分析模型有将近百种,这些模型大致可分为以下十类:

  1. 种子法模型。

  2. 失效率类模型。

  3. 曲线拟合类模型。

  4. 可靠性增长模型。

  5. 程序结构分析模型。

  6. 输入域分类模型。

  7. 执行路径分析方法模型。

  8. 非齐次泊松过程模型。

  9. 马尔可夫过程模型。

  10. 贝叶斯模型。

三、软件可靠性管理

软件可靠性管理的内容包括软件工程各个阶段的可靠性活动的目标、计划、进度、任务和修正措施等。

软件工程各个阶段可能进行的主要软件可靠性活动如下:

|------------|----------------------------------------------------------------------------------------------------------------|
| 需求分析阶段 | (1) 确定软件的可靠性目标。(2) 分析可能影响可靠性的因素。(3) 确定可靠性的验收标准。(4) 制定可靠性管理框架。(5) 制定可靠性文档编写规范。(6) 制订可靠性活动初步计划。(7) 确定可靠性数据收集规范。 |
| 概要设计阶段 | (1) 确定可靠性度量。(2) 制定详细的可靠性验收方案。(3) 可靠性设计。(4) 收集可靠性数据。(5) 调整可靠性活动计划。(6) 明确后续阶段的可靠性活动的详细计划。(7) 编制可靠性文档。 |
| 详细设计阶段 | (1) 可靠性设计。(2) 可靠性预测(确定可靠性度量估计值)。(3) 调整可靠性活动计划。(4) 收集可靠性数据。(5) 明确后续阶段的可靠性活动的详细计划。(6) 编制可靠性文档。 |
| 编码阶段 | (1) 可靠性测试(含于单元测试)。(2) 排错。(3) 调整可靠性活动计划。(4) 收集可靠性数据。(5) 明确后续阶段的可靠性活动的详细计划。(6) 编制可靠性文档。 |
| 测试阶段 | (1) 可靠性测试(含于集成测试、系统测试)。(2) 排错。(3) 可靠性建模。(4) 可靠性评价。(5) 调整可靠性活动计划。(6) 收集可靠性数据。(7) 明确后续阶段的可靠性活动的详细计划。(8) 编制可靠性文档。 |
| 实施阶段 | (1) 可靠性测试(含于验收测试)。(2) 排错。(3) 收集可靠性数据。(4) 调整可靠性模型。(5) 可靠性评价。(6) 编制可靠性文档。 |

四、软件可靠性设计

实践证明,保障软件可靠性最有效、最经济、最重要的手段是在软件设计阶段采取措施进行可靠性控制。

一般来说,被认可的且具有应用前景的软件可靠性设计技术主要有容错设计、检错设计和降低复杂度设计等技术。

1 容错设计技术

对于软件失效后果特别严重的场合,可采用容错设计方法。

常用的软件容错技术主要有恢复块设计、N版本程序设计和冗余设计三种方法。

1.1 恢复块设计

程序的执行过程可以看成是由一系列操作构成的,这些操作又可由更小的操作构成。恢复块设计就是选择一组操作作为容错设计单元,从而把普通的程序块变成恢复块。被选择用来构造恢复块的程序块可以是模块、过程、子程序和程序段等。

1.2 N版本程序设计

N版本程序的核心是通过设计出多个模块或不同版本,对于相同初始条件和相同输入的操作结果,实行多数表决,防止其中某一软件模块/版本的故障提供错误的服务,以实现软件容错。

1.3 冗余设计

软件的冗余设计技术实现的原理是在一套完整的软件系统之外,设计一种不同路径、不同算法或不同实现方法的模块或系统作为备份,在出现故障时可以使用冗余的部分进行替换,从而维持软件系统的正常运行。

2 检错技术

在软件系统中,对无须在线容错的场景,一般采用检错技术,在软件出现故障后能及时发现并报警,提醒维护人员进行处理。

采用检错设计技术要着重考虑几个要素:

  1. 检测对象。

  2. 检测延时。

  3. 实现方式。

判断返回结果、计算运行时间等。

  1. 处理方式。

查出故障-停止软件系统运行-报警。

3 降低复杂度设计

有研究表明,当软件的复杂度超过一定界限时,软件缺陷数会急剧上升,软件的可靠性急剧下降。因此,在设计时就应考虑降低软件的复杂性,使之处于一个合理的阈值之内,这是提高软件可靠性的有效方法。

降低复杂度设计的思想就是在保证实现软件功能的基础上,简化软件结构,缩短程序代码长度,优化软件数据流向,降低软件复杂度,从而提高软件可靠性。

4 系统配置技术

4.1 双机热备技术

双机热备技术是一种软硬件结合的较高容错应用方案。该方案是由两台服务器系统和一个外接共享磁盘阵列柜和相应的双机热备份软件组成。

在这个容错方案中,操作系统和应用程序安装在两台服务器的本地系统盘上,整个网络系统的数据是通过磁盘阵列集中管理和数据备份的。用户的数据存放在外接共享磁盘阵列中,在一台服务器出现故障时,备机主动替代主机工作,保证网络服务不间断。

双机热备方案中,根据两台服务器的工作方式可以有三种不同的工作模式,即:

  1. 双机热备模式。

  2. 双机互备模式。

  3. 双机双工模式。

心跳机制

双机热备系统采用"心跳"方法保证主系统与备用系统的联系。所谓"心跳",指的是主从系统之间相互按照一定的时间间隔发送通信信号,表明各自系统当前的运行状态。一旦"心跳"信号表明主机系统发生故障,或者备用系统无法收到主机系统的"心跳"信号,则系统的高可用性管理软件认为主机系统发生故障,立即将系统资源转移到备用系统上,备用系统替代主机工作,以保证系统正常运行和网络服务不间断。

4.2 服务器集群技术

集群技术是指一组相互独立的服务器在网络中组合成为单一的系统工作,并以单一系统的模式加以管理。此单一系统为客户工作站提供高可靠性的服务。

五、软件可靠性测试

1 可靠性测试用例设计

由于可靠性测试的主要目的是评估软件系统的可靠性,因此,除了常规的测试用例集仍然适用外,还要着重考虑和可靠性密切相关的一些特殊情况。在测试中,可以考虑进行"强化输入",即比正常输入更恶劣(合理程度的恶劣)的输入。

|--------|--------------|---------------------------------------------------------------------------|
| 序号 | 测试目的 | 描述 |
| 1 | 屏蔽用户操作错误 | 考虑对用户常见的误操作的提示和屏蔽情况 |
| 2 | 错误提示的准确性 | 对用户的错误提示准确描述 |
| 3 | 错误是否导致系统异常退出 | 有无操作错误引起系统异常退出的情况 |
| 4 | 数据可靠性 | 系统应对输入的数据进行有效性检查,对冗余的数据进行过滤、校验和清洗,保证数据的正确性和可靠性 |
| 5 | 异常情况的影响 | 考察数据和系统的受影响程度,若受损,是否提供补救工具、补救的情况如何。异常情况包括: (1) 硬件效障 (2) 网络故障 (3) 部分软件模块失效 |

2 软件可靠性测试报告

测试活动结束后要编写《软件可靠性测试报告》,对测试用例及测试结果在测试报告中加以总结归纳。

测试报告应具备如下内容:

  1. 软件产品标识。

  2. 测试环境配置(硬件和软件)。

  3. 测试依据。

  4. 测试结果。

  5. 测试问题。

  6. 测试时间。

六、软件可靠性评价

  1. 选择可靠性模型。

  2. 收集可靠性数据。

  3. 可靠性评估和预测。

相关推荐
rolt11 小时前
[图解]SysML和EA建模住宅安全系统-12-内部块图
架构师·mbse·系统工程
rolt21 小时前
[图解]企业应用架构模式2024新译本讲解21-数据映射器3
架构·架构师
rolt2 天前
[图解]企业应用架构模式2024新译本讲解20-数据映射器2
架构·产品经理·架构师
rolt2 天前
[图解]SysML和EA建模住宅安全系统-10-活动图 入侵者应急响应
架构师·mbse·系统工程
rolt3 天前
[图解]SysML和EA建模住宅安全系统-09-流程指南·分析系统需求
架构师·mbse·系统工程
rolt4 天前
[图解]SysML和EA建模住宅安全系统-05-参数图
产品经理·架构师·mbse·系统工程
rolt4 天前
[图解]企业应用架构模式2024新译本讲解19-数据映射器1
架构师·uml
rolt9 天前
[图解]建模相关的基础知识-19
产品经理·架构师·uml
rolt10 天前
[图解]SysML和EA建模住宅安全系统-02-现有运营领域-块定义图
产品经理·架构师·mbse·系统工程
rolt10 天前
[图解]企业应用架构模式2024新译本讲解17-活动记录1
架构·产品经理·架构师·uml