文章目录
0. 概述
-
适用:软件开发过程中的软件可靠性评价:
-
行为:
- 估计软件当前可靠性,以确认是否可以终止测试并发布软件
- 预计软件要达到相应的可靠性水平所需要的时间和工作量
- 评价提交软件时的软件可靠性水平
-
平价过程
- 选择可靠性模型
- 收集可靠性数据
- 可靠性评估和预测
1. 选择可靠性模型
- 对于不同的软件系统,的可靠性分析目的不同,选择的模型也不同。
针对可靠性模型的构成以及使用模型来进行可靠性评价的目的,可以从以下几个方面进行比较和选择:
2.1 模型假设
- 概述:
- 是可靠性模型的基础
- 应符合软件系统的现有状况
- 与假设冲突的因素在软件系统中应该是可忽略
- 对模型的假设应逐条细致分析
举例:有的模型假定检测或发现的软件缺陷是立即排除掉的,而且排除时间忽略不计,如果现有的软件系统对于严重程度类较低的软件缺陷不进行立即排错,那么这个模型显然是不适用的。
2.2 预测的能力与质量
- 概述:
- 预测的能力:模型根据已有的可靠性数据,预测将来的可靠性和失效概率的能力
- 预测的质量:其预测结果的准确程度
- 在满足其他条件的前提下,应尽量选用比较成熟、应用较广的模型作为分析模型
2.3 模型输出值
- 根据可靠性测试目的来确定哪些模型的输出值满足可靠性评价需求
- 需要精确估计的可靠性定量指标:
- 当前的可靠度
- 平均无失效时间
- 故障密度
- 期望达到规定可靠性目标的日期
- 达到规定的可靠性目标的成本要求
2.4 模型使用的简便性
- 模型需要的数据易于收集
- 模型应该简单易懂
- 模型应该便于使用
测试人员除了输入可靠性数据外,不需要深入模型内部进行一些额外的工作。
3. 可靠性数据的收集
- 可靠性数据:
- 主要是指软件失效数据
- 是软件可靠性评价的基础
3.2 数据的来源
- 贯穿于整个软件生命周期
- 主要在软件测试、实施阶段收集的
- 面向缺陷的可靠性测试产生的测试数据
- 软件工程的需求、设计和开发阶段的可靠性活动产生的可靠性数据
3.3 收据收集的难点
- 可靠性数据的规范不统一,对软件进行度量的定义混乱不清
例如,时间、缺陷、失效、模型结构等的定义缺乏统一的标准
- 数据收集工作的连续性不能保证
资金、人力、时间的投入,往往使得数据收集在软件的开发计划中被忽略
- 缺乏有效的数据收集手段
除可靠性测试之外,其他方面工具缺乏
- 数据的完整性不能保证
收集到的数据往往有遗漏
- 数据质量和准确性不能保证
不完全的排错及诊断,使收集的数据中含有不少虚假的成分
3.4 解决方案
- 及早确定所采用的可靠性模型
以确定需要收集的可靠性数据,并明确定义可靠性数据规范中的一些术语和记录方法,如时间、失效、失效严重程度类的定义,制定标准的可靠性数据记录和统计表格等。
- 制订良好的可靠性数据收集计划
指定计划、并指定专人负责,抽取部分开发人员、质量保证人员、测试人员、用户业务人员参加,按照统一的规范收集记录可靠性数据
- 重视测试数据的
整理
和分析
- 利用
数据库
来完成可靠性数据的存储和统计分析
4. 软件可靠性的评估和预测
4.1 软件可靠性评估解答的问题
- 软件是否达到了可靠性目标
- 软件是否达到了可使用的条件
- 是否可以终止测试
- 若没有达到可靠性目标,再投入多少人力、物理可以达到
- 运行指定时间后,是否还能达到交付的可靠性水平
4.2 未测出失效的处理
- 不能认为可靠度是1.0
- 处理方案1:简单地假设该测试是基于二项式分布的,这样就可以对可靠性进行保守估计
- 处理方案2:根据无故障运行的测试用例的数量,估计可靠性的等级
4.3 辅助方法
1)失效数据的图形分析法
- 概念:是一种通过运行图形处理软件,对失效数据进行直观分析的方法
- 指标:
- 累积失效个数图形
- 单位时间段内的失效数的图形
- 失效间隔时间图形
2)试探性数据分析技术
- 概念:
- Exploratory Data Analysis
- 对于失效数据图形进行一定的数字化分析,从而发现和揭示出数据中的异常
- 对可靠性分析有用的信息:
- 循环相关
- 短期内失效数的急剧上升
- 失效数集中的时间段
- 这种分析方法常可以发现因排错引入新的缺陷、数据收集的质量问题、时间域的错误定义等问题