技术债务
技术债务是一种比喻,指在设计或实施中,为了追求短期便利而选择权宜之计,而非更稳健但耗时较长的方案,由此产生的未来成本,正如金融债务会产生利息一样。
用 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)有何不同?
- 缺陷是用户可见的错误行为,而技术债务是内部结构上的弱点,它不一定会产生错误的输出,但会增加未来更改的成本和风险;两者可能相关,但却是不同的关注点。