软件可靠度设计

容错技术设计

  • 恢复块设计
    • 将程序划分为一系列操作构成的恢复块。每个恢复块包含多个功能相同但设计不同的程序块,当检测到某个程序块出现故障时,可以切换到备用程序块
  • N版本程序设计
    • 设计不同的软件版本,对同样的输出采用多数表决的方式,要求各版本使用不同的算法、编程语言、测试方法等确保相互独立。可以防止单个版本故障导致整体失效
  • 冗余设计
    • 在主系统之外设计不同实现方式的备用软件模块。当主模块出现故障时,可以切换到备用模块。可以有效提高软件可靠性,但会增加额外开销

检错技术

在软件中设置检查点和检测机制,检测软件运行状态。一旦发生故障,及时报警以便人工干预。实现方式包括检测返回结果、运行时间等。处理方式一般是停止软件并报警。

降低复杂度设计

软件复杂度包括模块内部复杂性和模块间关联复杂性。过高的复杂度是软件缺陷的重要根源。通过简化软件结构、优化数据流等方式降低复杂度,提高可靠性。

系统配置技术

双击热备:采用主备服务器模式,通过“心跳”检测切换。服务器集群:多台服务器组成单一系统,当某台服务器故障时,其他服务器可接管。

影响软件可靠性的五大因素

  • 运行剖面(环境)
  • 软件规模
  • 软件内部结构
  • 软件的开发方法和开发环境
  • 软件的可靠性投入