zoukankan      html  css  js  c++  java
  • 系统架构设计师-软件可靠性设计

      随着软件的日益普及,系统中的软件成分不断增加,使得系统对软件的依赖越来越强,软件的可靠性对系统可靠性的影响越来越大。实践证明保障软件可靠性最有效、最经济、最重要的手段是在软件设计阶段采取措施进行可靠性控制,为此提出了软件可靠性设计的概念。

      软件可靠性设计就是在常规的软件设计中,应用各种方法和技术使软件设计在兼顾用户功能和性能需求的同时,全面满足软件的可靠性要求,软件可靠性设计应用和软件的常规设计紧密结合,贯穿于软件设计过程的始终。

      可靠性设计需要遵循的原则如下:

      1,软件可靠性设计是软件设计的一部分,必须在软件的总体设计框架中进行,并且不能与其他设计原则相冲突。

      2,软件可靠性设计在满足提高软件质量要求的前提下,以提高和保障软件可靠性为最终目标。

      3,软件可靠性设计应该确定软件的可靠性目标,不能无限扩大,并且在功能、用户需求、开发费用之后考虑。

      常见的可靠性设计技术有容错设计、检错设计、降低复杂度设计等技术。

      1,容错设计技术,对于软件失效后果特别严重的场合,采用容错设计技术。常见的容错设计技术有恢复块设计、N版本程序设计和冗余设计。

      恢复块设计,选择一组软件操作作为容错设计单元,把普通的程序块变成恢复块。一个恢复块包含若干个功能相同、设计差异的程序块文本。一个运行文本和多个备份文本构成“动态冗余”,一旦运行文本出现故障,则备份文本替换,软件容错的恢复块方法就是使软件包含一系列恢复块。

      N版本程序设计,核心是通过设计多个模块或不同版本,对于相同初始条件和相同输入的操作结果,实现多数表决。防止其中某一软件模块、版本的故障提供错误的服务,以实现软件容错。

      冗余设计,在一套完整软件系统之外,设计一种不同路径、不同算法或不同实现方法的模块或系统作为备份。在出现故障时可以使用冗余的部分进行替换。从而位置软件系统的正常运行,缺点是费用和资源的消耗会有所增加。

      2,检错技术,在软件系统中,对无须在线容错或不能采用冗余设计技术的部分,如果对可靠性要求较高,故障有可能导致严重后果,则一般采用检错技术。即在软件出现故障后能及时发现并报警,提醒维护人员进行处理。检错技术实现的代价一般低于容错技术和冗余技术,但它是一个明显的不足就是不能自动解决故障。如果出现故障后不进行人工干预,将最终导致软件系统不能正常运行。采用检错设计技术要着重考虑的要素是检测对象、检测延时、实现方式和处理方式。

      3,,降低复杂度设计,软件复杂性与软件可靠性有着密切的关系,是产生软件缺陷的重要根源。在设计时考虑降低软件的复杂度,是提供软件可靠性的有效方法。降低复杂度设计的思想是在保证实现软件功能的基础上,简化软件结构、缩短程序代码、优化软件数据流向及降低软件复杂度,从而提高软件可靠性。

      在软件可靠性设计之前和软件可靠性设计过程中都需要采用软件可靠性分析赫尔预测方法来确定当前系统中的主要可靠性因素和目标,常见的软件可靠性分析方法包括故障树分析方法、失效模型与效用分析方法。

      1,故障树分析方法,一种自顶向下的软件可靠性分析方法,即从软件系统不希望发生的事件(顶事件),特别是对人员和设备的安全及可靠性产生重大影响的事件开始向下逐步追查导致顶事件发生的原因,直至基本事件(底事件)。从而确立软件故障原因的各种可能组合方式和发生概率,基本的步骤是软件故障树的建立、确定分析和定量分析。

      2,失效模式与效应分析方法,在软件开发阶段的早期,通过识别软件失效模式分析造成的后果。研究分析各种失效模式产生的原因,寻找消除和减少其有害后果的方法。以便尽早发现潜在的问题,并采取相应措施,从而提高软件的可靠性和安全性。SFMEA的分析对象可以使开发早期阶段的高层次的子系统、部件,也可以是详细设计阶段的单元、模块。对于不同的分析对象,其软件失效模式不同,采用的分析方法也不同,前者采用系统级分析方法,后者采用详细级分析方法,其基本的步骤是系统定义、软件时下模式分析、软件失效原因分析、软件失效影响分析、改进措施分析。

  • 相关阅读:
    Python字典dict对象方法总结
    PythonString字符串的相关方法
    Mysql5.7.20使用group by查询(select *)时出现错误修改sql mode
    HtmlTestRunner无法生成HTML报告问题
    话说 type 之 record 记录的使用技巧 F#
    Silverlight OOB 获取桌面可视尺寸 F# PInvoke
    目前让 F# 支持 Silverlight 5 的解决方案(包括 lazy 不可用)
    话说 type 之 let 绑定与 val 显式字段 F#
    这两天自己模仿写的一个Asp.Net的显示分页方法 附加实体转换和存储过程 带源码下载
    Asp.net 在三层架构中事务的使用
  • 原文地址:https://www.cnblogs.com/guanghe/p/15466739.html
Copyright © 2011-2022 走看看