[系统架构设计师]软件可靠性基础知识(九)
[系统架构设计师]软件可靠性基础知识(九)
一.软件可靠性基本概念
1.软件可靠性定义
在规定的时间内,软件不引起系统失效的概率
2.软件可靠性的定量描述
在软件使用条件,在规定时间内,系统的输入/输出,系统使用等变量构成的数学表达式
3.可靠性的目标
对使用的额软件的性能满意程度的期望。可靠度,平均失效时间,故障强度
4.可靠性测试目的
二.软件可靠性建模
1.影响软件可靠性因素
运行环境,软件规模,软件的内部结构,软件的开发方法和开发环境,软件的可靠性投入
2.软件可靠性模型的组成和特性
3.可靠性建模方法
种子法,失效率类,曲线拟合类,可靠性增长,程序结构分析,输入域分类,执行路径分析方法,非齐次泊松过程,马尔可夫过程,贝叶斯分析
三.软件可靠性管理
1.各阶段
2.软件可靠性设计
1.技术:容错设计技术,检错技术,降低复杂度技术,系统配置技术
2.容错设计技术:恢复块设计,N版本程序设计,冗余设计
3.恢复块设计:选择一组操作作为容错设计单元,把普通的程序块变成恢复块
4.N版本程序设计:通过设计多个模块或不同版本,对相同的初始条件和相同输入的操作结果,实行多数表决,防止其中某一软件模块/版本的故障提供错误的服务
5.冗余设计:在一套完整的软件系统之外,设计一种不同路径,不同算法或不同实现方法的模块或系统作为备份,在出现故障时可使用冗余部分进行替换
6.检错技术:检错技术代价低于容错技术和冗余技术,但是不能自动解决故障,需要人工干预。检错技术着重考虑检测对象,检测延时,实现方式,处理方式四个要素
7.降低复杂度技术:保证实现软件功能基础上,简化软件结构,缩短程序代码长度,优化软件数据流向,降低软件复杂度,提高软件可靠性
8.系统配置技术:双机热备技术,服务器集群技术
9.双机热备技术:"心跳"保证主系统和备用系统联系,双机热备模式,双机互备模式,双机双工模式,
10.服务器集群技术:集群内各节点服务器通过内部局域网相互通信,若节点服服务器发生故障,这台服务器运行的应用被另一节点服务器自动接管
四.软件可靠性测试
1.软件可靠性测试概述
可靠性目标的确定,运行剖面的开发,测试用例的设计,测试实施,测试结果分析等
2.软件可靠性测试用例设计
3.软件可靠性测试的实施
可靠性数据:失效时间数据,失效间隔时间数据,分组时间内的失效数,分组时间的累积失效数
五.软件可靠性评价
1.软件可靠性评价概念
评估和预测软件可靠性过程:选择可靠性模型,收集可靠性数据,可靠性评估和预测
如何选择可靠性模型:模型假设的适用性,预测的能力与质量,模型输出值能否满足可靠性的评价需求
可靠性数据收集:尽可能早地确定可靠性模型,数据收集计划要有较强的可操作性,重视测试数据的分析和整理,充分利用技术手段(数据库技术)来完成分析和统计
满足可靠性的评价需求
可靠性数据收集:尽可能早地确定可靠性模型,数据收集计划要有较强的可操作性,重视测试数据的分析和整理,充分利用技术手段(数据库技术)来完成分析和统计