Skip to content

基本概念

  • 软件产品在规定的条件下和规定的时间区间完成规定功能的能力
  • 软件可靠性与硬件可靠性的区别
    • 软件复杂性比硬件高
    • 软件不存在物理退化
    • 软件是唯一的
    • 硬件更新较慢,软件较快
  • 软件可靠性的定量描述
    • 规定时间
    • 失效概率
    • 可靠度
    • 失效强度
    • 平均失效时间 MTTF:发生故障前正常运行的时间
    • 平均恢复前时间 MTTR:发生故障后的修复时间
    • 平均故障间隔时间 MTBF = MTTF + MTTR,失效或维护中所需的平均时间
  • 串并联系统的可靠性
    • 假设每个设备的可靠性是 R1、R2 … Rn
    • 串联系统:R = R1*R2*…*Rn
    • 并联系统:R=1-(1-R1)*(1-R2)*…*(1-Rn)
  • 意义
    • 失效会造成灾难性后果
    • 失效在整个计算机系统失效中比例较高
    • 软件可靠性技术很不成熟
    • 软件可靠性问题是造成费用增长的主要原因之一
    • 软件对生产活动和社会生活的影响越来越大
  • 广义的软件可靠性测试:运用建模、统计、试验、分析和评价等一系列手段对软件系统实施的一种测试
  • 狭义的软件可靠性测试:获取可靠性数据,按预先确定的测试用例,在软件的预期使用环境中,对软件实施的一种测试

软件可靠性建模

  • 为预计或估算软件的可靠性所建立的可靠性框图和数学模型
  • 影响软件可靠性的主要因素包括:运行环境、软件规模、软件内部结构、软件的开发方法和开发环境、软件的可靠性投入
  • 软件的可靠性模型组成
    • 模型假设
    • 性能度量
    • 参数估计方法
    • 数据要求
  • 绝大多数模型包含三个共同假设
    • 代表性假设
    • 独立性假设
    • 相同性假设

软件可靠性管理

  • 目标:全面提高和保证软件可靠性
  • 主要对象:软件可靠性活动
  • 内容:软件工程的各个阶段的可靠性活动的目标、计划、进度、任务和修正措施

软件可靠性设计

  • 保障软件可靠性最好的方法:软件设计阶段采取措施
  • 可靠性设计即在常规的软件设计中,满足软件的可靠性要求
  • 原则:
    • 是软件设计的一部分
    • 以提高和保障软件可靠性为最终目标
    • 应确定软件的可靠性目标
  • 主要技术:容错设计、检错设计和降低复杂度设计
  • 技术可分为避错技术和容错技术
    • 避错:通过技术评审、系统测试和正确性证明等技术,在正式运行之前避免、发现和改正错误
    • 容错:运行过程中发生一定的硬件故障或软件错误时,仍能保持正常工作而不影响正确结果,主要采用冗余方法
  • 冗余是容错技术的基础
    • 主要方法是提供足够的冗余信息和算法程序,使系统在实际运行时能够及时发现程序设计错误,采取补救措施
    • 软件容错技术有 N 版本程序设计、恢复块方法和防卫式程序设计等
  • N 版本程序设计:N 个具有相同功能的程序同时执行一项计算,多数表决来选择结果。N 个版本的程序由不同的人独立设计、使用不同的方法、设计语言、开发环境和工具来实现
  • 恢复块设计(动态冗余):多重模块待机储备,当出现错误时,用一个备用的模块来代替并重新运行,各备用模块在待机时可一样工作、也可以不工作
  • 防卫式程序设计:不采取任何传统的容错技术就能实现软件,在程序中包含错误检查代码和错误恢复代码,使得一旦发生错误,程序就能撤销错误状态,恢复到一个已知的正确状态中去
  • 双机容错技术:软硬件结合,两台服务器和一个外接共享磁盘阵列以及相应的双机软件组成
    • 心跳方法保证联系,按照一定的时间间隔发送通信信号
    • 工作模式:双机热备模式、双机互备模式、双机双工模式
  • 集群技术:多台计算机组织起来协同工作,每台计算机承担部分计算任务和容错任务,通过计算机的负载转嫁机制完成新的负载分担
  • 负载均衡:集群系统中的一项重要技术,目的是加快集群系统的响应速度,提高客户端访问的成功概率,最大特征是多个节点的并行和共同工作,如何让所有节点承受的负荷平衡,主要技术
    • 基于特定软件的负载均衡(应用层):重定向
    • 基于 DNS 的负载均衡属于传输层负载均衡
    • 基于 NAT 的负载均衡
    • 反向代理负载均衡
    • 混合型负载均衡

软件可靠性测试与评价

  • 由以下活动组成
    • 可靠性目标的确定
    • 运行剖面的开发
    • 测试用例的设计
    • 测试实施
    • 测试结果的分析
  • 运行步骤:定义软件运行的剖面 —— 设计可靠性测试用例 —— 实施可靠性测试
  • 可靠性评价的三个过程:选择可靠性模式、收集可靠性数据、可靠性评估和预测
  • 可靠性数据的收集:收集软件失效数据
  • 可靠性评估和预测:判断是否达到了可靠性目标

如有转载或 CV 请标注本站原文地址