4

我正在从事一个已经运行了很长时间的项目,我们即将发布该产品的最终版本。

目前的测试工作发现系统中还存在大约 30 个缺陷,但是我们没有时间修复所有这些缺陷(我敢肯定这是一种非常常见的情况)。

我已经与不同的人讨论过代码冻结是否应该继续进行。目前我的经理希望保持代码冻结,但是要修复冻结和发布之间的窗口中剩余的关键缺陷(大约 5 周)。我担心这不是实际的代码冻结,而是充其量是代码“糊涂”。这些缺陷将由一个高级工程师团队进行分类,以确保实际解决剩余问题中的关键修复,但是从最初的外观来看,关键问题似乎占未解决缺陷总数的三分之二左右。

我知道代码冻结会给开发人员带来某些心理上的好处,例如为所有工作提供固定的结束日期。然而,这似乎完全被我的经理完全否定了,他公开讨论了将在“冻结”之后进行的修复。

我想知道是否有其他人有过类似的经历,或者可以就处理这种情况的最佳方法向我提供一些建议。我开始认为没有人会在他们说要去的那一天冻结他们的代码库。

我们计划在代码冻结日从 subversion 的主干分支,以确保产品的最终发布版本与开发主干隔离,所以我不太担心所做的更改会影响发布版本的问题的产品。

谢谢,

艾多斯

编辑:我想解释我的经理想法的最好方法是它不是真正的代码冻结,更多的是“功能冻结”,但是由于所有功能已经在产品中已有一段时间了,我认为这是一个严重的过度简化。

EDIT2:我要感谢大家的出色回答,不幸的是,我只能将其中一个标记为有帮助,尽管到目前为止所有 7 个答案都非常有帮助。

4

7 回答 7

6

这是一个平衡的行为。

一方面,有一个代码冻结期很好,但另一方面,如果您发布的产品具有足够大的关键问题以使您的客户离开,这对您没有任何利益。

如果问题足够严重,如果它是我的产品,任何代码冻结都不会阻止我修复它们。

祝你好运!

于 2009-02-19T10:46:37.870 回答
4

我认为实际的代码冻结是不可能的。通常当发生代码冻结时,会进行更密集的测试。然后呢?发现的所有问题都是下个版本的文档?如果您发现问题严重到关键功能无法工作怎么办?

您必须有一种方法来处理每个问题/错误,因为大多数优秀的开发人员都很懒惰(意见),分支\标记和强制开发人员将他们的更改合并或复制到 2 个地方将阻止他们中的大多数人尝试进行并非 100% 必要的更改。

从那时起,您需要处理每个出现的错误/问题。它们每个都必须根据以下因素进行加权:问题是什么,问题的影响,距离最终发布重新测试还有多少天。每个问题的成本效益比。只有这样,才能做出明智的决定。

于 2009-02-19T11:12:08.090 回答
2

在这种情况下我能想到的事情是避免出现问题,

If bug not fixed
   you will be in trouble;

if codefreeze === true
   fix your local version;
   update the dev version on SVN;

goto manager;
state the severity of the bugs;
follow her direction because she already got a plan;
于 2009-02-19T10:50:57.703 回答
2

代码冻结通常意味着所有当前已知的错误都不会得到修复。(希望不言而喻,没有添加新功能)。如果在冻结期间发现错误,它们会添加新信息,并且根据分类视图,可能需要暂时“解冻”代码以修复错误。希望在代码冻结期间所做的更改得到非常仔细的审查。

据估计,三分之一的错误修复会引入随机严重性的新错误。代码冻结让您有时间将未知错误(严重程度可变)“转换”为已知严重程度的已知错误。

真正的“代码冻结”没有任何改变是没有意义的——如果你发现了一个重大错误怎么办?你不能忽视它。

于 2009-02-19T11:02:13.497 回答
0

在我们的例子中,当我们开始 alpha 时(主分支保持休眠一段时间),我们正在分支,当我们决定修复缺陷时,我们在第一次客户发货之前编码冻结(不再提交)。

过去,我曾在一家公司工作,其中代码冻结实际上意味着功能冻结(不再添加功能)和分支。然后,我们正在处理缺陷。

我不会将您描述的称为代码冻结,而是将其称为打包分支的创建,您可以在其中消除细节并准备发布代码。

于 2009-02-19T10:48:33.827 回答
0

AFAIK“代码冻结”实际上,毫不客气地表示“新代码冻结”。这样做的目的是为了调试的稳定性,错误修复不包含在冻结中,因为它们不是新代码,而是对旧代码的修复。

当您真正的意思是放弃代码时,我们更喜欢术语“向下工具” 。

于 2009-02-19T10:50:02.560 回答
0

您的冻结真的是代码冻结还是功能冻结?你的问题不是100%清楚。

话虽如此,我同意上述关于分支和合并的评论。这允许您和您的开发人员使用该分支来修复您知道的错误以及未来几周内将出现的错误。然后,它允许您以受控方式将已修复的任何关键错误集成回主(冻结)行。

通过这种方式,您可以希望在不引入太多新缺陷的情况下解决最严重的问题。集成和回归测试在这里很重要。

于 2009-02-19T11:43:39.043 回答