很多软件开发团队走到后期,整个技术债务的包袱越来越重,债务问题解决已经迫在眉睫。具体软件代码开发重构,更多会从整个技术债务定义,技术债务产生根源,技术债务识别分析,包括后续债务缓解,消除,整个全生命周期去分析技术债务。
帮助团队共同讨论研讨技术债务的事情。我们要解决技术债务,首先需要再团队内部对技术债务达成共识。
这本书给出了技术债务完整定义和全景图。简单来说,技术债务是指在前期由于整个设计或者开发上的不在意,或者缺陷的未关注,导致后期软件上线后,整个软件演化变更,软件维护上投入极大成本。前期这些所有不在意缺陷的引入都叫做技术债务。
所以我们可以看到整个技术全景图里面分为可见和不可见两部分。可见的是对于变更不友好、对运维不友好,各种故障和缺陷。但是你真正不可见的是内在潜在缺陷和内在质量的不足。在 技术全景图里面给出技术债务一般包括三个方面,第一个是本身架构设计的不足,第二个是软件代码的问题,第三个基础设施生产环境的问题。所以整本书的展开是从我们的源代码、架构设计、生产环境三个方面详细论述如何去分析和识别技术债务。
再回过头来,我们看看为什么会产生技术债务。这里面有很多原因,我们容易想到的是本身的架构设计,开发人员技能水平不行,第二个原因是我们没有做好软件开发过程管理,QA和QC质量控制。但是很多时候还有一个关键原因,我们任何软件开发由于项目目标和进度的要求,我们在做架构设计和权衡的时候,往往我们主动牺牲了软件内在质量性、有些时候架构师知道这不是最佳最理想方案,但是由于项目周期紧迫,没有办法把项目管理软件质量管理做到位,这也是技术债务成因的另外一个关键点。
第二个是关于技术债务识别,这里主要讲到问题和故障驱动。我们通过在后续软件运营和运维过程中,我们发现变更处理方便,运维不方便这些问题,通过对问题的根源分析,找到具体的技术债务成因点,究竟是由于技术架构引起的,还是源代码引起的。