2015年下午试题1分析与解答
试题三
某宇航公司长期从事宇航装备的研制工作,嵌入式系统的可靠性分析与设计已成为该公司产品研制中的核心工作,随着宇航装备的综合化技术发展,嵌入式软件规模发生了巨大变化,代码规模已从原来的几十万扩展到上百万,从而带来了由于软件失效而引起系统可靠性降低的隐患。公司领导非常重视软件可靠性工作,决定抽调王工程师等5人组建可靠性研究团队,专门研究提高本公司宇航装备的系统可靠性和软件可靠性问题,并要求在三个月内,给出本公司在系统和软件设计方面如何考虑可靠性设计的方法和规范。可靠性研究团队很快拿出了系统及硬件的可靠性提高方案,但对于软件可靠性问题始终没有研究出一种普遍认同的方法。
【问题1】
请用200字以内文字说明系统可靠性的定义及包含的4个子特性,并简要指出提高系统可靠性一般采用哪些技术?
系统可靠性定义:系统在规定的时间内及规定的环境条件下,完成规定功能的能力,就是系统无故障运行的概率。
根据国家标准《软件工程产品质量第1部分:质量模型》(GB/T16260.1—2006)的规定,系统可靠性包括:成熟性、容错性、易恢复性和可靠性的依从性4个子特性。
提高系统可靠性一般采用以下4类技术:
(1) 冗余技术;
(2) 软件容错技术;
(3) 双机容错技术;
(4) 集群技术。
本题主要考查考生对软件可靠性设计知识的掌握程度。本题首先系统可靠性定义,并了解考生是否分辨出系统可靠性的4个主要子特性;其次,考查对软件可靠性与硬件可靠性的差别,了解软件可靠性的主要特征;最后,通过填空回答宇航设备中飞行控制系统中为提高可靠性所采用的恢复块方法的具体设计实现。此类题目要求考生认真阅读题目对问题的描述,通过自己对软件可靠性和嵌入式系统的知识掌握程度,采用总结、概括和分析等的方式,可从问题描述中发现问题的相关性,正确回答问题。
可靠性的定义在不同书籍中给出解释各不相同,但是,比较公认的定义是:系统可靠性是指系统在规定的时间内及规定的环境条件下,完成规定功能的能力,就是系统无故障运行的概率。通常系统可靠性可分为硬件可靠性和软件可靠性,软件可靠性是近年来国内外研究的重点。
国家标准《软件工程产品质量第1部分:质量模型》(GB/T16260.1—2006)中给出了系统可靠性的4个主要子特性:
成熟性:成熟性是指系统避免因错误的发生而导致失效的能力;
容错性:容错性是指在系统发生故障或违反指定接口的情况下,系统维持规定的性能级别的能力;
易恢复性:易恢复性是指系统发生失效的情况下,重建规定的性能级别并恢复受直接影响的数据的能力;
依从性:可靠性的依从性是指系统依附于与可靠性相关的标准、约定或规定的能力。
通常,提高系统可靠性采用冗余技术、软件容错技术、双机容错技术和集群技术等4类技术。
【问题2】
王工带领的可靠性研究团队之所以没能快速取得软件可靠性问题的技术突破,其核心原因是他们没有搞懂高可靠性软件应具备的特点。软件可靠性一般致力于系统性地减少和消除对软件程序性能有不利影响的系统故障。除非祓修改,否则软件系统不会随着时间的推移而发生退化。请根据你对软件可靠性的理解,给出表3-1所列出的硬件可靠性特征对应的软件可靠性特征之间的差异或相似之处,将答案写在答题纸上。
(1) 不考虑软件演化的情况下,失效率在统计上是非增的
(2) 如果不使用该软件,永远不会发生失效
(3) 软件维护会创建新的软件代码
(4) 软件失效之前很少会有警告
本问题主要要求考生在理解软件的特殊性基础上,深刻认识软件可靠性一般是致力于系统性地减少和消除对软件程序性能有不利影响的系统故障。除非被修改,否则软件系统不会随着时间的推移而发生退化。在掌握这一特征的基础上,可以回答硬件可靠性特征与其对应的软件可靠性特征之间的差异或相似之处。
(1) 从硬件角度分析,由于硬件一旦生产完成,其可靠性指标将会随着使用时间延长而逐步老化,从而带来可靠性降低,即呈现失效率服从浴缸曲线;而软件不存在随时间延长而老化的现象,因此,在不考虑软件演化的情况下,失效率在统计上是非增的。
(2) 由于硬件是由多种电子器件组成,即使不使用,材料劣化也会导致失效;而软件就不同了,软件一旦调试完成,固化到设备中,在不考虑存储介质的老化因素的前提下,即使不使用该软件,软件也永远不会发生失效。
(3) 由于硬件存在可更换性,其硬件通过维修,可恢复原始状态;而对于软件而言,一旦需要维护,必然是存在需求更改、程序存在bug等现象,其维护必然会创建新的软件代码。
(4) 一般而言,硬件失效存在一个发展过程,在发生故障之前必然会有报警现象出现,而软件失效之前很少会有警告。
【问题3】
王工带领的可靠性研究团队在分析了大量相关资料基础上,提出软件的质量和可靠性必须在开发过程构建到软件中,也就是说,为了提高软件的可靠性,必须在需求分析、设计阶段开展软件可靠性筹划和设计。研究团队针对本公司承担的飞行控制系统制定出了一套飞控软件的可靠性设计要求。飞行控制系统是一种双余度同构型系统,输入采用了独立的两路数据通道,在系统内完成输入数据的交叉对比、表决‘制导率计算,输出数据的交叉对比、表决、一输出等功能,系统的监控模块实现对系统失效或失步的检测与宠位。其软件的可靠性设计包括恢复块方法和N版本程序设计方法。请根据恢复块方法工作原理完成图3-1,在(1)~(4)中填入恰当的内容。并比较恢复块方法与N版本程序设计方法,将比较结果(5)~(8)填入表3-2中。
1. 恢复块方法:
(1) 主块
(2) 验证测试
(3) 输出正确结果
(4) 异常处理
2. 恢复块方法与N版本程序设计的比较
(5) 表决
(6) 反向恢复
(7) 差
(8) 好
软件的可靠性设计主要包括了恢复块和N版本程序设计两种方法,如果考生对这两种方法有所了解,则可很容易地进行判断。
恢复块方法是一种反向恢复的方法,其核心原理是:对于可靠性要求高的软件,在程序运行的某时刻,将数据或程序进行备份,一旦发现主程序块有异常发生时,可将已备份的数据或程序进行恢复,保证程序的正确性。基于这样的原理,显然(1)空处是主块,而(2)空处将是对正确性进行检验测试判断,一旦判断正确,(3)空处将是“输出正确结果”,以此类推,显然(4)空处是进入“异常处理”了。
如果考生能够答对第一问,说明考生已掌握恢复块与N版本两种方法,那么,填写第二问的空应该没问题的。在表3-2已经给出了两种方法适应的硬件环境,也就是说:恢复块方法的使用必然是单机环境,而N版本方法必然要使用多机环境。理解了环境需求,那么多机余度工作方式,必然采用“表决”((5)空)方式进行容错;同时不难分析出N版本的工作原理是向前恢复,恢复快则是反向恢复((6)空);由于恢复快方法是反复寻找正确的备份块,而N版本方法则是多个机器同时计算同样内容,表决完后即可给出正确结果,这样,恢复快方法相比N版本方法显然实时性差((7)空),而N版本方法显然好((8)空)于恢复快方法。