免费智能真题库 > 历年试卷 > 系统架构设计师 > 2015年下半年 系统架构设计师 下午试卷 案例
  第3题      
  知识点:   可靠性   可靠性设计   嵌入式软件   嵌入式系统   软件设计   系统的可靠性   系统可靠性   硬件

 
某宇航公司长期从事宇航装备的研制工作,嵌入式系统可靠性分析与设计已成为该公司产品研制中的核心工作,随着宇航装备的综合化技术发展,嵌入式软件规模发生了巨大变化,代码规模已从原来的几十万扩展到上百万,从而带来了由于软件失效而引起系统可靠性降低的隐患。公司领导非常重视软件可靠性工作,决定抽调王工程师等5人组建可靠性研究团队,专门研究提高本公司宇航装备的系统可靠性和软件可靠性问题,并要求在三个月内,给出本公司在系统和软件设计方面如何考虑可靠性设计的方法和规范。可靠性研究团队很快拿出了系统及硬件可靠性提高方案,但对于软件可靠性问题始终没有研究出一种普遍认同的方法。
 
问题:3.1   请用200字以内文字说明系统可靠性的定义及包含的4个子特性,并简要指出提高系统可靠性一般采用哪些技术?
 
问题:3.2   王工带领的可靠性研究团队之所以没能快速取得软件可靠性问题的技术突破,其核心原因是他们没有搞懂高可靠性软件应具备的特点。软件可靠性一般致力于系统性地减少和消除对软件程序性能有不利影响的系统故障。除非祓修改,否则软件系统不会随着时间的推移而发生退化。请根据你对软件可靠性的理解,给出表3-1所列出的硬件可靠性特征对应的软件可靠性特征之间的差异或相似之处,将答案写在答题纸上。
表3-1硬件和软件可靠性对比
 
问题:3.3   王工带领的可靠性研究团队在分析了大量相关资料基础上,提出软件的质量和可靠性必须在开发过程构建到软件中,也就是说,为了提高软件的可靠性,必须在需求分析、设计阶段开展软件可靠性筹划和设计。研究团队针对本公司承担的飞行控制系统制定出了一套飞控软件的可靠性设计要求。飞行控制系统是一种双余度同构型系统,输入采用了独立的两路数据通道,在系统内完成输入数据的交叉对比、表决‘制导率计算,输出数据的交叉对比、表决、一输出等功能,系统的监控模块实现对系统失效或失步的检测与宠位。其软件的可靠性设计包括恢复块方法和N版本程序设计方法。请根据恢复块方法工作原理完成图3-1,在(1)~(4)中填入恰当的内容。并比较恢复块方法与N版本程序设计方法,将比较结果(5)~(8)填入表3-2中。

表3-2 恢复块方法与N版本程序设计的比较

 
 
 

   知识点讲解    
   · 可靠性    · 可靠性设计    · 嵌入式软件    · 嵌入式系统    · 软件设计    · 系统的可靠性    · 系统可靠性    · 硬件
 
       可靠性
        (1)完备性。完备性评价指标及测量,如下表所示。
        
        完备性评价指标及测量
        (2)连续性。连续性评价指标及测量,如下表所示。
        
        连续性评价指标及测量
        
        (3)稳定性。稳定性评价指标及测量,如下表所示。
        
        稳定性评价指标及测量
        (4)有效性。有效性评价指标及测量,如下表所示。
        
        有效性评价指标及测量
        (5)可追溯性。可追溯性评价指标及测量,如下表所示。
        
        可追溯性评价指标及测量
        
 
       可靠性设计
        嵌入式系统硬件相关的可靠性设计往往是为“在有限的资源下尽可能提高可靠性”。因此可靠性设计通常需要考虑如下因素,以平衡不同因素对可靠性的影响:
        .有效的散热,降低高温对系统的危害;
        .尽量减少高敏感元器件的使用;
        .更多的使用可靠度高、质量好的元器件;
        .指定采用屏蔽性好或者内嵌的测试方法;
        .使用最少的元器件设计出来简单的电路;
        .在电子元器件级别进行冗余。
        温度是影响所有电子元器件的重要因素之一,而所有元器件都会产生热量。过高的温度会对元器件造成不可逆转的损伤,并阻碍电流流动。而且高温也是元器件损害的最主要的原因。同时过低温也会损坏电子设备。一般来说设备需要工作在所设计的环境中,不同级别的设备会对不同环境的耐受级别不同,因此根据不同用途要选择合适的设备,同时使用适当的散热或者保温措施。
        重要的是,元器件工作在标称额定值(环境)以内对电子设备的可靠性会有较大的提升。对于电容、电阻等元器件和各类芯片,都会对电压、电阻、功率、频率等有着严格的规定。保证电子元器件、电路工作在合理的环境中可以有效的保护元器件、降低故障发生的可能,提高可用性。此外选用高可靠的元器件也可以有效地提高可靠性。在选用可靠的元器件并对环境做出保证后,还应当进行筛选和老化实验保证元器件的一部分不合格元器件筛除。
        根据概率论的相关知识,若假设所有元器件出错的概率为p,而n个元器件中任意元器件出错都会导致系统崩溃,则整个系统出错的概率为1-(1-pn。当n增加时,出错的概率会以指数形式增长。因此,降低元器件个数、简化设计可以有效地降低故障发生的概率从而提高可靠性。当一个部件的故障率为p而同时有n个冗余部件时,其整体故障的概率为pn。可以看出,当冗余元器件增多的时候,整体的故障概率会成指数形式降低。因此,有效的冗余设计可以保证系统的可靠性提高。
 
       嵌入式软件
        软件实际上是客观世界问题空间与解空间的具体实现,也是人类知识的提炼、抽象和固化。软件是计算机相关的:
        (1)完成预定功能和性能的可执行的指令(计算机程序)序列。
        (2)程序操作的信息或数据结构。
        (3)描述程序操作、数据和使用的文档。
        嵌入式软件是为完成某特定用途而开发的、驻留在预先定义的嵌入式计算机平台上的软件。随着微电子技术飞速发展带来的智能化需求的不断扩展,嵌入式软件无处不在,规模也越来越大。
        近三十年来,随着现代化战争信息化程度的不断提高,随着装备由机械化向信息化的战略转型,军用软件已经渗透到军事应用的各个方面,成为装备及其体系中不可或缺的组成部分,其发展和应用水平代表着一个国家的装备实力。美国国防部在2002年的《国防科学技术领域计划》中就把军用软件设计和改进作为重要研究领域,制定了军用软件发展的近、中、远期目标。2011年,美国政府、国防部、海陆空三军、洛克希德·马丁公司等26个组织组成工作组,专题研究军事装备中软件研制和部署存在的问题,形成《美国国防部与国防工业领域软件工程的重大问题报告》,对军用软件的发展提出建议。这些都说明了军用软件在现代化战争中的重要地位和作用。
        随着飞机机载计算机的广泛使用,机载软件从无到有、规模从小到大、复杂度从低到高。软件负责数据的采集、存储和处理。实时进行各种逻辑判断、数学运算、行为推导、状态转换等处理,帮助飞行员优化各种操作,实现飞行航路计算、姿态控制、环境控制、燃油输送、任务计算、状态监控、信息显示报警、人机界面控制等功能,不夸张地说,飞行员每一个操作、飞机的每一个动作的完成都离不开软件运行。而软件的复杂性、重要性还体现在:
        (1)从计算机理论和技术发展趋势来说,硬件和软件没有明确界限,原来使用硬件实现的功能在尽可能地向软件迁移,技术进步越来越显现在软件方面。
        (2)软件直接和飞机安全功能相关,而且这种相关性越来越高,如电传飞控软件。
        (3)软件的特殊性导致了需要有特殊的规则保证系统的安全性、可靠性。
        与硬件不同,软件至今尚未摆脱手工方式。更严重的是,软件在开发过程中涉及到了各行各业的工作人员,其中包括业务定义人员、系统分析员、系统设计人员、软件架构师、软件工程师、软件测试工程师以及质量工程师等。实际上这些人员中只有软件工程师是专业软件开发人员,其他人员都需要同时具备软件和其他行业的背景。因此与其他行业比较,软件行业具有以下鲜明的特点:
        (1)抽象性:软件直接反映了人的思维逻辑实体,同时几乎没有具体物理实体,且没有明显的制造过程。
        (2)客观问题越来越复杂,软件也随之越来越复杂,而且软件技术的进步速度落后于需求增长的速度。
        (3)相对于通用硬件,软件开发成本昂贵,随着问题规模的加大、成本急剧增加。
        (4)软件运行和使用没有磨损或老化现象。
        (5)软件对硬件和环境有着不同程度的依赖性。
        (6)大多数软件是新开发的,通过已有构件组装技术尚不成熟。
        (7)软件工作结果涉及到许多社会因素。
        以上特点使得软件开发进展情况较难衡量,软件质量不易评价,从而使软件产品的生产管理、过程控制及质量保证都相当困难。
        对于嵌入式软件而言,它除了具有通用软件的一般特性,同时还具有一些与嵌入式系统密切相关的特点。这些特点包括:
        (1)软件受资源的限制。由于嵌入式系统的资源一般比较有限,所以嵌入式软件必须尽可能地精简,才能适应这种状况。
        (2)开发难度大。嵌入式软件的运行环境和开发环境一般比较复杂,从而加大了它的开发难度。首先,由于硬件资源有限,使得嵌入式软件在时间和空间上都受到严格的限制,但要想开发出运行速度快、存储空间少、维护成本低的软件,需要开发人员对编程语言、编译器和操作系统有深刻的了解。其次,嵌入式软件一般都要涉及到底层软件的开发,应用软件的开发也是直接基于操作系统的,这就需要开发人员具有扎实的软、硬件基础,能灵活运用不同的开发手段和工具,具有较丰富的开发经验。最后,对于嵌入式软件来说,它的开发环境与运行环境是不同的。嵌入式软件是在目标系统上运行,但开发工作要在另外的开发系统中进行,当编程人员将应用软件调试无误后,再把它放到目标系统上去。
        (3)实时性和可靠性要求高。实时性是嵌入式系统的一个重要特征,许多嵌入式系统要求具有实时处理的能力,这种实时性主要是靠软件层来体现的。软件对外部事件做出反应的时间必须要快,在某些情况下还要求是确定的、可重复实现的,不管系统当时的内部状态如何,都是可以预测的。同时,对于事件的处理一定要在限定的时间期限之前完成,否则就有可能引起系统的崩溃。例如,火箭飞行控制系统就是实时的,它对飞行数据采集和燃料喷射时机的把握要求非常的准确,否则就难以达到精确控制的目的,从而导致飞行控制的失败。
        与实时性相对应的是可靠性,因为实时系统往往应用在一些比较重要的领域,如航天控制、核电站、工业机器人等等,如果软件出了问题,那么后果是非常严重的,所以要求这种嵌入式软件的可靠性必须非常高。
        (4)要求固化存储。为了提高系统的启动速度、执行速度和可靠性,嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中,而不是像通常的计算机系统那样,存储在磁盘等载体中。
 
       嵌入式系统
        嵌入式计算机系统是与特定功能的设备集成在一起、且隐藏在这个功能系统内部为预定任务而设计的计算机系统。该计算机可对设备的状态进行采集,包括操作者的命令和受控对象的状态,按照设备所要求的、预先设定的特定规律进行计算,计算结果作为命令输出到设备的某些部件,控制某些操作,同时将人所关心的信息显示给操作者。一个典型的嵌入式系统如下图所示。
        
        嵌入式系统组成
        上述嵌入式系统的输入、处理、输出的各个部分,一般情况下都是通过软件运行完成的。因此嵌入式软件是嵌入式系统的重要组成部分,而且体现了系统的思想、方法和规律。
        在当今社会中,嵌入式系统已经和我们的生活息息相关,人们每时每刻都离不了嵌入式系统,如下图所示。
        
        嵌入式系统基本分类
        嵌入式系统一般是实时系统,《牛津计算机字典》对实时系统解释是:“系统的输入对应于一个外部物理世界的运动,而系统输出对应着另外一个物理世界的运动,而这两个运动的时间差必须在可接受的足够小的范围内,实时性就体现在从输入到形成输出所需的时间。”实时系统又进一步定义为硬实时系统和软实时系统两种,如下表所示。
        
        实时系统分类及其特性
        一般认为,嵌入式计算机相对于个人计算机或超级计算机,在软件或硬件上的资源是有限的,硬件资源体现在处理速度、功耗、存储空间等方面,软件资源指有限的应用、有限的操作系统支持、应用代码量少等方面。
        第一款大批量生产的嵌入式系统是美国1961年发布的民兵Ⅰ型导弹内嵌的D-17自动制导计算机。
        随着20世纪60年代早期应用开始,嵌入式系统的价格迅速降低,同时处理功能和能力获得快速提高。以第一款单片机Intel 4004为例,在存储器和外围芯片的配套使用下,实现了计算器和其他小型系统。1978年,美国国家工程制造商协会发布了可编程单片机的“标准”,涵盖了几乎所有以计算机为基础的控制器,如单板计算机、数控设备以及基于事件的控制器,使得微处理器得到了快速发展。
        无一例外,不断发展中的嵌入式计算功能的实现都通过用户需求驱动、顶层定义、硬件定义开始,但核心是软件的算法处理,实际上类似硬件功能通过不同软件的控制就可以实现不同用户所需要的嵌入式功能,如下图所示。
        
        嵌入式计算机的层次化架构
        当基础硬件接口、计算和存储资源、总线与网络乃至各种传感器、作动器、液压等以模块化、通用化、组合化等变得越来越成熟,他们就可以方便地组合成硬件平台。而软件却恰恰相反,基本是为满足人类某种新的设想或应用要求开始进行新的设计。这些设计从诸如领域、实现功能、性能、可靠性、安全性等方面,可以是全新理念设备、或是适应性修改升级等途径,都会导致软件有不同程度的差异。
        嵌入式系统具有以下特征:
        (1)嵌入式系统的时间敏感性。嵌入式实时系统对时间响应都是有要求的。例如对于一个设备的运动控制系统,从操作指令发出,嵌入式计算机根据指令和外部条件计算并输出到动作器的动作,要保证在所有的条件下、在确定的时间内产生所需的输出。这对于设计者来说,一般的实时系统都会围绕这个关键需求进行系统设计。另外为了满足时间敏感性要求,确保在最复杂行为和最大延时情况下,系统操作不发生延迟,要求处理器的利用率要有40%左右的余量。有时为满足某些强实时嵌入式系统的应答时间限定在毫秒级或更低,需要在高级语言中嵌入低级语言编程实现。
        (2)嵌入式系统的可靠性和安全性。嵌入式计算机系统的失效带来的可能是个人娱乐系统故障的微小损失,可能是铁路信号失效的巨额经济损失,也可能是战略武器控制等经济损失以及重大的社会政治影响等。所以在某种设计缺陷被诱发后,对于不同的系统需要采取不同的策略,例如对具有重大影响的系统,要求计算机或计算机软件对设计缺陷、制造缺陷等失效采取“永不放弃”的安全性设计技术,将损失控制在可接受的范围内。在有人为输入情况下,嵌入式系统还需考虑最大可能地减少人为失误所引起的系统失效。这些算法或机制可以是输入有效性合理性检查、硬件容错、软件容错、错误后的系统缓慢降级、系统进入安全模式等。
        (3)嵌入式软件的复杂性。软件复杂度取决于问题规模和复杂度。简单问题的软件可由个人完成,甚至可以进行软件正确性证明;即使过程中更换人员,花费少许时间就可掌握和维护。但如汽车控制、飞机控制等大型复杂软件,其需要根据复杂的外部输入、按照多变量物理规律和人们的预期,实现预定的功能。软件需要根据系统的外部事件及其组合,考虑各种处理、逻辑、时序、边界、超出边界的鲁棒性等进行详细算法和策略研究。还需要考虑如安全性、可靠性、维护性等质量要求。更困难的是大规模软件需要团队联合定义、并行开发、持续维护,同时考虑处理平台限制条件。
 
       软件设计
               软件设计的任务
               在给定系统的需求规格说明书后,需要对软件的结构进行设计,并对设计的过程进行管理。在嵌入式系统的软件设计过程中,需要完成以下一些任务。
                      准备工作计划
                      在软件设计之前,首先要制订详细的工作计划,其内容包括:
                      .过程管理方案:包括软件开发的进度管理、软件规模和所需人年的估算、开发人员的技能培训等;
                      .开发环境的准备方案:包括开发工具的准备、开发设备的准备、测试装备的准备、分布式开发环境下的开发准则等;
                      .软硬件联机调试的方案:联调的起始时间、地点、人员和具体的准备工作;
                      .质量保证方案:包括质量目标计划、质量控制计划等;
                      .配置控制方案:包括配置控制文档的编写、配置控制规则的制订等。
                      确定软件的结构
                      设计软件的各个组成部分,包括:
                      .任务结构的设计:使用操作系统提供的函数,设计出一个最佳的任务结构;
                      .线程的设计;
                      .公共数据结构的设计:在确保系统一致性的基础上,设计出所需的公共数据;
                      .操作系统资源的定义;
                      .类的设计;
                      .模块结构设计:在设计时要充分考虑模块的划分、标准化、可重用和灵活性等;
                      .内存的分配与布局。
                      设计评审
                      对于软件设计的结果,进行一次设计评审,并在必要时对设计进行修正。具体内容包括:
                      .确认每件工作的执行方法是否恰当,其内容是否完善;
                      .确认该设计完成了系统需求规格说明书所要求的功能和服务;
                      .评估任务结构设计、评估类的设计、评估模块结构设计;
                      .对软件设计的结果进行总结,编写出相应的文档。
                      维护工作计划
                      执行软件设计工作控制,在每日、每周和每月的时间粒度上对进度进行控制,确保软件设计能够如期完成。
                      与硬件部门密切合作、相互协调
                      根据工作计划中的安排,定期与硬件部门召开会议,协调各自的进展。如果软件规格说明书发生了变化,立即进行调整,重新进行软件设计。
                      控制工作的结果,把工作记录存档
                      掌握当前的工作进展情况,尽早地发现和分析问题,并采取相应的措施。对各种事件进行跟踪记录,包括:
                      .执行过程控制,跟踪进展情况并定期记录、存档。
                      .执行质量控制,保留质量记录。
                      .记录产品的配置、版本变化、bug的发现和处理等信息。
               软件架构设计
               软件架构也称为软件体系结构,需要考虑如何对系统进行分解,对分解后的组件及其之间的关系进行设计,满足系统的功能和非功能需求。软件架构形成过程如下图所示。
               
               架构的形成过程概要
               软件架构设计需要从用户业务需求、未来应用环境、需求分析、硬件基础、接口输入、数据处理、运算或控制规律、用户使用等方面进行综合、权衡和分析基础上产生。面向某种问题的架构一旦确定就很难改变,随后的架构设计需要通过一系列的迭代开发完善,使得软件架构日趋成熟、稳定。
               软件架构的重要作用也在于控制一个软件系统的使用、成本和风险。好的架构要求是和谐的软件架构,包括与上一级系统架构相互和谐、与系统中同一级的其他组件架构互相和谐,确保系统满足性能、可靠性、安全性、信息安全性和互操作性等方面的关键要求,也具有可扩展、可移植性,从而为一个软件带来长久的生命力。
               在大量开发实践中,有很多广泛使用并被普遍接受的软件架构设计原则,这些原则独立于具体的软件开发方法,主要包括抽象、信息隐藏、强内聚和松耦合、关注点分离等。
               (1)抽象:这是软件架构的核心原则,也是人们认识复杂客观世界的基本方法。抽象的实质是提取主要特征和属性,从具体的事务中通过封装来忽略细节,并且运用这些特征和属性,描述一个具有普遍意义的客观世界。软件架构设计中需要对流程、数据、行为等进行抽象。复杂系统含有多层抽象,从而有多个不同层次架构。
               (2)信息隐藏:包括局部化设计和封装设计。局部化设计就是将一个处理所涉及到的信息和操作尽可能地限制在局部的一个组件中,减少与其他组件的接口。而封装设计是将组件的外部访问形式尽可能简单、统一。
               (3)强内聚和松耦合:强内聚是指软件组件内的特性,即组件内所有处理都高度相关,所有处理组合在一起才能组成一个相对完整的功能。而松耦合是指软件组件之间的特性,软件组件之间应尽量做到没有或极少的直接关系,使其保持相对独立,这样使得未来的修改、复用简单,修改之后带来的影响最小。
               (4)关注点分离:所谓关注点是软件系统中可能会遇到的多变的部分。如为适应不同运行接口条件,需要进行适应性的参数调整和驱动配置。关注点分离设计是将这部分组件设计成为相对独立的部分,使未来的系统容易配置和修改。而核心的部分可以保持一个相对独立的稳定状态。如果功能分配使得单独的关注点组件足够简单,那么就更容易理解和实现。但“展示某些关注点得到满足时,可能会影响到其他方面的关注点,但架构师必须能够说明所有关注点都已得到满足”。
               以上的原则中,删除需求细节或对细节进行抽象是最重要的工作,为用户的需求创建抽象模型,通过抽象将特殊问题映射为更普遍的问题类别,并识别各种模式。
               软件架构设计使用纵向分解和横向分解两种方式。纵向分解就是分层,横向分解就是将每一个层面分成相对独立的部分。经过分解之后,可以将一个完整的问题分解成多个模块来解决。模块是其中可分解、可组装,功能独立、功能高度内聚、之间低耦合的一个组件。
               类似于建筑架构,软件架构也决定了软件产品的好用、易用、可靠、信息安全、可扩展、可重用等特性,好的软件架构也给人完整、明确、清晰等赏心悦目的感觉,具有较长的生命力。
               架构设计是围绕业务需求带来的问题空间到系统解决空间第一个顶层设计方案。按照抽象原则,在这个阶段进行的架构设计关注软件设计环节抽象出来的重要元素,而不是所有的设计元素。在架构设计时将软件这些要素看作是黑盒,架构设计需要满足黑盒的外部功能和非功能需求的目标。一个软件的架构设计首先为软件产品的后续开发过程提供基础,在此基础上可将一个大规模的软件分解为若干子问题和公共子问题。而一般意义的软件设计是软件的底层设计,开发人员需要关注各子问题或要素的进一步分解和实现,是根据架构设计所定义的每个要素的功能、接口,进一步实现要素组件内部的配置、处理和结构。在遵守组件外部属性前提下,考虑实现组件内部的细节及其实现方法。对于其中的公共子问题,形成公共类和工具类,从而可以达到重用的目的。
               一般的软件构架是根据需求自上而下方式来设计,即首先掌握和研究利益相关方的关键需求,基本思路是首先进行系统级的软件架构设计,需要将软件组件与其外部环境属性绑定在一起,关注软件系统与外部环境的交联设计;其次将一个大的系统划分成各组成部分,这些部分可以按照架构设计的不同方法,分为层次或成为模块;之后再开始研究所涉及到的要素,再实现这些要素以及定义这些要素之间的关系。
               在实际工作中,软件构架也可采用自底向上的方法,前提是已经建立了一个成熟稳定的软件架构,也可以称之为“模式”。模式是组织一级设计某一类具体问题的顶层思路,是为了解决共有问题解的方案模板,但并不是一个问题的设计或设计算法。
               模式常常整合在一起使用,提供解决更大、更复杂问题的解决方案,而组成一个解决问题的通用框架。框架往往提供统一平台和开发工具,而且已经高效地利用了已经经过验证的模式、技术和组件。在新软件系统的设计中指定沿用或重用这种架构框架,这时其他重要元素可以在这个架构基础上针对新的需求进行扩展,有时是针对性地进行参数化设计。所以在架构设计中可以借用模式的概念进行设计,采用成熟的先进的设计框架和工具提高开发的效率,保证设计正确性。
               下图所示是针对架构设计中非功能需求的多维度分析,从中可知任何一个因素的变化都会带来对其他因素的影响。实际上软件架构设计属于软件设计过程的一部分,但超越了系统内部的算法和数据结构的详细设计。
               
               架构的多维度分析
               在架构设计阶段,需要定义边界条件、描述系统组织结构、对系统的定量属性进行约束、帮助对模型进行描述并基本构造早期的原型、更准确地描述费用和时间的评估。
               软件设计方法
               在将系统分解为各个组件的过程中,需要采取不同的策略,而每个策略则关注不同的设计概念。根据分解过程中所采用的不同策略,设计方法有基于功能分解的设计方法、基于信息隐藏的设计方法和基于模型驱动开发的设计方法等分类。
               (1)基于功能分解的设计方法。实时结构化分析与设计采用了功能分解,系统被分解为多个函数,并且以数据流或控制流的形式定义函数之间的接口;基于并发任务结构化的设计(Design Approach for Real-Time Systems,DARTS)提供了任务结构化标准,辅助人员确定系统中的并发任务,并指导定义任务接口。
               (2)基于信息隐藏的设计方法。面向对象(Object Oriented,OO)设计方法将数据和数据上操作封装在对象实体中,对象外界不能够直接对对象内部进行访问和操作,只能通过消息间接访问对象,符合人类思维方式,提高软件的扩展性、维护性和重用性。
               (3)基于模型驱动开发的设计方法。通过借助有效的(Model Driven Development,MDD)工具,构建和维护复杂系统的设计模型,直接产生高质量的代码,将开发的重心从编码转移到设计。当前使用较为广泛的MDD工具有IBM公司的Rhapsody。
 
       系统的可靠性
        系统的可靠性是只保证系统正常工作的能力。这是对系统的基本要求,系统在工作时,应当对所有可能发生的情况都予以考虑,并采取适当的防范措施,提高系统的可靠性。系统的可靠性主要分系统硬件和软件的可靠性。衡量系统可靠性的重要指标是系统的平均故障间隔时间(Mean Time Between Failure, MTBF)和平均维护时间(Mean Time To Repair,MTTR)。前者指平均的系统前后两次发生故障的间隔时间,后者指发生故障后平均没修复所需要的时间。系统平均故障间隔时间越长,系统可靠性就越高;系统平均维护时间越短,则说明系统的可维护性就越高。
        要提高系统的可靠性需要从多个方面进行考察,采取多种相应的措施,可以选用可靠性较高的设备;在设计中尽可能地避免出错,在程序中设置各种检验措施,防止误操作和非法使用;采取软件和硬件的各种安全保障措施和操作,例如,对输入数据进行完整性检验,建立运行日志和审计跟踪,规定文件存取权限以及定期备份,等等。
 
       系统可靠性
        系统可靠性是系统在规定的时间内及规定的环境条件下,完成规定功能的能力,也就是系统无故障运行的概率。这里的故障是系统行为与需求的不符,故障有等级之分。系统可靠性可以通过历史数据和开发数据直接测量和估算出来,与之相关的概念主要有平均无故障时间、平均故障修复时间、平均故障间隔时间、系统可用性等。
        (1)平均无故障时间。可靠度为Rt)的系统的平均无故障时间(Mean Time To Failure, MTTF)定义为从t=0时到故障发生时系统的持续运行时间的期望值,计算公式如下:
        
        如果Rt)=e-λt,则MTTF=1/λλ为失效率,是指器件或系统在单位时间内发生失效的预期次数,在此处假设为常数。例如,假设同一型号的1000台计算机,在规定的条件下工作1000小时,其中有10台出现故障。这种计算机千小时的可靠度R为(1000-10)/1000=0.99。失效率为10/(1000×1000)=1×10-5。因为平均无故障时间与失效率的关系为MTTF=1/λ,因此,MTTF=105小时。
        (2)平均故障修复时间。可用度为At)的系统的平均故障修复时间(Mean Time ToFix, MTTR)可以用类似于求MTTF的方法求得。设A1t)是在风险函数Zt)=0且系统的初始状态为1状态的条件下At)的特殊情况,则
        
        此处假设修复率μt)=μ(常数),修复率是指单位时间内可修复系统的平均次数,则:
        MTTR=1/μ
        (3)平均故障间隔时间。平均故障间隔时间(Mean Time Between Failure, MTBF)常常与MTTF发生混淆。因为两次故障(失败)之间必然有修复行为,因此,MTBF中应包含MTTR。对于可靠度服从指数分布的系统,从任一时刻t0到达故障的期望时间都是相等的,因此有:
        MTBF=MTTR+MTTF
        在实际应用中,一般MTTR很小,所以通常认为MTBF≈MTTF。
        (4)系统可用性。系统可用性是指在某个给定时间点上程序能够按照需求执行的概率,其定义为
        可用性=MTTF/(MTTF+MTTR)×100%
        计算机系统是一个复杂的系统,而且影响其可靠性的因素也非常繁复,很难直接对其进行可靠性分析。但通过建立适当的数学模型,把大系统分割成若干子系统,可以简化其分析过程。
               串联系统
               假设一个系统由n个子系统组成,当且仅当所有的子系统都能正常工作时,系统才能正常工作,这种系统称为串联系统,如下图所示。
               
               串联系统
               设系统各个子系统的可靠性分别用R1R2,…,Rn表示,则系统的可靠性为:
               R=R1×R2×…×Rn
               如果系统的各个子系统的失效率分别用λ1λ2,…,λn来表示,则系统的失效率为:
               λ=λ1+λ2+…+λn
               并联系统
               假如一个系统由n个子系统组成,只要有一个子系统能够正常工作,系统就能正常工作,如下图所示。
               
               并联系统
               设系统各个子系统的可靠性分别用R1R2,…,Rn表示,则系统的可靠性为:
               R=1-(1-R1)×(1-R2)×…×(1-Rn
               假如所有的子系统的失效率均为λ,则系统的失效率为:
               
               在并联系统中只有一个子系统是真正需要的,其余n-1个子系统称为冗余子系统,随着冗余子系统数量的增加,系统的平均无故障时间也增加了。
               模冗余系统
               m模冗余系统由m个(m=2n+1为奇数)相同的子系统和一个表决器组成,经过表决器表决后,m个子系统中占多数相同结果的输出作为系统的输出,如下图所示。
               
               模冗余系统
               在m个子系统中,只有n+1个或n+1个以上子系统能正常工作,系统就能正常工作,输出正确结果。假设表决器是完全可靠的,每个子系统的可靠性为R0,则m模冗余系统的可靠性为:
               
               其中为从m个元素中取j个元素的组合数。
               在实际应用系统中,往往是多种结构的混联系统。例如,某高可靠性计算机系统由下图所示的冗余部件构成。
               显然,该系统为一个串并联综合系统,我们可以先计算出中间2个并联系统的可靠度,根据并联公式R=1-(1-R1)×(1-R2)×…×(1-Rn),可得到3个部件并联的可靠度为1-(1-R3,2个部件并联的可靠度为1-(1-R2。然后,再根据串联公式R=R1×R2×…×Rn,可得到整个系统的可靠度为:R×(1-(1-R3)×(1-(1-R2)×R
               
               某计算机系统
 
       硬件
        硬件是计算机物理设备的总称,也称为硬件设备,通常是电子的、机械的、磁性的或光的元器件或装置,一般分为中央处理器、存储器和输入、输出设备。
   题号导航      2015年下半年 系统架构设计师 下午试卷 案例   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
 
第3题    在手机中做本题