【软考系统架构设计师】可靠性分析与设计章节习题集
【系统可靠性分析章节习题】
阅读以下信息系统可靠性问题的说明,在答题纸上回答问题1-3
【说明】
某软件公司开发一项基于数据流的软件,其系统的主要功能是对输入数据进行多次分析,处理和加工,生成需要的输出数据。需求方对该系统的软件可靠度要求很高,要求系统能够长时间无故障的运行。该公司将该系统的设计交给了王工负责,王工给出了该系统的模块示意图(图1),王工解释只要各个模块的可靠度足够高,失效率足够低,则整个软件系统的可靠性是有保证的。
李工对王工的方案提出了异议,李工认为王工的说法有两个问题:第一,即使每个模块可靠度足够高,但是整个软件系统模块之间采用串联,则整个软件系统的可靠度明显下降。假设各个模块的可靠度均为0.99,则整个软件系统的可靠度为0.99的四次方约等于0.96;第二,软件系统模块全部采用串联结构时,一旦某个模块失效,则意味着整个软件系统失效。
李工认为应该在软件系统中采用冗余技术中的动态冗余或者软件容错的N版本程序设计技术,对容易失效或者非常重要的模块进行冗余设计,将模块之间的串联结构部分改为并联结构,来提高整个软件系统的可靠性。同时,李工给出了采用动态冗余机制后的软件系统模块示意图。
刘工建议,李工方案中的M1和M4模块没有采用容错设计,但M1和M4故障的话可能造成严重后果,因此可以在M1和M4模块设计之上采用检错技术,在软件出现故障后能够及时发现并报警,提醒维护人员进行处理。
【问题1】
在系统可靠性中,可靠度和失效率是两个非常关键的指标,请分别解释其含义。
【问题2】
请解释李工提出的动态冗余和N版本程序设计技术,给出图1中模块M2采用图2动态冗余技术后的可靠度。
请给出采用李工设计方案之后,整个系统的可靠度计算方法,并计算结果。
【问题3】
请给出检错技术的优缺点,并说明检错技术常见的实现方式和处理方式
- 可靠度就是系统在规定条件下,规定的时间内不发生失效的概率。
- 失效率又叫做风险函数,条件失效强度,是指运行至此刻系统未出现失效的情况下,单位时间系统出现失效的概率。
-
【问题2标准答案】
1.动态冗余又称为主动冗余,它是通过故障检测,故障定位,故障恢复等手段达到容错的目的。其主要方法是多重模块待机储备,当系统检测到某工作模块出现错误时,就用一个备用的模块替代它并重新运行,各备用模块在其待机时,可于主模块一样工作,也可以不工作。前者叫做冷备份系统(双工系统,双份系统),后者叫做热备份系统(双重系统)。
2.N版本程序设计是一种静态的故障屏蔽技术,其设计思想是用N个具有相同功能的程序同时执行一项计算,结果通过多数表决来决定。其中N个版本的程序必须由不同的人独立设计,使用不同的方法,设计语言,开发环境和工具来实现,目的是减少N个版本的程序在表决点上相关错误的概率
M2采用动态冗余之后的可靠性:R=1-(1-0.99)的三次方=0.999999
李工的方法:0.990.9999990.99*0.999999=0.98
-
【问题3标准答案】
1.检错技术的代价一般低于容错技术和冗余技术,但有一个明显的缺点就是不能自动解决故障,出现故障之后如果不进行人工干预,将最终导致软件系统不能正常运行。
2.检错常见的实现方式:最直接的一种方式就是判断返回结果,如果返回结果超出正常范围,则进行异常处理;
3.计算运行时间也是一种常用技术,如果某个模块或函数运行时间超过预期时间,可以判断出现故障;还有置状态标识位等多种方法,自检的实现方式需要根据实现情况来选用。
4.检错技术的处理方式,大多数采用:查处故障-停止软件运行-报警的处理方式。但根据故障的不同情况,也有采用部分停止或者不停止运行的情况。这一般由故障是否需要实时处理来决定。
-
可靠性的概念
| 可靠性的概念 | 可靠性的说明 |
|---|
| 软件可靠性 | 系统在规定时间内及规定的环境条件下,完成规定功能的能力,也就是系统无故障运行的概率 |
| 软件可用性 | 在某个给定的时间点上,系统能够按照需求执行的概率 |
| |
|---|
| 复杂性 | 软件复杂性比硬件高,大部分失效来源于软件失效 |
| 物理退化 | 硬件失效主要是物理退化所致,而软件不存在物理退化 |
| 唯一性 | 软件是唯一的,每个Copy的版本都一样,而两个硬件是不可能完全一样的 |
| 版本更新周期 | 硬件较慢,软件较快 |
- 可靠性设计包括了:避错技术,容错技术,检错技术和降低复杂度设计。
- 检错技术:出错后报警,人工处理,成本较低。
- 容错技术有三种:防卫式程序编程,N版本程序设计(静态冗余),恢复块设计(动态冗余)
- 容错技术用到的是冗余,而冗余又可以分为三类。时间冗余(重复多次进行响应的计算),结构冗余(硬件冗余,软件冗余),信息冗余(校验码)
- 恢复块方法
设计时应保证实现主块和后备块之间的独立性。避免相关错误的产生,使主块和备份块之间的共性错误降到最低程度。
必须保证验证测试程序的正确性。 - N版本程序设计
与通常软件开发过程不同的是,N版本程序设计增加了三个新的阶段,相异成份规范评审,相异性确认,背对背测试。
N版本程序的同步,N版本程序之间的通信,表决算法,一致比较问题,数据相异性 - 防卫式程序设计
对于程序中存在的错误和不一致性,通过在程序中包含错误检查代码和错误恢复代码,使得一旦错误发生,程序能撤销错误状态,恢复到一个已知的正确的状态中去。
- 功能比对
| - | 恢复块方法 | N版本程序设计 |
|---|
| 硬件运行环境 | 单机 | 多机 |
| 错误检测方法 | 验证测试程序 | 表决 |
| 恢复策略 | 后项恢复 | 前项恢复 |
| 实时性 | 差 | 好 |
| No | 恢复类型 | 说明 |
|---|
| 01 | 前项恢复 | 使当前的计算继续下去,把系统恢复成连贯的正确状态,弥补当前状态的不连贯情况 |
| 02 | 后项恢复 | 系统恢复到前一个正确状态,继续执 |
| 系统可靠性分析 | 缩写 | 计算方式 |
|---|
| 平均无故障时间 | MTTF | 1/低效率 |
| 平均故障修复时间 | MTTR | 1/修复率 |
| 平均故障间隔时间 | MTBF | MTTR+MTTR |
| 双机容错技术 | 双机容错技术说明 |
|---|
| 双机热备模式 | 主系统,备用系统 |
| 双机互备模式 | 同时提供不同的服务,心不跳则接管 |
| 双机双工模式 | 同时提供不同的服务,集群的一种 |