“神话人月”第一章中“线性收敛”的含义是什么?

时间:2011-09-23 09:10:52

标签: c# testing

  

接下来,人们发现调试具有线性收敛,或者   更糟糕的是,人们在某种程度上期望采用二次方法   到最后。所以测试拖延,最后一个困难的错误   找到的时间比第一次更长。

来自 “神话人月,第1章焦油坑”

线性收敛 的含义是什么,你能给我一个流行的例子或图片吗?

2 个答案:

答案 0 :(得分:5)

弗雷德布鲁克斯的意思是管理层对发现,修复,测试和关闭错误的速度的预期会以某种方式以二次方式增加,这是不现实的。布鲁克斯断言,关闭错误的速度最好是时间线性的,事实上可能会比这更糟糕。

在一张图片中,假设一个完全零错误和缺陷的乌托邦目标,这里是“二次关闭”(绿色),线性关闭(橙色)和更糟糕的衰退指数(红色)。

Bug Decay Rate

我同意Brooks - 管理层的期望是基于这样的假设:随着开发人员完成编码,越来越多的开发团队将被分配到调试,这将增加错误修复的速度。

然而,实际上,很容易发现并修复了容易出错的错误,但更难以找到更多隐藏的错误,因此在项目错误关闭时经常遇到长尾。

还有另一个原因,即错误计数不会以线性速率或更好的速度燃烧 - 即使在大多数现代化的专业软件开发公司中,在开发周期的后期比在早期阶段为项目分配更多的测试资源,当然,随着更多代码的开发,引入的bug越多,测试人员越多,发现的bug就越多。这意味着最初的错误计数无可救药地被低估,并且在项目的长期内,总错误数量实际上会增加。

更有用的指标是缺陷关闭的净率。在这里,团队通常会寻找关闭率与报告的新缺陷率相交的点 - 这被视为表明隧道尽头即将到来的良好信号。

答案 1 :(得分:4)

这意味着如果您正在尝试调试,例如10个错误,调试每个需要大约相同的时间,甚至比以前更多...因此调试所有需要大约10倍(或更多)调试第一个。

二次收敛相反,调试全部只需要大约3倍。