1.什么是技术债务
通过选择快速、短期的设计和实现方式而导致在未来系统开销和复杂性的巧加的方式,开发团队在软件质量上做出了妥协,而开发团队对妥协导致的后果所承担的责任则称为技术债务。从工业实践的角度来说,技术债务也可以定义为为了控制开发成本或避免操作问题,修复那些必须消除的代码结构性质量问题所花巧的成本。目前不少企业认为他们的技术债务是一种需要管理的负担。也有一些企业则通过将技术债务作为开发人员日常工作的重要组成部分而获得更大的成功。

2.技术债务的类型
按照软件开发的生命周期分类,技术债务可以分为以下十种类型:
(1)需求债务(Requirements TD):在系统定义的假设和约束下,最优需求规范和实际系统实现之间的差距;
(2)体系结构债务(Architectural TD):对系统内部质量规范(如可维护性等)做出妥协的系统架构设计方案导致的技术债务;
(3)设计债务(Design TD):在详细设计中采取的技术捷径导致的技术债务;
(4)代码债务(Code TD):违反了好的编码惯例或编码规则的低质量代码(例如冗余和过度复杂的代码)导致。代码技术债务是关注度最高的技术债务;
(5)测试债务(Test TD):在测试中由于采取捷径(例如缺乏单元测试、集成测试等,或测试用例过多)所导致的技术债务;
(6)构建债务(Build TD):指由于系统构建过程中产生的漏洞,或因为构建过程过于复杂而导致的技术债务;
(7)文档债务(Documentation
TD):是指软件开发过程的各个方面的不完整、不准确或过失的文档(例如过期的系统架构文档和缺乏代码注释)导致的技术债务;
(8)基础设施债务(Infrastructure
TD);指开发过程、技术、支持工具等的配置不佳导致的技术债务。基础配置不佳对开发团队开发高质量的软件产品具有负面影响;
(9)版本化债务(Versioning TD):指源代码版本控制中的问题,例如不必要的代码分支(Code Forks)导致的技术债务;
(10)缺陷债务(Defect TD):指因软件系统中存在的缺陷、错误或故障导致的技术债务。
3.技术债务怎么消除
(1)识别:清点企业现有的技术债务。
(2)优先:由于一次性解决技术债务在财务上是不可行的,因此需要首先解决最高风险。回答以下问题将帮助企业确定优先级:
构成安全威胁的平台或解决方案有哪些?
哪些平台或解决方案使你的合作伙伴、供应商或客户面临风险?
哪些平台或解决方案会显著影响IT成本?
(3)定义未来状态:确保定义未来状态的技术环境。如果不是这样,企业可能会通过提供不在目标平台或技术堆栈上的解决方案而产生更多的技术债务。
(4)执行:一旦企业确定了高优先级项目和未来的状态架构,要制定一个执行计划并与业务和高管保持一致。首先解决高价值、风险的项目有助于将企业的风险降至最低。技术债务不需要减缓向企业交付IT解决方案的速度。如果了解技术债务在哪里,就可以评估高风险项目,并实施解决方案。
以上就是有关于技术债务的定义、类型和消除方法的全部梳理,如果还想了解更多技术债务的相关内容,敬请关注三个皮匠报告的行业知识栏目。
推荐阅读
什么是防火墙技术?功能是?分类有哪些?
网络保护是什么?网络保护技术有哪些?
什么是政府隐性债务?2022地方隐性债务化解政策梳理