维基百科1002维基百科
软件错误是指计算机程序或系统中的错误,缺陷,故障或错误,导致其产生不正确或意外的结果或行为异常。
我认为那是不完整的。 该定义完全排除了与例如可维护性和可重用性相关的“非行为”缺陷。
如您所知,每个软件都有功能和非功能要求。 功能要求告诉我们什么软件必须做的,和非功能性需求文档它如何做到这一点。 例如,这是一个功能要求:
The user can generate a PDF report.
如果我们的软件没有生成PDF报告而是崩溃了,那是功能错误。 如果它代替PDF报告生成一个空白页或纯文本文档,那是一个功能性错误。 如果根本没有“生成PDF报告”按钮,并且用户根本无法启动PDF生成过程,那就是功能错误。
这是一个非功能需求的示例:
PDF report generation must take less than 100ms.
如果我们的软件生成的是完全正确的PDF报告,但要花一分钟时间,则说明这是无法正常运行的错误。
到目前为止好,因为维基百科给出的错误定义完全涵盖他们的-如果他们发生,他们会造成我们的软件“以产生不正确的或意外的结果或意外的方式行事 。” 这里的重点是单词“产生”和“行为”。 他们认为该软件正在执行某些操作,而我们正在观察其行为。
但是,这还不是全部。
可维护性如何? 我可能有这种非功能性要求:
The source code of the PDF generator must be
easy to maintain and extend for an average
Java programmer.
这是一个相当模糊的要求,但是您明白了。
可维护性和可重用性是任何现代软件程序中非常重要的非功能性组件,尤其是考虑到市场上很高的人工成本。 通常,确保软件的可维护性比快速性更为重要。 如果它是可维护且缓慢的,我们可以找到新的程序员来改进代码。 如果它很快但无法维护,我们以后将无法对其进行任何操作,并且如果需要一些新功能,则必须从头开始重写它。 在《您是黑客还是设计师》中阅读有关此内容的更多信息。 。
Wikipedia给出的软件错误的定义根本没有涵盖可维护性和可重用性缺陷。 这就造成了一个普遍的混乱源-不一致的代码样式不是bug(请参阅此文章下的讨论)。
那是错的。
不一致的代码样式是软件错误,不完整的文档,缺乏文档,过于复杂的代码,缺少编码样式指南等也是如此。
我会这样重写Wikipedia中的软件错误定义段落:
软件错误是计算机程序或系统中的错误,缺陷,故障或错误,导致其至少违反其功能或非功能要求之一。
这个定义对我来说看起来更准确。
翻译自: https://www.javacodegeeks.com/2015/07/wikipedias-definition-of-a-software-bug-is-wrong.html
维基百科1002维基百科