为什么仍发布带有已知错误的软件?[关闭]


18

似乎在大型项目中,该软件经常仍会与充满错误的错误跟踪器一起发布。现在我可以理解功能请求了,但是好几次我仍然看到大量错误仍未解决,未审查或尚未完成,但仍然推出了一个版本。

为什么?为什么要发布一个开源项目或一个通常带有已知错误的项目?他们为什么不等到错误跟踪器打开了0个错误?


3
闻起来像个骗子。
工作

41
向我们展示一些没有错误的可用软件。
乔尔·埃瑟顿

13
因为虽然时间是无限的,但人们不是吗?

7
感谢您的发布,这给了我一个很好的笑...看到您的个人资料年满18岁,我并不感到惊讶。:D您显然尚未与软件团队经理合作
Yam Marcovic

7
较常见的原因之一:该版本修复了严重的bug或影响现实世界客户的bug,至少就目前所知,它没有添加任何可能的新bug。
大卫·史瓦兹

Answers:


41

多种原因,包括:

  1. 公司已承诺在特定时间释放用户群
  2. 错误不是关键任务,甚至不是主要错误
  3. 新功能开发被认为更重要(无论正确与否)

在很小的程度上,这就像在询问您为什么要作为程序员工作,即使您的编程知识不是“完整的”。在大多数复杂的项目中,会有很多很多错误。在添加新功能的同时进行处理是一项困难而复杂的任务。


24
+1,但我想补充:4)QA记录的奇怪的不可重复的看似一次性出现的错误。应该跟踪这些情况,但是可能是由于莫名其妙的网络中断,计划外的环境停机或QA只是没有提供足够的信息来进行调试而导致的。5)需要花费大量精力来解决的小错误,例如。完整重构特定模块。
maple_shaft

4
好的评论,需要大量重构才能消除的小错误往往无法解决。
eykanal 2011年

5
也可能是公司没有将错误视为关键任务或主要错误。客户可能会说其他话,但您只有在客户告诉您时才能知道。
joshin4colours 2011年

37

因为有bug的软件总比没有软件好。
出于同样的原因:

  • 即使总是有延误,运输公司也很麻烦制定时间表。
  • 制药公司出售具有已知(且大多已记录)副作用的药物。
  • 尽管存在已知的局限性,但世界各地的学校都在教授牛顿物理学。

具有已知缺陷的解决方案比没有解决方案或具有未知缺陷的解决方案要好得多。
我最喜欢的IDE具有很多新功能,远远不够稳定。只是说一句:我更喜欢每二十次必须手动执行某项操作,因为该功能会失败,而不是必须手动执行所有操作。

或者用伏尔泰的话说:“ Le mieux est l'ennemi du bien”。


22

最终,即使是免费和开源的软件,这也是一个商业决定。在某些情况下,存在的缺陷影响较小,最好将其发布,将软件交付用户使用并获得反馈(包括但不限于功能请求和未发现缺陷的新错误报告)在测试中)。该决定是由在竞争对手中吸引软件市场的需求所驱动的。如果您想让软件产生影响,则需要以新功能或新概念击败竞争对手进入市场。


1
我要指出的是,显然,如果您的软件中充满了错误,所产生的影响可能并没有好处;)
Matthieu M.

7

一切都归结为成本与收益分析。每个错误修复都有一些与之相关的成本值(修复工时,在发布前X天进行更多代码更改的风险...)。同时,每个错误修复都在更多功能,可用性等方面明显带来了附加价值。

因此,这是每个开发团队在发布时都面临的问题:1)考虑到成本和附加值,Bug #i是否值得修复; 2)对从i = 0到N的所有打开的bug重复进行。

请记住,未发布的软件产品对任何人都没有价值。该软件产品具有200个未解决的错误,但其90%的功能正常工作,对于所有对发布时的工作原理感到满意的人都具有价值。

我从来没有在任何公司中发布过0个错误的产品,我认为那是完全正常的。在某个时候,您只是减少损失并利用有效的方法。否则,您将永远不会释放任何东西。


6

在大型项目中,您永远不会停止发现错误。如果您必须等到所有错误都已修复并测试了修复程序的回归之后,就再也不会发布了。

另外,请注意,并非所有错误都是内部错误。每个程序都是其他软件的复杂网络的一部分,并且在其他地方进行的更改可能会在软件中显示为“错误”。你无法阻止世界。


与此相关的事实是,每个错误修复都提供了在产品中引入比原始错误更严重的新错误的机会。
玛拉基

4

除了许多好的答案外,有时还会有新产品的市场竞相。如果您认为即使打开15%(或其他数量)的非关键缺陷,您也可以获得大部分市场份额,那么可能值得发布该产品以在竞争者中占优势。


2

这些错误可能很小。请记住,商业软件需要运输,并压在光盘上,等等。达到这些发布日期将对财务造成严重的影响,而推迟一些次要问题在财务上是不合理的,更不用说出于其他原因进入市场了。


2

可能的答案:

  • 任何人都极不可能遇到该错误。
  • 有针对这些错误的解决方法。
  • 该软件需要在某个时间发布,并且无法实现完美。

2

我敢肯定,理想情况下,大多数开发人员都希望在其应用程序中看到零错误,可悲的是,条件可能不允许这种乌托邦状态。

我想相信这是因为用户群需要新功能,并且愿意承担相同或更多错误以增加功能。

如果涉及到管理人员,则由于多种原因需要按时完成任务-广告投放时间安排,其他人员空缺问题,“我们必须是第一位拥有此功能”的心态。

我的想法不太乐观,可能是因为开发人员很懒?

还要记住,在开放源代码社区中,通常“ whom”想要承担什么bug /功能/问题请求-也许没有人希望解决由于其背后的大问题而引起的问题。


1

在最简单的程序化测试中:

if (management->perceived_cost_to_fix > management->perceived_benefit_release_now) {
    release;
}

无论是修复错误,时间/空间/内存,还是安全性/可用性,一切都始终是一个权衡。考虑完成的折衷计算。您可能不同意它,但是如果您不了解它,就会遇到麻烦。

另外,请考虑一下钟形曲线中的这些计算...有些人会对每一侧都做出非常糟糕的计算。有关曲线的一端,请参见永远的毁灭公爵。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.