软件失效机制

2025年3月17日 | 阅读 3 分钟

软件故障可以分为以下几类:

瞬时故障: 这些故障仅在特定输入下发生。

永久故障: 这种故障在所有输入下都会出现。

可恢复故障: 系统可以在没有操作员帮助的情况下恢复。

不可恢复故障: 系统只能在操作员的帮助下恢复。

非损坏性故障: 故障不会损坏系统状态或数据。

损坏性故障: 它会损坏系统状态或数据。

软件故障可能是由于错误、歧义、疏忽或对软件应该满足的规范的误解、编写代码时的粗心或无能、测试不足、软件的不正确或意外使用或其他无法预料的问题引起的。

硬件可靠性 vs. 软件可靠性

硬件可靠性软件可靠性
硬件故障主要是物理故障。软件故障是设计缺陷,难以可视化、分类、检测和纠正。
硬件组件通常因磨损而失效。软件组件因错误而失效。
在硬件中,可能也存在设计缺陷,但物理故障通常占主导地位。在软件中,我们无法简单地找到与硬件制造过程对应的严格的"制造"过程,如果将软件模块上传到位的简单操作不算数的话。 因此,一旦软件上传到存储并开始运行,其质量就不会改变。
硬件表现出下图所示的故障特征
Software Failure Mechanisms
它被称为浴缸曲线。 期间 A、B 和 C 分别代表老化阶段、有效寿命阶段和寿命终止阶段。
软件可靠性与硬件没有相似的特征。 一个可能的曲线如下图所示
Software Failure Mechanisms
如果我们把软件可靠性投射到同样的轴上。

硬件和软件曲线之间有两个显著的区别

一个区别是,在最后阶段,软件不像硬件那样具有增加的故障率。 在这个阶段,软件正在接近报废; 没有任何动机对软件进行任何升级或更改。 因此,故障率不会改变。

第二个区别是,在有效寿命阶段,每次进行升级时,软件的故障率都会急剧增加。 故障率逐渐趋于稳定,部分原因是更新后产生的缺陷被修复。

上图中的升级意味着功能升级,而不是为了可靠性进行的升级。 对于功能升级,软件的复杂性可能会增加,因为软件的功能得到了增强。 即使是错误修复也可能成为更多软件故障的原因,如果错误修复导致软件中出现其他缺陷。 对于可靠性升级,如果升级的目标是提高软件的可靠性,例如使用更好的工程方法(例如净室方法)重新设计或重新实施某些模块,则可能会导致软件故障率下降。

下面列出了软件与硬件相比的几个明显特征

Software Failure Mechanisms

故障原因: 软件缺陷主要是设计缺陷。

磨损: 软件没有与能源相关的磨损阶段。 错误可能会在没有警告的情况下出现。

可修复系统: 定期重启可以帮助修复软件查询。

时间依赖性和生命周期: 软件可靠性不是运行时间的用途。

环境因素: 除了可能影响程序输入外,不影响软件可靠性。

可靠性预测: 软件可靠性无法从任何物理基础上预测,因为它完全取决于设计中的人为因素。

冗余: 如果使用相同的软件元素,则不能提高软件可靠性。

接口: 软件接口仅仅是概念性的,而不是可视化的。

故障率动机因素: 通常无法从对单独语句的分析中预测出来。

使用标准组件构建: 充分理解和广泛测试的标准元素将有助于提高可维护性和可靠性。 但在软件行业,我们还没有观察到这种趋势。 代码重用已经存在一段时间了,但程度很小。 除了某些标准化的逻辑结构外,没有软件的标准元素。