技术债务最早是由Ward
Cunningham提出的,当时是为了向非技术背景的项目干系人解释为什么要去做我们现在称之为“重构”的事情。Steve
McConnell对技术债务的解释是:技术债务是短期的一种权宜,但从长期看相同的工作会比当前会费的成本要高很多。Jean-Louis
Letouzey对技术债务的解释是:对不适合做法的补救成本的总和
关于技术债务,我们要重点讨论的是:
1)
技术债务的种类
2)
如何发现技术债务是否引发重大问题?
3)
处理技术债务的常用方法
4)
什么时候技术债务可以先暂缓处理?
技术债务的种类:
根据
Philippe Kruchten等人在
IEEE上面发表的文章,认为技术债务主要包括:
其中,
技术鸿沟(
Gap)是指最初的技术决定可能在当时是正确的,但是随着时间、市场、技术等不断改进,这个技术决定已经出现了很多的问题。
Martin Fowler提到了
22种代码异味,代码重复是很常见的一种。
如何发现技术债务是否引发重大问题?
Jean-Louis Letouzey认为,代码类型的技术债务,有一个量化的数据来考量债务程度:
Bug反馈系数。
Bug反馈系数是修改
10个
bug,新注入(或者是衍生)出多少个
Bug?如果这个系数过大,则是个非常危险的信号。
BrainLink分享了
7个技术债务引起重大问题的危险信号:
1)
系统加载的时间越来越长
2)
某个模块缺陷率不断增加
3)
相同的问题在不同的模块或者组件中出现
4)
新的功能数量增加,引发新的
bug数量持续增加
5)
修复
bug的时间越来越长
6)
团队对某个模块或者组件抱怨很难理解或者很难测试
7)
某个模块的源代码频繁被修改,
check-
in
处理技术债务的常用方法:
第一步:发现项目中包含哪些技术债务
第二步:把技术债务加到产品列表(
Product Backlog)中
第三步:根据债务造成的影响和修改债务的成本做优先级排序,这里是和业务需求一起整体排序
第四步:在不同的迭代中分阶段修改。
这里我们的几个具体实践是:
a)
我们会在技术债务的影响和快速交付的要求之间做平衡
b)
尽
量把最核心的技术债务在本次迭代完成,常用的是把技术债务作为技术需求对待,但我们也遇到过这样的情况:团队基于业务需求交付压力的考量,把技术债务在迭
代中消除基本是不现实的。在当前快速交付的前提下,很多团队会出现大量的技术债务。对于后者,我们的做法是:每三个迭代,休整一周(这一周的工作就是集中
消除关键的技术债务和学习债务)。
c)
技术鸿沟和架构债务,越晚修复成本越高,所以我们一般会增强团队中架构师的角色(无论是招聘还是短期合同工),同时增强架构和技术选择的评审,这些都会在迭代
0中进行,我们认为这些都是值得的。同时,我们在最初的几个迭代,独立的测试团队会集中测试架构是否可工作。
d)
代码复杂性、编码风格混乱等都是属于静态代码质量的问题,这些可以通过工具来解决,而不需要太多的人工评审。常用的静态代码检查工具有:
Stylecop、
Fxcope、
Gendarme用于
C#开发;
Checkstyle、
Findbugs、
PMD用于
Java开发
e)
每隔两天,会有一个
coding show的会议,
20~30分钟,每一个成员展示最核心的一段代码,快速评审,评审的重点是和规范不符的,编写质量较差的内容,然后及时修改。及时修正和全员共识是我们保证代码的手段之一。
什么时候技术债务可以先暂缓处理?
1)
上市时间的要求很急。我们要考量修改债务的成本和没有上市造成的损失。例如修改债务需要
1,
000元的成本,没有上市造成的损失是
100,
000元,还不包括客户潜在的转换成本,那就先不考量消除债务吧
2)
产品预算的限制。我们可以把债务后期的偿还费用,一直延迟到产品发布得到下一期产品投资为止。
3)
产品的生命周期很短。一些产品的生命周期很短,无论是对市场的认识不足,还是产品本身就是试探性产品。产品结束了,所有与之相关的债务也就消失了。很多时候,等看到产品的价值后再去偿还债务也是务实的。
分享到:
相关推荐
文章指出虽然构建并部署机器学习系统相对较快且成本较低,但随之而来的维护成本却非常高昂,这被比作技术债务(technical debt)。作者通过软件工程的技术债务理论框架揭示,在现实世界中的机器学习系统中通常会出现...
《基于边际贡献的需求变更技术债务量化评估》这篇文章探讨了软件开发中的一个重要问题——技术债务,尤其是在需求变更场景下的管理策略。技术债务是指在追求短期目标时采取的捷径或妥协,长远来看会增加软件的成本和...
技术债务-预防,诊断和治疗技术债务阅读和资源清单。 它包含许多诊断,预防和控制技术债务的方法。 这是一个在制品! 请通过创建一个fork并创建一个pull请求来添加您觉得有趣的任何资源。 目录 :chequered_flag: 从...
区块链技术在高校债务风险评价领域的应用正在逐渐引起关注。高校债务问题已经成为制约其可持续发展的一大因素,过度负债可能导致政府承担较大的信用风险,并可能引发金融不稳定。国内外学者对此进行了多角度研究,但...
技术债务该存储库包含给出的演示文稿“技术债务”的源代码。推介会 npm install --global simple-server simple-server ./ 3000执照麻省理工学院许可版权所有(C)2018 Daniel M.Spiridione, //daniel-spiridione....
"债务信息管理系统设计与实现论文" 本文主要围绕甘肃省公路航空旅游集团债务管理业务展开,系统全面介绍了集团债务信息管理系统的分析、设计和实现的全过程。该系统主要涉及债务流程管理、债务信息管理、债务报表...
兰尼斯特总是要偿还技术债务 这仍处于早期阶段。 基本上,我喜欢在代码库中自动生成潜在技术债务清单的想法。 安装 npm install -g lannister 用法 lannister src/在dir src /上运行技术债务检查,并在当前路径下...
根据给定文件的信息,我们可以提炼出以下几个关键知识点: ### 一、全球公共债务持续上升 ...《一个债务的世界》这份报告由UNCTAD的技术团队编制完成,旨在提醒国际社会关注全球债务问题,并提出具体的应对措施。
从提供的文件信息来看,由于【部分内容】并没有给出实质性的文本内容,而是呈现一些混乱的数字和符号组合,这可能是因为OCR扫描技术未能准确解析原始文档的图像内容,导致结果出现错误或无法解读。因此,无法直接从...
令人敬畏的技术债务 精选的技术债务讲座,文章和书籍清单。内容会谈视频中与技术债务有关的谈话记录 -Ward Cunningham反思了“债务隐喻”作为重构动机的历史,动机和普遍的误解。 大多数团队都有一定数量的技术债务...
1. **债务危机**:麦道克的债务危机揭示了大型企业即使拥有庞大的资产,也可能因为一笔看似微不足道的债务无法偿还而引发整个财务系统的崩溃。这种现象表明,债务管理对于任何企业都是至关重要的,尤其是大型企业,...
《TDPL Sonar 插件:深度解析技术债务与代码质量》 在软件开发领域,技术债务(Technical Debt)是一个重要的概念,它描述了为了快速实现功能而采取的权宜之计,这些权宜之计在未来可能导致额外的工作量和维护成本。...
在IT行业中,虽然直接的技术关联可能较少,但理解债务重组的基本方式对于管理公司财务风险和理解企业报表至关重要,尤其是对于那些涉及金融技术(FinTech)或者从事金融科技服务的公司。 首先,债务重组的概念是...
一、系统架构与技术要求 本系统采用 C/S 架构,前端应用程序使用 C# 开发,后台采用 Microsoft SQL Server 2000 和 Microsoft Office Access 作为数据管理平台。财政管理网络版使用 Microsoft SQL Server 2000 ...
论文研究-债务融资、技术创新与寡头垄断竞争 .pdf,
#资源达人分享计划#
技术债务评分是一种简单,主观的模型,用于衡量和可视化组织的整体技术债务。 根据用户的输入,模型将产生0-800范围内的分数。 0表示技术债务管理到期日较低。 相反,800表示技术债务管理到期日很高。 可视化 技术...
特别是在高新技术产业上,江苏省具有较强的竞争力。 财政收支方面,江苏省表现出了较强的实力和较好的稳定性。报告提到,2019年江苏省财政收入排名全国第二,政府负债率和债务率相较于其他省市较轻,说明政府的偿债...
研究中提到了ICT(信息与通信技术)的发展,互联网作为一种重要的ICT工具,其发展与普及对经济增长有积极的推动作用。同时,互联网金融在促进消费、提高金融服务效率、推动普惠金融等方面起到了关键作用。而这些作用...