软件故障可以归类为:
瞬态故障:这些故障仅在特定输入下发生。
永久故障:此故障出现在所有输入上。
可恢复的故障:无需操作员的帮助即可恢复系统。
不可恢复的故障:系统只能在操作员的帮助下恢复。
非损坏故障:故障不会损坏系统状态或数据。
损坏故障:它会损坏系统状态或数据。
软件故障可能是由于本应满足的规范的错误, 歧义, 疏忽或误解, 编写代码时的粗心或能力不足, 测试不足, 软件使用不当或意外使用或其他无法预见的问题引起的。
硬件与软件的可靠性
硬件可靠性 | 软件可靠性 |
---|---|
硬件故障主要是物理故障。 | 软件故障是设计故障, 很难可视化, 分类, 检测和纠正。 |
硬件组件通常会由于磨损而失效。 | 软件组件由于错误而失败。 |
在硬件中, 设计故障也可能存在, 但物理故障通常占主导地位。 | 在软件中, 如果不考虑将软件模块上传到位的简单操作, 那么我们可以简单地找到一个严格对应的”制造”对应物作为硬件制造过程。因此, 一旦将软件上传到存储中并开始运行, 软件的质量就不会改变。 |
硬件具有下图所示的故障特征:称为浴盆曲线。期间A, B和C分别表示老化阶段, 使用寿命和寿命终止阶段。 | 软件可靠性没有显示出与硬件相同的功能。下图显示了一条可能的曲线:如果我们将软件可靠性投影在相同的轴上。 |
硬件和软件曲线之间有两个明显的区别是:
一个区别是, 在最后阶段, 软件的故障率没有硬件那样高。在此阶段, 该软件即将过时。没有动机进行任何软件升级或更改。因此, 故障率不会改变。
第二个区别是, 在使用寿命期内, 每次进行升级时, 软件的失败率都会急剧增加。故障率逐渐趋于平稳, 部分原因是由于更新后产生并修复了缺陷。
上图中的升级表示功能升级, 而不是可靠性升级。对于功能升级, 由于增强了软件的功能, 可能会增加软件的复杂性。如果错误修复将其他缺陷引入软件, 则甚至错误修复也可能是导致更多软件故障的原因。对于可靠性升级, 如果升级的目的是增强软件可靠性, 例如使用更好的工程方法(如无尘室方法)重新设计或重新实现某些模块, 则很可能导致软件故障率下降。
下面列出了软件与硬件相比的独特功能的部分列表:
失败原因:软件缺陷主要是设计缺陷。
磨损:软件没有与能源有关的磨损阶段。错误可能会在没有警告的情况下出现。
可修复的系统:定期重新启动可以帮助修复软件查询。
时间依赖性和生命周期:软件可靠性不是操作时间的目的。
环境因素:不影响软件可靠性, 除非它可能影响程序输入。
可靠性预测:软件可靠性不能从任何物理基础上进行预测, 因为它完全取决于设计中的人为因素。
冗余:如果使用相同的软件元素, 则不能提高软件的可靠性。
界面:软件界面只是视觉以外的概念。
失效率的诱因:通常无法通过对单独陈述的分析来预测。
内置标准组件:易于理解且经过广泛测试的标准元件将有助于提高可维护性和可靠性。但是在软件行业, 我们没有观察到这种趋势。代码重用已经存在了一段时间, 但程度很小。除了某些标准化的逻辑结构外, 没有用于软件的标准元素。
评论前必须登录!
注册