软件可靠性基本概念
软件可靠性是软件产品在规定的条件下和规定的时间区间内完成规定功能的能力
失效严重程度是对用户具有相同影响的失效集合
可靠性测试是对软件产品的可靠性进行调查、分析和评价的一种手段,其目的可以归纳为:
- 发现软件系统在需求、设计、编码、测试和实施等方面的各种缺陷
- 为软件的使用和维护提供可靠性数据
- 确认软件是否达到可靠性的定量要求
软件可靠性建模
软件可靠性模型是为预计或估算软件的可靠性所建立的可靠性框图和数学模型,建立可靠性模型是为了将复杂系统的可靠性逐级分解为简单系统的可靠性,以便于定量预计、分配、估算和评价复杂系统的可靠性。
从技术角度看,影响软件可靠性的主要因素如下:
- 运行剖面(环境),软件可靠性的定义是相对运行环境而言的,不同环境,可靠性表现不一样
- 软件规模
- 软件内部结构
- 软件的开发方法和开发环境
- 软件的可靠性投入
软件可靠性建模方法 一般由以下几部分组成:模型假设、性能度量、参数估计方法、数据要求
好的软件可靠性模型具有的特性:基于可靠的假设、简单、计算一些有用的量、给出为了失效行为的好的映射、可广泛应用
软件可靠性分类:种子法模型、失效率类模型、曲线拟合类模型、可靠性增长模型、程序结构分析模型、输入域分类模型、执行路径分析方法模型、非齐次泊松过程模型、马尔可夫过程模型、贝叶斯分析模型
软件可靠性管理 软件可靠性管理的内容包括软件工程各个阶段的可靠性活动的目标、计划、进度、任何和修正措施等
软件可靠性设计
保障软件可靠性最有效、最经济、最重要的手段是在软件设计阶段采取措施进行可靠性控制。
软件可靠性设计技术主要有:容错技术、检错设计、降低复杂度设计等技术
软件可靠性设计要遵循的原则:
- 必须在软件的总体设计框架中使用,并且不能与其他设计原则相冲突
- 在满足提高软件质量要求的前提下,以提高和保障软件可靠性为最终目标
- 应确定软件的可靠性目标,不能无限扩大化,并且排在功能度、用户需求和开发费用之后考虑
容错设计技术 主要有恢复块设计、N版本程序设计、冗余设计
检错技术 检错技术实现代价低于容错技术和冗余技术,缺点是不能自动解决故障,出现故障后如果不进行人工干预,将导致软件系统不能正常运行
降低复杂度设计 软件复杂性分为模块复杂性和结构复杂性
系统配置技术 主要有双机热备技术、服务器集群技术
软件可靠性评价
软件可靠性评价是指选用或建立合适的可靠性数学模型,运用统计技术和其他手段,对软件可靠性测试和系统运行期间收集的软件失效数据进行处理,并评估和预测软件可靠性的过程,该过程包含:选择可靠性模型、收集可靠性数据、可靠性评估和预测