研发度量指标及计算公式大全 |
|
|
|
类别 | 指标 | 指标简介 | 公式及计算方法 |
代码集成与指标 | 代码行 | 指的是一份代码文件中的有效代码行、注释和空行的总数。统计代码行数可以帮助团队评估代码库中的代码量以及代码复杂度。 | 统计代码库中的代码行数(包括注释和空行)。 |
提交粒度 | 指的是代码提交的粒度大小,例如函数、类、文件等。评估提交粒度可以帮助团队了解提交的代码规模以及代码变更的范围。 | 统计代码提交的粒度大小,例如函数、类、文件等。 |
|
CR效率 | 指的是每位开发人员处理CR的效率,通常是以CR处理数量或处理时间来衡量。评估CR效率可以帮助团队优化CR处理流程,提高开发效率。 | CR效率 = 人均CR处理效率 / CR数:计算每位开发人员处理CR的效率。 |
|
CR效果 | 指的是CR的通过率,即通过审核的CR数量占总CR数量的比例。评估CR效果可以帮助团队了解CR审核的质量和效率。 | CR效果 = 通过率 / CR数:统计CR的通过率。 |
|
构建频率 | 指的是构建的次数或频率,通常用于评估CI/CD系统的效率和稳定性。统计构建频率可以帮助团队了解构建的频率以及代码变更的频率。 | 构建频率 = 运行次数 / 时间:计算构建的次数以及频率。 |
|
构建成功率 | 指的是构建成功的次数占总构建次数的比例,用于评估构建的稳定性和效率。评估构建成功率可以帮助团队了解构建的稳定性和效率。 | 构建成功率 = 成功次数 / 运行次数:统计构建成功的次数与运行总次数的比例。 |
|
上线成功率 | 指的是代码上线成功的次数占总提交次数的比例,用于评估代码集成和指标除的效率和稳定性。统计上线成功率可以帮助团队了解代码集成和指标除的效率和稳定性。 | 上线成功率 = 成功次数 / 提交次数:统计上线成功的次数和提交的总次数的比例。 |
|
合并请求通过率 | 指的是通过审核的合并请求数量占总合并请求数量的比例。评估合并请求通过率可以帮助团队了解合并请求审核的质量和效率。 | 合并请求通过率 = 通过数 / 合并请求数:计算通过的合并请求的数量占总合并请求数量的比例。 |
|
代码提交频率 | 指的是代码提交的频率,通常用于评估开发人员的效率和代码变更的频率。统计代码提交频率可以帮助团队了解开发人员的效率和代码变更的频率。 | 代码提交频率 = 提交次数 / 时间:计算代码提交的频率。 |
|
长周期分支数量 | 指的是分支持续时间超过阈值的数量。评估长周期分支数量可以帮助团队了解长周期分支的情况,以便及时优化和处理。 | 长周期分支数量 = 分支持续时间超过阈值的数量:统计长周期的分支数量。 |
|
维护成本 | 评估代码集成和指标除所涉及的维护成本,包括资源、时间等消耗情况。 | 包括评估代码集成和指标除所涉及的资源和时间消耗。可以通过计算某一段时间内的团队人数、工作时间、开发环境和工具的使用情况、项目的复杂度等因素来估算维护成本。 |
|
故障率和故障处理时间 | 评估代码集成和指标除过程中发现的故障率以及故障处理时间,以确保代码质量和稳定性。 | 故障率 = 某段时间内故障数量 / 被测代码总行数; 故障处理时间:故障处理时间 = 某段时间内所有故障修复时间总和 / 修复故障的总数; |
|
代码覆盖率 | 评估测试覆盖代码的比例,以确保足够的测试覆盖以及代码质量。 | 代码覆盖率:代码覆盖率 = 被测试代码行数 / 总代码行数; |
|
团队交互频率 | 评估团队内部和外部的交际情况及合作效率,以确保合作和沟通的良好状态。 | 团队交互频率:团队交互频率 = (沟通频率 + 问题解决速度 + 会议时间) / 团队成员总数; |
|
配置管理和版本控制 | 评估代码集成和指标除过程中版本控制和配置管理的完整性和准确性。 | 评估代码集成和指标除过程中版本控制和配置管理的完整性和准确性。可以通过统计版本控制系统中的提交次数和文件变更数来评估版本控制和配置管理的完整性和准确性。 |
|
上线时间和频率 | 评估代码上线时间的频率和延迟情况,以确保代码集成和指标除能够快速进行。 | 上线频率 = 某段时间内上线的代码量 / 总代码量; 上线延误率 = 某段时间内因各种原因导致延迟上线的代码次数 / 总上线代码次数; |
|
代码复杂度 | 评估代码的复杂度以及代码重构的频率和效果,以确保代码质量。 | 可以通过各种代码度量工具来计算代码复杂度,例如Cyclomatic Complexity,Lack of Cohesion in Methods (LCOM)等等。 |
|
用户反馈 | 评估用户反馈的质量和数量,以便持续改进和提高用户满意度。 | 可以通过用户反馈调查问卷等方式进行评估,也可以使用各种分析工具来统计和分析用户反馈数据,例如Google Analytics等。 |
|
代码质量领指标 | 问题扫描 | 使用自动化静态代码分析工具扫描代码中的潜在问题(如代码中可能会出现的漏洞、安全问题、输入验证和格式错误等),以及遵循编码最佳实践的遗漏,以识别可能出现的错误、漏洞或安全威胁。 | 可通过静态代码分析工具等进行扫描,得到扫描结果。 |
复杂度 | 通过衡量代码中的控制流程,包括条件判断和循环等,以及查找错误和发现代码的潜在弱点,以发现代码弱点和优化机会。 | 可使用代码复杂度分析工具(如Cyclomatic Complexity)计算代码的复杂度指标,常见的代码复杂度度量指标包括:条件分支、循环、递归和函数大小等。 |
|
代码冗余 | 检测代码中的重复行、过时代码和无用代码,并通过它们的删除来减少代码体积、提高代码的可读性和可维护性,降低代码的开发成本和维护成本。 | 代码冗余:冗余代码量 / 总代码量。 |
|
扇入、扇出 | 在计算软件系统和子系统的复杂度和可维护性时,基于扇入和扇出的指标可以提供宝贵的信息。扇入表示对某一代码单元的调用是否出现在其他代码单元中,扇出表示某个代码单元是否调用了其他代码单元。 | 扇入表示对某个代码单元的调用是否出现在其他代码单元中,扇出表示某个代码单元是否调用了其他代码单元。 |
|
测试覆盖率 | 指在测试过程中覆盖代码基本要求的指标,可以衡量测试活动是否涵盖了应用程序的各个部分,并为软件工程师提供更好的开发路线图。 | 具体计算方式根据具体的工具而异,通常来说是统计被测试代码的覆盖情况,如行覆盖率、分支覆盖率等。 |
|
线上缺陷密度 | 表示在应用程序的生命周期中发现的未修复错误的数量,通常使用“错误/代码行”的比率来表示。 | 线上缺陷密度 = 某段时间内发现的 bug 数量 / 某段时间内代码执行总次数(如请求数、用户数等)。 |
|
应用拓扑 | 构建应用程序中不同组件之间的关系拓扑图,以帮助开发人员更好地理解应用程序的架构以及各组件之间的交互关系,PMO前沿。 | 通过分析应用的运行环境、架构及服务之间的依赖关系来构建应用拓扑图。 |
|
资源依赖 | 在应用程序中寻找外部资源,如库、服务、框架和硬件设施,并理解它们与应用程序之间的互动。这可以解决开发人员在部署、扩展和维护应用程序时遇到的各种问题。 | 分析代码运行依赖的资源,比如依赖库、依赖服务等,以及它们之间的关系。 |
|
代码安全问题存量 | 检测代码中的安全漏洞,以确定代码安全性,并根据分析结果制定安全策略,避免恶意攻击和攻击外部源。 | 代码安全问题存量 = 缺陷数 / 单位代码量。 |
|
可维护性 | 指在代码编写期间,就从设计和实现的角度考虑代码的可扩展性和维护性,以降低代码的修改和更新成本,提升代码的可维护性。 | 通常包括代码结构、内部依赖关系、内聚性和耦合性等指标。 |
|
可读性 | 用来衡量代码的易读性、易理解性和易扩展性,通常包括代码编写风格、命名规则、代码注释等方面的考虑。 | 可读性指标需要从代码编写风格、命名规则等方面考虑。 |
|
性能优化 | 性能优化指的是通过应用程序的修改和优化来提高响应时间、延迟、吞吐量等方面的运行效率。 | 通常包括响应时间、延迟、吞吐量等指标。 |
|
可靠性 | 可靠性指的是应用程序在各种情况下的稳定性、可用性和出错率等方面的表现PMO前沿。 | 考虑到代码的稳定性、可用性、出错率等指标。 |
|
可重用性 | 可重用性指的是代码的模块、接口和数据结构可以被多个应用程序共享、复用。有了可重用的代码,开发人员可以更快地完成开发任务,减少了代码重复和修改的工作量,提高了软件开发的效率。 | 可重用性通常可以通过度量代码的复用率来计算。复用率指在一段时间内使用的复用代码行数占总代码行数的比例。如果复用率较高,表示代码具有较强的可重用性。 |
|
可移植性 | 可移植性指的是代码可以在不同的平台上平稳运行。具有较强的可移植性的代码可以在不同的操作系统和硬件平台上运行,而不需要针对平台进行修改。这可以帮助开发人员更快地扩展应用程序到新的环境中,从而降低了生产力成本。 | 可移植性可以通过在不同的平台上测试代码来计算。测试可以包括在不同的操作系统、编程语言、硬件平台上运行代码,并比较其性能、稳定性和兼容性。测试结果可以用来计算代码的可移植性,分析其在不同平台上的适应能力。 |
|
可部署性 | 可部署性指的是代码容易部署到生产环境中,不需要耗费大量的时间进行部署。具有良好可部署性的代码可以避免应用程序的部署问题和环境不兼容问题,保持系统的稳定性和高可用性。这有助于降低底层技术和业务逻辑之间的耦合,以及锁定底层技术版本所需的维护成本。 | 可部署性通常可以通过评估安装、配置和部署代码的时间来计算。较短的部署时间通常意味着代码的可部署性更好。因此,可以通过跟踪安装、配置时间和资源消耗来计算可部署性。对于应用程序的部署也可以使用容器化技术,例如 Docker,以快速部署应用程序。使用这些工具可以提高编码的部署效率并降低部署成本。 |
|