ScholarGate
助手

技术债务

技术债务是一种比喻,指在设计或实施中,为了追求短期便利而选择权宜之计,而非更稳健但耗时较长的方案,由此产生的未来成本,正如金融债务会产生利息一样。

用 PaperMind 寻找选题即将推出Find papers & topics
Tools & resources
下载幻灯片
Learn & explore
视频即将推出

Definition

技术债务是指当前选择一个简单或有限的解决方案,而非一个耗时更长但更好的方法,由此导致的未来额外返工的隐含成本,其中为规避捷径而持续付出的额外努力就是该债务的利息。

Scope

本主题涵盖技术债务比喻的起源和定义;蓄意与无意、审慎与鲁莽债务的区别;将本金和利息概念应用于软件;识别、衡量和优先处理债务的方法;以及在开发过程中管理和偿还债务的策略。

Core questions

  • 什么算作技术债务,它与普通缺陷有何不同?
  • 什么时候承担债务是审慎的权衡,而非粗心大意?
  • 如何识别、衡量和优先处理技术债务?
  • 在不停止功能交付的情况下,有哪些策略可以偿还债务?

Key theories

债务比喻
坎宁安将权宜之计的设计选择比作向未来借贷:它们现在加快了交付速度,但随着每次后续更改都会产生额外的工作量,直到通过重构偿还债务。
蓄意债务与无意债务
技术债务根据意图和审慎程度进行分类;蓄意且审慎的债务是一种有意识的战略权衡,而无意或鲁莽的债务则源于技能或纪律的缺乏,更具危险性。

Clinical relevance

未受管理的技术债务会减缓开发速度,提高缺陷率,并最终可能使代码库陷入瘫痪;使债务可视化并有意识地管理它,可以让团队在权衡短期速度与长期可维护性时做到心中有数。

Evidence & guidelines

研究项目和工具,包括基于SQALE的债务度量和静态分析平台,提供了量化和跟踪技术债务的方法,尽管目前没有单一的标准。

History

坎宁安(Cunningham)于1992年创造了债务比喻,以向利益相关者解释增量设计权衡;随着敏捷开发、专门的研究研讨会以及旨在量化和管理债务的工具的出现,这一概念在21世纪初和21世纪10年代获得了显著关注。

Debates

技术债务是一个有用还是被过度引申的比喻
一些人认为债务比喻被过于宽泛地应用于任何代码缺陷,从而稀释了其含义,而另一些人则认为它是权衡取舍的宝贵沟通工具;精确的定义旨在使其保持可操作性。

Key figures

  • Ward Cunningham
  • Philippe Kruchten
  • Ipek Ozkaya
  • Robert Nord

Related topics

Seminal works

  • cunningham1992
  • kruchten2019
  • avgeriou2016

Frequently asked questions

所有的技术债务都是不好的吗?
不。就像金融债务一样,承担技术债务可能是一个明智的战略选择——例如为了赶上关键的截止日期——前提是它是蓄意的、可见的且会得到偿还的;危险在于无意或未受管理的债务,它会悄无声息地累积利息。
技术债务与缺陷(bug)有何不同?
缺陷是用户可见的错误行为,而技术债务是内部结构上的弱点,它不一定会产生错误的输出,但会增加未来更改的成本和风险;两者可能相关,但却是不同的关注点。

Methods for this concept

Related concepts