1、软件可靠性概念
软件可靠性 (Software Reliability) 是软件产品在规定的条件下和规定的时间区间完成规定功能的能力。规定的条件是指直接与软件运行相关的使用该软件的计算机系统的状态和软件的输入条件,或统称为软件运行时的外部输入条件;规定的时间区间是指软件的实际运行时间区间;规定功能是指为提供给定的服务,软件产品所必须具备的功能。
软件可靠性的框架性定义主要包含了四个关键要素:规定的时间、规定的条件、所要求的功能以及软件可靠性的特定描述特点。
软件可靠性的定量描述包括:规定时间、失效概率、可靠度、失效强度、平均失效前时间(MTTF)、平均恢复前时间(MTTR) 和 平均故障间隔时间(MTBF) 。 (MTBF 故障间隔时间,第一次故障到第二次故障的间隔时间,MTTF 平均无故障时间,MTTR 平均故障修理时间,MTBF = MTTF + MTTR ,我们认为MTTR一般时间会很短,那么MTBF ≈ MTTF)。
真题:平均失效等待时间(mean time to failure,MTTF)和平均失效间隔时间(mcan time between failure,MTBF)是进行系统可靠性分析时的要指标,在失效率为常数和修复时间很短的情况下, (_D_)。
A、MTTF 远远小于 MTBF
B、MTTF 和 MTBF 无法计算
C、MTTF 远远大于 MTBF
D、MTTF 和 MTBF 几乎相等
2、软件可靠性建模
影响软件可靠性的因素:运行剖面(环境)、软件规模、软件内部结构、软件的开发方法和开发环境、软件的可靠性投入。
软件可靠性的建模方法:模型假设、性能度量、参数估计方法、数据要求。
- 模型假设。模型是实际情况的简化或规范化,总要包含若干假设,例如测试的选取代表实际运行剖面,不同软件失效独立发生等。
- 性能度量。软件可靠性模型的输出量就是性能度量,如失效强度、残留缺陷数等。在软件可靠性模型中性能度量通常以数学表达式给出。
- 参数估计方法。某些可靠性度量的实际值无法直接获得,例如残留缺陷数,这时需通过一定的方法估计参数的值,从而间接确定可靠性度量的值。当然,对于可直接获得实际值的可靠性度量,就无须参数估计了。
- 数据要求。一个软件可靠性模型要求一定的输入数据,即软件可靠性数据。不同类型的软件可靠性模型可能要求不同类型的软件可靠性数据。
3、软件可靠性设计
容错设计技术
- 恢复块设计。将程序划分为一系列操作构成的恢复块。每个恢复块包含多个功能相同但设计不同的程序块。当检测到某个程序块出现故障时,可以切换到备用程序块。
- N版本程序设计。设计多个不同的软件版本,对同样的输入采用多数表决的方式。要求各版本使用不同的算法、编程语言、测试方法等确保相互独立。可以防止单个版本故障导致整体失效。
- 冗余设计。在主系统之外设计不同实现方式的备用软件模块。当主模块出现故障时,可以切换到备用模块。可以有效提高软件可靠性,但会增加额外开销。
检错技术
在软件中设置检测点和检测机制,检测软件运行状态。一旦发现故障,及时报警以便人工干预。实现方式包括监测返回结果、运行时间等。处理方式一般是停止软件并报警
降低复杂度设计
软件复杂度包括模块内部复杂性和模块间关联复杂性。过高的复杂度是软件缺陷的重要根源。通过简化软件结构、优化数据流等方式降低复杂度,提高可靠性。
系统配置技术
双机热备:采用主备服务器模式,通过"心跳"检测切换。服务器集群:多台服务器组成单一系统,当某台服务器故障时,其他服务器可接管。