|
@@ -164,3 +164,22 @@ Microsoft公司早期的窗口系统,如Windows 3.x和Windows 9x,动不动
|
|
|
> 原书未提及,自行了解
|
|
|
##### `#e` “误差累积”问题
|
|
|
> 原书未提及,自行了解
|
|
|
+
|
|
|
+
|
|
|
+软件可靠性分析通常采用统计方法,
|
|
|
+遗憾的是目前可供第一线开发人员使用的成果很少见,
|
|
|
+大多数文章限于理论研究。我曾买了一本关于软件可靠性的著作,
|
|
|
+此书充满了数学公式,实在难以看懂,更不知道怎样应用。
|
|
|
+请宽恕我的愚昧,我把此“天书”给“供养”起来,没敢用笔画一处记号。
|
|
|
+口语中的可靠性含义宽泛,几乎囊括了正确性、健壮性。
|
|
|
+只要人们发现系统有毛病,便归结为可靠性差。
|
|
|
+从专业角度讲,这种说法是不对的,
|
|
|
+可是我们并不能要求所有的人都准确地把握质量属性的含义。
|
|
|
+有必要搞清楚“故障”和“错误”这两个容易混淆的概念。
|
|
|
+
|
|
|
+在《现代英汉词典》里,“故障(Fault)”一词的定义是:使设备、部件或元件不能按所要求的方式运行的一种意外情况,可能是物理的也可能是逻辑的。
|
|
|
+
|
|
|
+那些潜伏在代码中的错误往往是不明显的,之所以在测试的时候没有暴露,是因为测试时的环境和条件不足以使之暴露,更何况我们无法对代码进行最彻底的测试。由此可见,故障是在经过日积月累,满足了一定的条件之后才出现的。例如,“千年虫”问题,“内存泄漏(吃内存)”导致内存耗尽,“误差累积”导致计算错误进而导致连锁反应,“性能开销累积”导致性能显著下降,等等。因此,故障通常都是不可预料的、灾难性的。
|
|
|
+
|
|
|
+
|
|
|
+“错误”的含义要广泛得多,例如,语法错误、语义错误、文件打开失败、动态存储分配失败等。一般说来,程序错误是可以预料的,因此可以预设错误处理程序,运行时这些错误一旦发生,就可以调用错误处理程序把它干掉,程序还可以继续运行。因此,错误的结果一般来说不是灾难性的。
|