Wikipedia's Definition of a Software Bug Is Wrong

The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:

这是本文撰写时维基百科所述:

我认为这还不完整。这个定义完全排除了与“可维护性”和“可重用性”等方面有关的“非行为”缺陷。

正如你所知,每个软件都有功能性非功能性需求。功能性需求告诉我们软件必须做什么,而非功能性需求则记录了软件如何做到。例如,这是一个功能性需求:

如果我们的软件不能生成PDF报告而是崩溃了,那就是一个功能性错误。如果它生成了一个空白页面或者纯文本文档而不是PDF报告,那也是一个功能性错误。如果根本没有“生成PDF报告”的按钮,用户无法启动PDF生成过程,那也是一个功能性错误。

这里是一个非功能性需求的例子:

如果我们的软件生成了一个完全正确的PDF报告,但需要一分钟的时间,那就是一个非功能性错误。

到目前为止还不错,因为维基百科给出的错误定义完美地涵盖了两者 - 如果它们发生,它们会导致我们的软件“产生错误或意外的结果或以意外的方式运行”。重点在于“产生”和“运行”这两个词。它们假设软件正在执行某些操作,我们观察其行为。

然而,这还不是全部。

那么可维护性呢?我可能有这种非功能性需求:

这是一个相当模糊的要求,但你理解我的意思。

可维护性和可重用性是任何现代软件程序非常关键的非功能性组件,特别是考虑到市场上劳动力成本非常高。往往情况是,确保软件的可维护性比速度更重要。如果它是可维护但速度慢,我们可以找新的程序员来改进代码。如果它速度快但不可维护,我们以后将无法对其进行任何操作,如果需要某个新功能,我们将不得不从头开始重写它。在《你是黑客还是设计师?》中了解更多信息。

维基百科给出的软件错误定义根本不涵盖可维护性和可重用性缺陷。这导致了常见的混淆来源——不一致的代码风格不是一个错误(请参阅本文讨论)。

一种不一致的代码风格就是一个软件缺陷,同样,不完整的文档、缺乏文档、过于复杂的代码、缺乏编码风格指南等也都是软件缺陷。

我将会像这样重新书写维基百科中的软件缺陷定义段落:

这个定义在我看来更准确。

Translated by ChatGPT gpt-3.5-turbo/42 on 2023-12-27 at 13:51

sixnines availability badge   GitHub stars