4.2.6 可靠性

软件产品质量属性中的可靠性是指在特定条件下使用时,软件产品维持规定的性能级别的能力。

可靠性可被进一步细分为5个子属性,如表4-5所示。

表4-5 可靠性子属性

下面3个层层递进的句子,可以帮助我们理解可靠性的要求。

第一层:产品、系统最好不要出故障,即成熟性。

第二层:产品、系统对故障和异常有一定的容忍度,出现故障了不要影响主要的功能和业务,即容错性。

第三层:如果影响了主要功能和业务,系统可以尽快定位并恢复,即易恢复性。

而可用性代表成熟性(不要出故障,控制失效的频率)、容错性(对故障的容忍度)和易恢复性(控制每个失效发生后系统无法工作的时间)的组合,实际工作中我们常用系统、产品可用状态百分比来评估可用性,很多时候,我们也用这个指标来整体评估可靠性。

“几个9”是衡量系统可用性的一种标准方式,其表示产品、系统在1年的使用过程中最多可能出现的业务中断时间,表4-6给出了“几个9”的计算方法、宕机时间和适用的产品领域。

表4-6 “几个9”的计算方法、宕机时间和适用的产品领域

用户实际使用时,会使用如下公式来计算产品、系统实际的可用性A:

式中:

·MTBF(Mean Time Between Failure)为平均故障间隔时间。

·MTTR(Mean Time To Repair)为平均故障修复时间。

另外还有一点需要特别指出,系统在遭遇攻击后,产品、系统应该能快速恢复,这个隐含的要求也属于可靠性,也就是易恢复性。

接下来我们同样以Windows计算器为例,讨论可靠性中包含的几个子属性是如何体现的。

Windows计算器如何体现可靠性

1)可靠性——成熟性

对Windows计算器来说,成熟性可以理解为产品功能失效的概率。例如,计算器在持续运行一段时间后,就会出现计算方面的错误。一般来说,这种错误都可以通过“重启软件”“重启设备”等方法恢复。

2)可靠性——容错性

对Windows计算器来说,容错性可以理解为产品应对用户“错误输入”的能力,如“输入除数0(1/0)”“输入一个超过计算器能够处理的长度的数字”等。

我们希望计算器能够有一定的容错机制,能够判断用户在使用过程中是否输入了“非法值”,并能针对“非法输入”的内容和原因给出错误提示。如输入除数0,计算器能够提示“除数不能为零”,如图4-11所示;输入过长的数字,计算器能够提示“输入数字过长”。计算器容错性即其不会因为用户的任何错误输入,引发计算器出现无响应、软件重启等异常。

图4-11 除数为0的情况

3)可靠性——易恢复性

对Windows计算器来说,易恢复性可以理解为计算器一旦出现了产品自身无法预期的异常(如无响应、重启)后,能够恢复。

从产品恢复的方式来说,能够自动恢复当然是最好的,如产品异常重启后,软件能够自动启动,最好还能恢复到重启前的页面。和自动恢复方式对应的是被动恢复,如产品长时间出现无响应的情况,需要用户手动杀死进程,重启软件,产品才能恢复正常工作。显然,我们不希望产品在出现异常后总是通过被动恢复来解决问题。

4)可靠性——可用性

如果我们统计Windows计算器在一段时间内,出现故障的时间和可以正常使用的时间的比例,得到的就是Windows计算器的可用性。这个结果也可以用来整体评估Windows计算器的可靠性。