论软件的可靠性设计 现代军事和商用系统中,随着系统中软件成分的不断增加,系统对软件的依赖性越来越强。软件可靠性已成为软件设计过程中不可或缺的重要组成部分。实践证明,保障软件可靠性最有效、最经济、最重要的手段是在软件设计阶段采取措施进行可靠性控制,由

admin2016-05-11  31

问题 论软件的可靠性设计
    现代军事和商用系统中,随着系统中软件成分的不断增加,系统对软件的依赖性越来越强。软件可靠性已成为软件设计过程中不可或缺的重要组成部分。实践证明,保障软件可靠性最有效、最经济、最重要的手段是在软件设计阶段采取措施进行可靠性控制,由此提出了可靠性设计的概念。可靠性设计就是在常规的软件设计中,应用各种方法和技术,使程序设计在兼顾用户的功能和性能需求的同时,全面满足软件的可靠性要求。
    请围绕“软件的可靠性设计”论题,依次从以下三个方面进行论述。
    1.概要叙述你参与管理和开发的软件项目以及你在其中所担任的主要工作。
    2.简要说明目前比较主流的软件可靠性设计技术,结合项目实际情况,阐述所选择的可靠性设计技术及其原因。
    3.结合你具体参与管理和开发的实际项目,举例说明所选取的软件可靠性技术的具体实施过程,并详细分析实施效果。

选项

答案一、简要叙述你参与管理和开发的软件项目,并明确指出在其中承担的主要任务和开展的主要工作。 二、一般来说,被认可的且具有应用前景的软件可靠性设计技术主要有容错设计、检错设计和降低复杂度设计等技术。 1.容错设计技术 对于软件失效后果特别严重的场合,如飞机的飞行控制系统、空中交通管制系统及核反应堆安全控制系统等,可采用容错设计方法。常用的软件容错技术主要有恢复块设计、N版本程序设计和冗余设计三种方法。 (1)恢复块设计 恢复块设计就是选择一组操作作为容错设计单元,从而把普通的程序块变成恢复块。一个恢复块包含若干个功能相同、设计差异的程序块文本,每一时刻有一个文本处于运行状态。一旦该文本出现故障,则用备份文本加以替换,从而构成“动态冗余"。 (2)N版本程序设计 N版本程序的核心是通过设计出多个模块或不同版本,对于相同初始条件和相同输入的操作结果,实行多数表决,防止其中某一模块/版本的故障提供错误的服务,以实现软件容错。 (3)冗余设计 软件冗余设计技术实现的原理是在一套完整的软件系统之外,设计一种不同路径、不同算法或不同实现方法的模块或系统作为备份,在出现故障时可以使用冗余的部分进行替换,从而维持软件系统的正常运行。 2.检错设计 在软件系统中,对无需在线容错的地方或不能采用冗余设计技术的部分,如果对可靠性要求较高,故障有可能导致严重的后果。这时一般采用检错技术,在软件出现故障后能及时发现并报警,提醒维护人员进行处理。 采用检错设计技术需要着重考虑几个要素:检测对象、检测延时、实现方式和处理方式。 (1)检测对象,即检测点和检测内容。在设计时应考虑把检测点放在容易出错的地方和出错对软件系统影响较大的地方,检测内容选取那些有代表性的、易于判断的指标。 (2)检测延时,在软件检错设计时要充分考虑到检测延时,如果延时长到影响故障的及时报警,则需要更换检测对象或检测方式。 (3)实现方式,最直接的一种实现方式是判断返回结果,如果返回结果超出正常范围,则进行异常处理。计算运行时间也是一种常用的技术,如果某个模块或函数运行超过预期的时间,可以判断出现故障。另外,还有置状态标志位等多种方法,自检的实现方式要根据实际情况来选用。 (4)处理方式。大多数检测采用“查出故障一停止软件系统运行—报警”的处理方式,但也有采用不停止或部分停止软件系统运行的情况,这一般由故障是否需要实时处理来决定。 3.降低复杂度设计 降低复杂度设计的思想就是在保证实现软件功能的基础上,简化软件结构,缩短程序代码长度,优化软件数据流向,降低软件复杂度,从而提高软件可靠性。 除了容错设计、检错设计和降低复杂度设计技术外,人们尝试着把硬件可靠性设计中比较成熟的技术,如故障树分析(FTA)、失效模式与效应分析(FMEA)等运用到软件可靠性设计领域,这些技术大多数运用一些分析、预测技术,在软件设计时就充分考虑影响软件可靠性的因素,并采取一些措施进行优化。 三、考生需结合自身参与项目的实际状况,指出其参与管理和开发的项目中是如何应用所选择的软件可靠性设计技术的,说明具体的实施过程、使用的方法和工具,并对实际实施效果进行分析。

解析
转载请注明原文地址:https://jikaoti.com/ti/lL67FFFM
0

最新回复(0)