2009-04-10 43 views
10

如果您使用的是敏捷,那么我们的想法就是始终在进行增量重构,并且永远不会造成巨大的技术债务。这就是说,如果你有一个敏捷的团队接管有相当数量的技术债务的软件,你必须把它放在某个地方。支付敏捷中的技术债务

你会去创建开发者用户故事吗? 。例如 。

  • 作为开发人员,我有过业务逻辑模块50%的测试覆盖率,所以我必须在交付
  • 作为一个开发者的信心,该应用程序支持的依赖注入,所以我们可以换出结核和在更敏捷未来。

或者是有清理这段代码的技术债务

+0

对于那些不熟悉技术的债务,这可能是一个很好的解释:http://benlakey.com/2012/06/18/technical-debt/ – 2012-06-19 01:39:32

+0

这些问题应通过https问: //pm.stackexchange.com/ – 2017-11-04 08:26:29

+0

我投票结束这个问题,因为这个问题应该在https://pm.stackexchange.com/ – 2017-11-04 08:26:38

回答

6

是您的应用程序内部或者你有一个外部客户的另一个最佳做法?如果客户为您的应用程序的工作和支持付费,可能很难让他们像您建议的那样签名。

此外,根据您的第二张卡片,您可能很难说出“完成”是什么。

您的问题的一个特定方法可能是缺陷驱动测试 - 这个想法是,当您得到一个错误报告并估计要修复它的卡时,请查看您可以在同一时间添加哪些测试(s)这是相似的,但增加了覆盖面。

你不特别要求有关如何测试让你的项目的技术细节,但是这本书是非常有用的,一旦你真正开始做它:Working Effectively with Legacy Code

1

我在敏捷的环境中工作,但在那里在采用敏捷技术之前,目前的代码库已经存在好几年了。这导致必须尝试以敏捷的方式工作,围绕没有使用自动回归测试编写的代码。

由于技术债务影响我们提供新功能的速度有多快,因此我们记录了由于使用旧代码而增加了多少时间。这些数据使我们能够花时间致力于偿还技术债务。因此,当客户(无论是经理,CTO还是其他人)认为估算过高时,您的数据可能会加强您的立场。

当然有时候,你会发现你的估计结束了,因为遗留代码出乎意料的怪癖,你还清技术债务。我们发现,只要能够解释和解释额外的时间,并且可以花费额外时间的好处,它通常会被很好地接受。

当然,YMMV取决于客户或其他因素,但具有代表未来技术债务影响的统计数据非常有用。

0

我认为询问客户希望使用该应用程序的时间长度是个不错的主意。如果应用程序的使用寿命有限(例如,三年或更少),那么花费很多精力进行重构可能没有意义。如果预期(或希望)寿命更长,那么重构的回报就会变得更具吸引力。

您可能还想尝试创建投资重构的商业案例。显示您想要改进的具体示例。对成本,风险和预期回报作出诚实的评估。尝试找到一个可以独立于其他人实现的特定重构,并游说批准将该更改作为重构过程的测试运行。

请注意,当您谈论回报时,可能需要提供具体的数字。仅仅说“修复错误会容易得多”是不够的。相反,您应该准备好说“如果错误修复的周转时间缩短了至少30%”,或者“我们的体验减少了40%”。您还应该准备好与管理层和/或客户进行协商,以便您都同意您对他们有意义的测量,并在重构之前和之后提供测量。

4

应该区分工程实践和技术债务。我将测试驱动的开发和自动化测试视为实践。

采取由瀑布团队构建的代码资产后,资产没有自动化的单元,功能或性能测试。当我们承担了软件资产的责任时,我们对Agile的产品所有者进行了培训,并告诉他们我们将使用的做法。

一旦我们开始使用这些实践,我们开始识别技术债务。随着技术债务的确定,技术故事卡被编写并放置在产品所有者积压的产品上。开发人员和测试人员使用XP工程实践(TDD,自动测试,结对编程等)估计所有工作。这些实践通过TDD,自动化功能和性能测试确定了代码的脆弱性。特别是,通过自动性能测试和分析确定了一个重大的性能问题。债务太大,我们估计修复需要6次迭代。我们通知产品所有者,如果开发了新功能,由于应用程序性能差,用户群将无法使用它们。鉴于我们必须将应用程序从几百个用户扩展到数以千计的用户,因此产品负责人将性能技术债务优先考虑为非常高,并且我们在估计的迭代中完成了技术卡。

注意:技术债务可以通过重构固定在故事卡的估计内,不需要技术故事卡。更大的技术债务将会。对于需要技术卡片的技术债务,确定业务影响并要求产品所有者优先考虑技术卡片。然后工作卡。不要为工程实践创造技术债务。做所有的估算,知道工程实践将成为估算的一部分。不要使用自动化单元,功能和性能测试来创建卡来改进应用程序。相反,请仅将工作包含在您正在估算的卡片中,然后将自动化测试添加到您通过正在工作的卡片上触摸的代码。这将使应用程序随着时间的推移而改进,而不会使进度停止。停止添加所有名片只能保存在最激烈的情况下,例如应用程序无法执行或扩展。

鉴于您继承了没有自动化单元,功能和性能测试的代码库的情况,请告知业务合作伙伴可悲的事态。让他们知道你将如何评估工作。通过工程实践发现技术债务。最后,通知产品所有者,随着越来越多的代码库被自动化的单元,功能和性能测试所触及,团队的速度将会提高。

1

减少技术债务是每个人都应该做的事情,每次我们提交代码。

当你编辑代码时,你在离开露营地之前整理一下,就像侦察兵一样。

这样,变化的代码经常会变得更好,这对业务有益。

永远不会改变的代码不会改善,但如果它工作的话,为什么还要这样呢?

不要为此计划任务,尽管长期计划很有帮助,讨论问题的论坛也是如此。

非常大的项目将受益于某种锁定方案,以便两个编码器不会同时重构同一段代码而无需同步。

/罗杰