技术债务管理以及Firefox/Chromium的债务评价

现在的软件开发是在遍地敏捷,人人讲唯快不破的时代,哪有人有时间思考代码质量,设计的质量? 哪个又不是从一堆代码中杀出血路来实现另一个功能?一个产品都存活不了几年,何必考虑什么可维护性?

我们追求进度的时候,总是要牺牲些东西,或是破坏了一些东西等着后面补。这就是技术债! 管理不好,债台高筑,即使不破产,也是要拆东墙,补西墙的玩平衡。现实是残酷的,但不影响我们抬头看看这个世界。

技术债务

技术债务(Technical Debt)这个词,我最早是从InfoQ关于Uber的一个访谈中了解到的,正好也在思考持续重构的问题,发现它是推动持续重构的有效工具。所以花了点时间做些学习,在这里做个分享,主要来自这篇文章的学习,有时间的直接看原文就好了:
Technical Debt in Firefox and Chromium

关于技术债务,并不是新名词,就不考据它的历史了。其实很多团队都有类似的工具,比如:问题记录,优化点,TODO List等等。但是通常是比较松散,大杂烩式的,不系统。

我总结之前没有管理好有两点:

  1. 范围太大
    在一篇IEEE 2012一期的文章(Technical Debt:From metaphor to Theory and Practice)里也强调了一个重要的观点,Technical Debt不要同需求和Bug搞在一起, 应当聚焦在对未来有负作用的设计和实现,通常都是无法直接感知的。比如性能优化到多少多少,这不是技术债务。回想以前做的优化点,太过于聚焦于功能,更像为了未来开发工作安排的参考。
  2. 缺少到位的管理
    如果一件事只是追求锦上添花,它自然就会被排到低优先级。然后,太天真了,其实没有然后了。

对策就不说了,这是一个管理问题,见仁见智。如果没有意识,或者正如开头说的,如果觉得没有必要的话,确实不需要做什么,因为大家都差不多。

如果想要做,我们如何定义和评估技术债务呢? 向领先者学习!FireFox和Chromium都算是比较大的开源项目了,分别是280万行和470万行的规模。看看他们的总结就是很好的学习了。核心是以量化的方式评价和管理代码,工具是基于SciTools Understand。(其实以发现&记录的方式也很好,这里只是作为参考的方式。)

技术债务的量化 (即代码质量的评价)

主要来自How maintainable is the Firefox codebase?。要优化,就要先定义问题和评价的标准。
以下代码质量评价的维度:

  1. LOC (代码行数)
    代表了代码的规模。可以用这个:cloc
    代码量越大,系统的复杂越高,但是相对的Bug率反而越低。评估的对象没有说明,显然是针对设计良好的系统。如果架构设计良好,并且大家都遵守,这样新增的功能都会集中以组件的形式实现,并不会改变接口,这是Bug没有扩散的原因。
  2. 圈复杂度
    不多说了,不知道的看这里:圈复杂度评价及工具。如果要严谨的定义,以软件工程类书中的定义为准。
  3. 一阶密度 (First-Order Density)
    用于评估文件间的直接依赖程度,因为是直接依赖,所以是一阶,里面只有A和B的关系。对应的工具是DSM, Design Structure Matrix。Github上可以找到一个工具,我没有试过。
  4. 变更成本 (Propagation Cost)
    评估随意的改一个文件,平均会影响到多少文件。它可以反应直接依赖的一阶关系,也可以随着间接依赖层次上升的高阶关系。
    这也是一个衡量架构设计的重要指标。欢迎推荐相关的工具。
  5. 核心代码大小 (Core size)
    所以核心代码,是从依赖关系上定义的。如果文件间有着环形依赖形式的高度依赖就是所谓的核心代码。很多研究已经证明,这类的代码量越小,Bug就越少。

工具

  1. 代码静态分析工具
    LOC, 圈复杂度,以及依赖关系这些都容易通过一个静态分析工具来获得。
    比如两者的代码量变化:

    两者的圈复杂度:
  2. 网络化处理 (Network Multiplication)
    通过网络化处理,可以得出变更成本,一阶密度,核心代码大小的数据。
    下图为Firefox&Chromium变更成本的比较:

    下图则是Core size的对比:
  3. DSM工具。
    DSM其实很简单。就是描述系统中各个元素的有无关系。横轴和纵轴都是系统各个元素,如果i,j有关联,则矩阵中(i,j)就是为true,或者作个标记。
    下图就是作者提供的一张Firefox 16的DSM:

    左侧为直接依赖,右侧为间接依赖。

更详细的内容,参考:Technical Debt in Firefox and Chromium
数据可以在这里体验:http://www.almossawi.com/firefox/
完整的文档在Github上:Tools
其大致的处理流程如下图:

总结

技术债务的定义只是参考,更重要的还是意识和执行。有了基本概念和意愿,执行的工具就很灵活,完全一个技术管理的行为。

关注微信公众号交流:

转载请注明出处: http://blog.csdn.net/horkychen

时间: 2024-10-27 18:51:12

技术债务管理以及Firefox/Chromium的债务评价的相关文章

“.中国”域名技术和管理准备就绪

中介交易 SEO诊断 淘宝客 云主机 技术大厅 国际互联网名称与数字地址分配机构(ICANN)近日在韩国宣布,互联网今后可以使用中文.阿拉伯文和韩文等非拉丁字母文字注册域名.这意味着,互联网自诞生以来最重要的变革之一---互联网域名体系向包括中文在内的多语言文字开放迈出了实质性一步.专家表示,这将使全球更多用户得以便利地接触和使用互联网,同时,以".中国"为代表的非英文域名的国际申请和全球部署也将正式进入快车道,".中国"有可能成为世界首个纯中文全球顶级域名. 一小

IT职场人生:技术?管理?业务?

很多技术人员工作几年后,都要面临未来的出路问题. 所有出路中,无外乎技术.管理.业务三个层面. 技术 技术本身也是一条出路,但是在之十二中曾经提到,有深技术和浅技术两者之分. 如果本来是从事浅技术的,建议走后面提到的业务中的产品经理路线.因为浅技术的更新换代速度很快,以前积累的经验很容易就过时了(虽然不完全如此),而且后起之秀们的竞争也非常激烈. 若想留在技术路线上,走"越老越值钱"的路线,则肯定要从事深技术,也就是大型系统的后台运营方面的技术.技术不容易过时,来自年轻人的竞争几乎没有

网络信息安全的“三驾马车”:技术、管理、人才

当前网络社会与现实社会相互交织和影响,我国的社会治理改革进入深水区,面临转型发展的机遇和挑战,网络社会的治理迫切需要勇于创新发展. 如今,互联网已经融入人们社会生活的方方面面,深刻改变了人们的生产.生活方式,党的十八届五中全会以及"十三五"规划纲要都对实施网络强国战略."互联网+"行动计划.大数据战略等做了部署.面对网络时代这个难得的历史机遇,我们必须保持战略清晰,还应清楚地看到,网络空间蕴含着新的生产力.文化力和国防力,必须紧紧抓住并用好这个历史机遇. 在拓展网络

技术与管理哪个更有前途?

问题描述 技术与管理哪个更有前途?那个更适合发展? 解决方案 解决方案二:不一定阿,技术可以做分析师,架构师,管理也可以做项目管理师,看兴趣了

“看得见”又“拦得住”的技术与管理手段

[PConline资讯] 互联网生态环境的逐步恶化,使得病毒及其变种在黑色产业链中的滋生速度更加迅猛,而企业在不断变化的威胁面前已变得势单力薄.趋势科技深入广西电网公司网络管理一线,在全面分析威胁动向的基础上,提出了全方位的企业威胁管理战略解决方案,为广西电网公司的网络威胁管理提供了即"看得见"又"拦得住"的技术与管理手段,使其在更安全的IT平台上更专注核心业务的发展. 网络安全很重要 据悉,广西电网公司的信息化建设起步较早,在2000年时就加大了信息化资金投入,选

大会以技术重塑管理为主题

近日,2013用友用户大会在京召开,大会以"技术重塑管理"为主题,举办了20余场专题论坛.近30场面对面的产品技术和应用交流活动,探讨在云计算.大数据.移动互联.社交网络等新技术冲击下,如何重构企业计算平台.管理与运营模式.应用与商业模式:并携手<经济学人>杂志发布<中国公司与变革性IT>调研报告 . "技术已成为经济和企业发展的新引擎,其中,信息技术是核心所在."用友董事长兼CEO王文京说,"数据服务已经成为一项基础服务,传统行业

《公司的力量》观后感:创新不靠技术靠管理

最近,由央视联合金蝶软件合拍的大型纪录片<公司的力量>在央视财经频道热播.与<大国崛起>.<复兴之路>.<中国故事>一样,该纪录片也是规模宏大,发人深思.特别是20世纪之后,全球基本上进入了和平的时代,国家之间的竞争表现在经济实力的竞争,而经济实力的竞争其实则是公司企业之间的实力之争.在这个时候,拍这样一部纪录片,绝对是恰逢其时. 今天就谈谈看了<公司的力量>纪录片之后的一些感受,与各位分享. 让我感触最深的是第五集<危机时刻>和第八

技术转管理

    一个人,假设叫小明,原来在技术岗位,是一线的标兵.带头人.公司领导觉得这个人不错,希望他能走到管理路线上来:于是乎先让他把20%的时间拿出来来做管理,发现干的还不错,慢慢的交给他更多的管理事务,从原来20%的时间,增加到60%.80%,甚至整个团队都交给他来带.这看似是一个非常正常的技术转管理的转型过程,然而这里面却隐含着一个值得重视的问题,小明原来是技术带头人,走到管理岗位之后,没有太多时间研究一线的技术,慢慢的很多技术都不熟悉了,然而又害怕碰到具体的问题    在下属面前丢脸,难以服

华胜天成杜欣:技术为管理服务 最终实现集团管控

近日,由中国软件行业协会指导,畅享网主办的2011中国管理信息化年会在北京举行.本届大会以"新一代http://www.aliyun.com/zixun/aggregation/14054.html">信息技术下的中国企业管理"为主题,通过主分论坛.展会和研讨参观三大平台,充分展示了新一代信息技术形势下我国企业的管理现状和存在的问题,探讨了企业管理的新机会和新路径. 华胜天成CIO杜欣在会上针对我国企业的信息化领域有哪些新的信息技术表示,这几年信息化发展非常的快速.在企