Debugging 为什么在以后的过程中发现缺陷的成本更高?

Debugging 为什么在以后的过程中发现缺陷的成本更高?,debugging,agile,Debugging,Agile,为什么在以后的过程中发现缺陷的成本更高 我听过很多,但我很难理解,也很难用上下文/例子来说明这一点。因为会有更多的人花时间在有缺陷的软件上 如果您在早期修复了一个bug,那么代码审阅者可能会花一点时间在上面 如果它被发布给客户并报告为错误,您将对其进行编码,可能有人对其进行了审查,可能有人对其进行了测试,甚至可能有人对其进行了记录,等等……越晚发现错误,情况就越糟。当您在编写代码后立即发现一个bug时,您已经记住了所有的行为,并且确切地知道是什么变化导致了它。一旦你知道问题的所在,你就能够专注于

为什么在以后的过程中发现缺陷的成本更高


我听过很多,但我很难理解,也很难用上下文/例子来说明这一点。

因为会有更多的人花时间在有缺陷的软件上

如果您在早期修复了一个bug,那么代码审阅者可能会花一点时间在上面


如果它被发布给客户并报告为错误,您将对其进行编码,可能有人对其进行了审查,可能有人对其进行了测试,甚至可能有人对其进行了记录,等等……

越晚发现错误,情况就越糟。当您在编写代码后立即发现一个bug时,您已经记住了所有的行为,并且确切地知道是什么变化导致了它。一旦你知道问题的所在,你就能够专注于问题

当您花费很长时间后,开发人员就不再确切地记得它是如何工作的,而且还有很多地方需要调查以找到bug。也许编写bug的开发人员也不再在公司工作了

而且,随着时间的推移,更多的代码可能依赖于错误代码,您可能还需要修复它们

最后,还有一些涉及用户的问题。如果你在发布后发现了一个bug,那么更多的用户会对此感到沮丧,你的产品形象也会变得更糟。用户还可能被用来解决此错误,在修复错误后可能会开始失败

小结:当你花很长时间去发现一个bug时

  • 你的调查范围更大
  • 创建错误的开发人员可能已经不在了,其他开发人员将不得不更多地研究代码,以找到它,理解它,并修复它
  • 您可能还需要修复依赖于错误代码的部分(这样的部分还会更多)
  • 用户已经对这个bug感到失望,产品的形象也会受到损害

查找错误所需的时间越长,则:

  • 错误的行为越被认为是正确的,其他事情就越依赖于该行为(Windows为此而臭名昭著)

  • 系统的集成度越高,漏洞就越难提取

  • 错误的错误行为通过复制粘贴在其他地方或在使用错误代码的客户端中复制的可能性越高

  • 代码最初编写的时间越长,理解起来就越困难

  • 了解系统原始部分的人修复它的可能性越小


    • 你在盖房子。你正在把下水道管道铺设到地基上,但你不知道其中一条管道被一只死刺猬堵住了

      您是否愿意了解:

      • 就在你浇注混凝土之前
      • 房子完工后,新主人尝试使用厕所

      (在这个类比的某个地方有一个“堆栈溢出”的笑话。8-

      可能还有其他依赖项(内部或外部)会影响缺陷的修复


      例如,如果我解决了这个缺陷,我可能需要修复其他东西

      想象一下,你正在写一篇文章,阐述为什么在这个过程的后期发现一个缺陷会花费更高的成本,然后你突然意识到你的大部分文章内容所基于的前提之一是错误的

      如果你还在计划,你只有半页的计划要修改。如果你的文章快写完了,你突然需要放弃这一部分,重新开始。如果你已经交了,这个错误会让你失去分数


      同样的原因。

      这可以用一个简单的例子来说明

      用一个简单的对话框显示一条消息,只需两个按钮“OK”和“Cancel”

      假设错误是拼写错误

      如果在产品发布后发现此问题,则必须发布新版本的产品,并支付与此相关的所有费用。手册需要重印

      如果在最终测试中发现此问题,则必须重新打印手册。需要重写代码并重新运行测试

      如果这是在开发过程中发现的,那么修复代码的成本就足够了


      如果在设计过程中发现这一点,则代码第一次编写正确-无成本。

      对于收缩包装软件产品: 如果在产品上市后发现bug,您必须通过支持电话帮助用户,建议解决方法,甚至召回产品/发布服务包

      有关网站: 站点中断和延迟会让您付出代价。 由于网站质量差/出现故障而导致的客户损失会使您付出更大的代价。 调试过程本身也很昂贵

    • 在编写代码时,没有人能像您那样理解代码
    • 人们可能已经开始依赖虫子的存在了
    • 您可能需要修复bug保存的大量不良数据
    • 您可能需要推出软件的新版本或补丁
    • 您的帮助台可能需要打一大堆电话
    • 你可能需要填写一大堆文件,解释为什么会有这个bug,它会导致什么问题,以及你要做什么来确保它永远不会再发生

    • 因为开发过程以及修复缺陷所涉及的所有工作

      假设您在昨天编写的函数中发现一个问题,您只需签出、修复、签入,句号。它在你的脑海中仍然清晰,你知道它是关于什么的,并且你的修复不会有任何副作用

      现在想象一下在六个月后发现同样的错误。你还记得为什么函数是这样编码的吗?你还会在这个项目/公司工作吗?你必须打开一个缺陷报告,必须发布你的软件的新版本,Q