技术负债

短期加速了软件开发,但是在未来给自己带来了额外的负担,这种技术负债的情况比比皆是,今天来说说技术负债的问题。

1.什么叫技术负债?

技术负债(英语:Technical debt),又译技术债,也称为设计负债(design debt)、程序代码负债(code debt),是软件开发中的一个比喻。指开发人员为了加速软件开发,在应该采用最佳方案时进行了妥协,改用了短期内能加速软件开发的方案,从而在未来给自己带来的额外开发负担。这种技术上的选择,就像一笔债务一样,虽然眼前看起来可以得到好处,但必须在未来偿还。软件工程师必须付出额外的时间和精力持续修复之前的妥协所造成的问题及副作用,或是进行重构,把架构改善为最佳的方式。

1992年,沃德·坎宁安首次将技术的复杂比作为负债。

第一次发布代码,就好比借了一笔钱。只要通过不断重写来偿还债务,小额负债可以加速开发。但久未偿还债务会引发危险。复用马马虎虎的代码,类似于负债的利息。整个部门有可能因为松散的实现,不完全的面向对象的设计或其他诸如此类的负债而陷入窘境。

2.技术负债产生的原因是什么?

很严重的债务体现在架构或是平台技术方面犯了一个基础的错误,没有选择,也没有足够的时间来正确重写。这些错误体现在

无法扩展,可靠性低;

非常难维护;

次之的债务体现在 容易出错的代码 – 80%的错误出现在20%的代码中。

一般的债务体现在

不容易进行系统测试 – 增加了测试的开销,也无法及时发现代码质量问题。

不注意打包、发布和部署。太过依赖手动测试,很容易在代码上线的时候造成错误。就像测试一样,发布和部署带来的开销不会消失,会逐渐的增加。

团队成员不能理解的关键代码

向前向后的兼容性。这是必须的和短期的债务。需要维护这些兼容版本的时间越长,代价会越大。

库和中间件过期

重复的,复制粘贴的代码。

大家都知道的、很明显的错误,并且没有被修复的缺陷。

低效的设计或构建,过度消耗硬件,使用过多的内存,网络带宽或CPU。

较小的债务体现在

使用编程习惯和模式不一致 – 程序员不理解已经存在的模式,或是不喜欢它们,而引进新的模式,或者仅仅是想改变它们。

没有错误处理和异常处理,或者方法不对。在上线阶段会有一些问题

非常小的债务体现在

硬编码,神秘的数字,代码不遵循规范,混乱的命名,缺失的注释,不整洁的代码。

文档过期 – 文档的内容和实际系统不一致

3.技术负债有哪些负面影响?

如果公司要解决技术负债,花费的成本往往是很高的。

在所调研的系统中,35%的技术债务已经严重影响了系统的支持和维护,它们可能导致安全、性能问题甚至威胁到正常运行。

4.避免技术负债的方法是什么?

注意五大程序质量特征 - 稳定性、性能、安全、可移交性以及可修改性

采用成熟的开发方法比如敏捷开发以提高程序质量,瀑布方法具备“可移交性”和“可修改性”,但不适合目前的开发要求。

系统模块化(Modularity of systems )可能影响质量和性能。

提高代码和系统的可维护性。

减少代码发布的频率,以减少技术负债。

5.如何评估技术债?

请参考此文,用Sonar 评估你的技术债务- 技术翻译- 开源中国社区 http://www.oschina.net/translate/evaluate-your-technical-debt-with-sonar

当前插件的版本是0.2,并且可以使用下面的表达式去计算债务 :

Debt(in man days) = cost_to_fix_duplications + cost_to_fix_violations +

cost_to_comment_public_API + cost_to_fix_uncovered_complexity +

cost_to_bring_complexity_below_threshold

通过计算这种方式, 可以接近实际中的情况,建议经常量化技术债务,因为技术债务可以

是综合的指标,衡量项目和模块的质量

根据历史数据和趋势跟踪

比较多个项目

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,718评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,683评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,207评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,755评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,862评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,050评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,136评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,882评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,330评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,651评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,789评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,477评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,135评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,864评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,099评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,598评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,697评论 2 351

推荐阅读更多精彩内容

  • 技术负债(Technical Debt),也叫设计负债(Code debt)或 代码负债(code debt) 是...
    爪哇阅读 1,190评论 1 3
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,858评论 25 707
  • 一个人的语言往往能影响另一个人的心情,想法,甚至方向。 有事说者无心,听着有心,说话也要讲求方法。 一个人说话不能...
    小孩纸鲁阅读 171评论 0 0
  • 升大二的那个暑假,沈蔓第一次独自一人坐飞机去北京。 早一个星期就订好了机票,走之前一直在和父母拉锯战,她说自己已经...
    温桔年阅读 874评论 2 5