原文:http://www.infoq.com/cn/news/2009/10/dissecting-technical-debt
术语”技术债务“是由Ward Cunningham
首次提出,指的是开发团队在设计或架构选型时从短期效应的角度选择了一个易于实现的方案,但从长远来看,这种方案会带来更消极的影响,亦即开发团队所欠的债务。敏捷专家们就技术债务到底是什么以及如何对其进行分类给出了自己的看法。
Martin Fowler
认为下面的定义最能表现技术债务
的含义:
技术债务类似于金融债务,它也会产生利息,这里的利息其实就是指由于鲁莽的设计决策导致需要在未来的开发中付出更多努力的后果。我们可以选择继续支付利息,也可以通过重构之前鲁莽的设计来将本金一次付清。虽然一次性付清本金需要代价,但却可以降低未来的利息。
Steve McConnell
将技术债务分为两类
:
-
无意的
——由于经验的缺乏导致初级开发者编写了质量低劣的代码。
-
有意的
——团队根据当前而非未来进行设计选型,这种方式可能很快就能解决当前的问题,但却很拙劣。
Bob大叔
补充到,有时人们将坏味道也看作是技术债务,但这是错误
的,他说:
坏味道并非技术债务。坏味道就是坏味道。技术债务的评价标准是真实的项目约束,这些约束是风险和好处并存的。坏味道的产生永远都不是理性的结果,而是由懒惰和外行导致的,未来也没有机会偿还了。坏味道总是意味着损失。
Bob大叔说技术债务让人们时刻牢记保持代码的整洁,就好像一个人在背负巨大的抵押债务时需要时刻保持警醒一样。他又说一旦团队决定采纳技术债务,那就意味着保持代码的整洁将变得空前的重要。如果不这样,情况很快就会变得糟糕不堪,偿还这些债务的代价也变得越来越大。
Martin Fowler认为坏味道也是技术债务,只不过是另一种形式的技术债务而已。他觉得坏味道是一种不计后果(reckless
)的债务,相对于根据精确计算而得来的谨慎的(prudent
)债务而言,坏味道会让问题变得更加严重。他又加上了故意(deliberate
)以及无意(inadvertent
)从而将技术债务划分为四个象限。
Martin通过如下示例将技术债务划分为4个象限
:
-
不计后果,故意的
——团队没有时间做设计,仅仅给出了一个匆忙做出的方案,缺乏对质量的预见。
-
谨慎,故意的
——尽管有很多已知的缺陷,但团队必须现在交付产品,同时对此造成的后果心中有数。
-
不计后果,无意的
——团队压根就不知道基本的设计原则,更不用说引入的坏味道了。
-
谨慎,无意的
——那些拥有优秀设计师的团队很容易遇到这种情况。他们交付的方案具有商业价值,但在完成方案后才明白什么才是最好的方案。
综上所述,实际的项目中将不可避免地存在技术债务问题,这是无法杜绝的,但问题的关键在于千万不能引入不计后果的债务,因为它会持续不断地产生坏味道,也很难对付。
分享到:
相关推荐
XML解析技术研究XML解析技术研究XML解析技术研究XML解析技术研究XML解析技术研究
动态模板解析技术是企业堂早期发布的一套模板技术引擎,使用Xml文档为模板载体,使用XmlReader快速读取并动态解析模板,具备强大的、可定制的缓存机制。此技术不仅能力强大,而且可以针对不同网站类型进行算法优化。...
XML解析技术DOM4J解析.doc
Java中四种XML解析技术 Java XML解析技术
Laravel框架关键技术解析,详细解决laravel组件化开发
OBT—基于-ODX解析技术的诊断工具
《环境空气臭氧污染来源解析技术指南(试行)环保相关文档,有时无法下载,在此暂存,希望帮助到更多的人,为更多的朋友提供便利
由浅入深解析ChatGPT的技术原理 由浅入深解析ChatGPT的技术原理 由浅入深解析ChatGPT的技术原理 由浅入深解析ChatGPT的技术原理 由浅入深解析ChatGPT的技术原理 由浅入深解析ChatGPT的技术原理 由浅入深解析ChatGPT...
技术架构解析.pdf,技术简介
工业互联网中的标识解析技术.pdf
《深度解析SDN——利益、战略、技术、实践》用通俗易懂的语言深入浅出地介绍SDN的概念本质,SDN架构,产生原因,发展历史,各种对SDN的误解,SDN对产业的影响和发展趋势预测,各种标准组织及企业的动机和利益诉求,...
《Effective MySQL之深入解析复制技术》由Oracle ACE Director、资深My SQL专家Ronald Bradford和Chris Schneider共同撰写,介绍了在使用MySQL数据复制技术构建具有可扩展性解决方案的过程中需要了解和实现的技术。...
动态模板解析技术源码 功能: 中小型网站模板技术(动态模板解析)示例,以Xml文件为载体(扩展名为.aspx),使用HttpHanlder进行解析; 实现了主明细表;View控件;简单的Repeat控件;
Java中四种XML解析技术详解 更好的更快速的了解xml中的四种解析技术
Laravel框架关键技术解析.pdf 《Laravel框架关键技术解析》以Laravel 5.1版本为基础,从框架技术角度介绍Laravel构建的原理,从源代码层次介绍Laravel功能的应用。通过本书的学习,读者能够了解Laravel框架实现的...
阿里云总监系列课重磅上线!...第三期《深入解析数据存储技术原理及发展演进》特邀阿里云盘古分布式存储资深技术专家储道,为大家带来干货分享。本节课程《Linux开源存储技术》,欢迎大家前来学习。
DELPHI接口技术开发实例解析, DELPHI接口技术开发实例解析,DELPHI接口技术开发实例解析
2017信息技术选考解析及教学复习建议2017信息技术选考解析及教学复习建议