软件可靠性需求是软件质量因素之一。无论是有意识还是无意识,客户都希望软件是可靠的软件 可靠性,但软件的可靠性需求很难量化。通常,任务书或需求说明书中给出的可靠性需求都是定性的描述:
软件操作必须具有容错能力。
或者使用系统可靠性指标:
该软件的工作可靠性为0.999(置信水平0.8)
但这两种描述方法都无法让开发人员清楚地知道如何设计、实现和测试软件的可靠性需求,软件的可靠性需求成为一种摆设。
如何定量描述软件的可靠性需求,以便于设计、实现和测试?
我们不妨采用GJB5236《军用软件质量测量》标准中软件可靠性度量中定义的度量项来定量描述软件可靠性需求。
软件可靠性度量的测量项目有哪些?
GJB5236质量模型将可靠性定义为软件产品在规定条件下使用时,维持规定性能水平的能力。软件不会磨损或老化。软件可靠性是由于需求、设计和实现中的故障而引起的。这些操作导致的故障取决于软件产品的使用。它具有四个特性:成熟度、容错性、可恢复性和可靠性合规性。
a) 成熟度:软件产品避免由于软件故障而发生故障的能力。
为了测量该子特性,可以采用以下措施:
1)估计潜在故障密度:测量未来可能发生的故障数量。
2)测试用例的故障密度:衡量在一定时间内检测到多少个故障。
3)故障密度:衡量在一定测试周期内检测到多少个故障。
4)故障解决率:衡量解决了多少故障。
5)故障排除:衡量已纠正了多少故障。
6)平均故障间隔时间(MTBF):测量软件运行中发生故障的频率。
7)测试覆盖率:衡量测试期间执行的测试用例。
8)测试成熟度:衡量实际通过执行的用例的数量。
b) 容错:软件产品在出现软件故障或违反指定接口时维持指定性能水平的能力。
为了测量该子特性,可以采用以下措施:
1)避免崩溃:衡量软件导致整个运行环境崩溃的情况。
2)故障避免:衡量可以控制多少种故障模式以避免灾难性故障。
3)抗误操作性:衡量已经达到的抵抗误操作的能力的数量。
c) 可恢复性:软件产品在发生故障时重新建立指定的性能水平和恢复直接受影响的数据的能力。
为了测量该子特性,可以采用以下措施:
1)可用性:衡量系统在规定时间段内的可用程度。
2)平均停机时间:衡量系统在发生故障之前逐渐重新启动之前不可用的平均时间。
3) 平均恢复时间:测量从最初的部分恢复到完全恢复系统所需的平均时间。
4)可重启性:衡量系统在规定时间内重启的频率。
5)可修复性:衡量软件产品在异常情况下自我修复的能力。
6)修复有效性:衡量软件修复能力的有效性。
d) 可靠性合规性:软件产品遵守可靠性标准、公约和法规的能力。
为了测量该子特性,采用以下措施:
可靠性合规性:衡量遵循可靠性的合规性项目的数量。
GJB5236标准对所有度量项都给出了计算公式,这些度量项都是可测试的,因此,用这些度量项来描述软件的可靠性需求,这些需求必须是可设计、可实现、可测试的。
例如:
软件的可靠性应满足以下要求:
1)故障解决率100%;
2)测试覆盖率100%;
3)MTBF大于1000小时;
…
但这些可靠性度量项目并不适用于所有软件软件 可靠性,组织应根据软件的安全关键性等级和特性进行量身定制。