Translator|邱凯评论|孙淑娟梁策技术债就像一张不断上涨的信用卡账单,很容易失控。为避免此类情况,您需要不断评估累积的技术债务。技术债务指标旨在帮助您理解收集到的所有数据。有大量可以记录数据的工具和指标可供选择。在本文中,我们将了解它们的工作原理并帮助您为您的工作选择正确的指标。通过八个指标评估技术债务技术债务非常普遍,主要是因为许多企业根本没有意识到他们有多少技术债务。只有当企业想要添加新功能时,这些问题才会浮出水面。为避免陷入同样的??陷阱,您需要建立一些技术债务指标。请注意,我们所说的指标是从多个维度构建的。没有任何单一指标可以准确反映技术债务的当前状态。因此,需要通过一系列的指标来构建技术债的画像。那么,应该优先考虑哪些指标?下面列出了常见的。1.添加新的bug和修复bug这是一个非常简单友好的开始。每个已知的错误本质上都是一个小的技术债务。统计所有开发者的已知bug非常重要,它可以帮助你了解技术债务的整体情况。假设开发人员记录修复bug所花费的时间,就可以计算出偿还技术债务的效率。如果添加错误的速度快于修复错误的速度,那么您需要进行调整。2.可维护性指数可维护性指数是根据已解决的问题数占问题总数的比例,问题的优先级越高,权重越大。如果开发团队定期跟踪代码库问题并确定其优先级,您可以轻松确定有多少已解决和未解决的问题。您可以在问题跟踪器中跟踪问题,但更好的方法是使用StepsizeVSCode或JetBrains的编辑器扩展工具,它们可以帮助您直接在编辑器中跟踪代码库问题并确定其优先级。此外,你可以从仪表盘上看到问题的进展,这将激励开发团队解决更多的技术债务。3.代码指标复杂的代码是技术债务不断增长的明显标志。在某些时候,你将不得不处理这个烂摊子。CodeMetrics是一组指标,包含代码质量和复杂性的全局量化:圈复杂度、类耦合和继承深度。您需要尽可能降低每个单独指标的分数。这同样适用于代码指标的总体指标。4.时间周期另一个与代码质量密切相关的是时间周期。用技术术语来说,这衡量的是从第一次代码提交到实时部署所经过的时间。然而,当您评估技术债务时,您需要查看现有代码何时被修改,以及问题何时在不使用快速修复的情况下得到解决。如果开发人员花费数小时修复小错误,就会意识到代码中潜伏着一些技术债务。5.代码流失代码流失是对特定代码被删除、替换或重写的次数的度量。当您开发新功能或处理产品的特定模块时,代码流失是不可避免的。但是,在您修复未解决的问题并发布新版本后,代码流失问题应该会迅速减少。如果代码的某些区域在很长一段时间内经历了高频率的代码改动,这通常表示每次迭代都引入了新错误或快速修复。6.代码覆盖从某种意义上说,代码覆盖就是从相反的方向去分析同一个问题。在这种情况下,在运行代码测试任务时,需要评估执行了多少代码。这可以帮助您了解编写代码的效率——未执行的代码行越多,您编写的代码就越糟糕。80%的代码覆盖率是一个不错的目标。高于这个值是极好的,低于这个值说明代码还有优化的空间。7.CodeOwnership烹饪界有一句俗语:“太多人做太多事”。这种说法在软件工程领域同样适用。如果很多人在做同一个任务,很容易以大量无用代码结束。尽管如此,您还是不希望只有一个人承担整个项目。如果他生病或离职,项目就结束了。基于以上原因,有必要分析一下谁参与了哪些项目。作为流程的一部分,您需要计算有多少开发人员为每个项目做出贡献——这就是您的代码覆盖率。平均代码覆盖率数据将揭示你是否建立了有效的分配机制,或者只是随机分配。理想状态是建立一个完整的团队来负责每个项目。8.TechnicalDebtRatio(TDR)顾名思义,这是一个专门评估未来技术债务总成本的指标。它可以是时间或其他资源。计算方法很简单:(修复成本/开发成本)*100=技术负债率在这个场景下,可以根据上面提到的代码指标来计算修复成本。开发成本可以通过一个简单的公式来计算,即构建产品或功能所需的代码行数除以执行每行代码时消耗的计算资源量。将两者的结果代入技术债务比率公式,您最终会得到一个简单的比率,该比率将揭示您需要投入多少时间或资源来解决问题。理想情况下,您的技术债务比率约为5%。如果你的分数是这个数字的很多倍,那么你的技术债务早就应该了。补充建议:前端响应时间严格来说,前端响应能力与技术债关系不大。但是,该指标可以作为警告。如果你的前端页面加载时间过长,通常意味着它使用了旧的技术或复杂的代码。两者都是技术债务的典型形式。评估技术债务的最佳工具希望现在您已经了解如何衡量技术债务指标。剩下要知道的就是使用哪些工具来完成工作。以下是适用于大多数项目的一些很棒的工具:1.StepsizeStepsize专为代码库问题跟踪而设计,可在您最喜欢的编辑器中识别和突出显示代码问题。StepsizeVSCode或JetBrains编辑器扩展工具是完全免费的,可以帮助您跟踪技术债务并跟进流程的进度。由于Stepsize与Jira、Asana、Linear、AzureDevOps和许多其他接口,因此您无需彻底改造工作流程即可使用它。直接在编辑器中创建和查看代码问题跟踪和改进高优先级代码问题以偿还技术债务通过问题跟踪器为短期冲刺添加关键问题2.SonarQube与跟踪技术债务的完整解决方案相比,SonarQube是一个专注于窄工具。该平台的主要目标是评估和提高代码质量。SonarQube通过自动分析突出显示的错误和混乱代码,提供基于时间跟踪的评分和优先级排序。3.Teamscale描述Teamscale的最佳语言是它充当产品的系统分析器。该工具评估您的代码质量并以可视化方式提供相关信息。Teamscale可以通过配置自定义仪表板来处理许多指标。该平台还提供了一些质量管理功能,虽然它缺少带注释的问题跟踪和详细的技术债务分析(Stepsize提供),但它仍然是一个出色的工具。4.由VelocityCodeClimate开发的Velocity被认为是一个“工程智能”平台,主要旨在帮助管理人员改进工作流程和分配资源。它不是专门为处理技术债务而设计的,但其中有一些功能覆盖。Velocity通过从Jira和其他DevOps工具中提取数据来提供建议。您还可以使用它来执行自动代码分析并为内部问题报告收集信息。5.Jira在您选择的项目管理过程中创建和监控累积的任务,也是评估技术债务的一种方式。如果你想选择这种方式来处理技术债务,那么Jira是一个明智的选择。它不提供任何代码分析功能(上述应用程序都提供此类功能),但它是执行管理任务的绝佳平台。结论正如我们所发现的,有许多不同的方法可以评估和管理技术债务。如果您正在寻找一个一体化的解决方案,那么Stepsize一定在名单上。我们的平台对开发人员来说非常直观,并且功能强大到足以为管理人员提供有价值的见解——仪表盘中显示的技术债务信息可以有效地评估其对未来路线的影响。请记住,所有高速增长的软件公司都有技术债务。但评估技术债务和清理代码非常重要,这也将使您的公司保持高速发展。译者介绍邱凯,51CTO社区编辑,目前就职于北京中捷快递有限公司,信息安全工程师。主要负责公司信息安全规划与建设(保险类,ISO27001),主要日常工作内容为安全计划的制定与实施、内部安全审计与风险评估、管理等。原标题:HowtoMeasureYourTechnicalDebt:8MetricstoConsider,AlexOmeyer
