软件质量指标

时间:2009-06-29 21:05:06

标签: metrics software-quality

我想知道是否有人有用于衡量软件质量的指标的经验。我知道有代码复杂度指标,但我想知道是否有一种特定的方法来衡量它在生命周期中的实际执行情况。我不是指运行时性能,而是质量的衡量标准。任何有助于收集这些工具的建议工具也是受欢迎的。

是否有测量来回答这些问题:

  • 改变/增强软件的容易程度,健壮性
  • 如果它是一个普通/通用的软件,它是如何可重用的
  • 与代码相关的缺陷数
  • 是否需要重新设计/重新编码
  • 此代码已存在多长时间
  • 开发人员喜欢如何设计和实现代码

似乎大多数情况需要与CM和错误报告工具密切相关。

7 个答案:

答案 0 :(得分:1)

如果按照您所说的条款测量代码质量将是一项如此简单的工作并且指标准确无误,则可能不再需要项目经理。更重要的是,好的和差的管理者之间的区别非常小。因为它不是,这只是表明准确了解软件的质量,并非易事。

您的问题涵盖了多个量化区域或量化非常主观的区域,因此您应将这些区域分组为与共同目标相对应的类别。然后,您可以为每个类别分配“重要性”因子,并从中获取一些指标。

例如,您可以使用static code analysis tools来衡量代码的语法质量,并从中获取一些指标。

您还可以使用与版本控制系统集成的错误跟踪工具从错误/代码行中获取指标。

为了测量编码过程的稳健性,重用性和效率,您可以评估每个开发的特征的设计模式的使用(当然在有意义的地方)。没有任何工具可以帮助您实现这一目标,但如果您监控您的软件越来越大并将数字放在这些上,它可以让您非常清楚您的项目如何发展以及它是否朝着正确的方向发展。引入代码审查程序可以帮助您更轻松地跟踪这些程序,并可能在开发过程的早期解决这些问题。可以使用适当的设计模式实现的功能百分比。

虽然指标可能非常抽象和主观,但如果你花时间并且总是试图改进它们,它可以为你提供有用的信息。

有关软件流程中的指标的一些注意事项:

  1. 除非你做得好,否则指标可能会弊大于利。
  2. 指标难以做好。
  3. 您应谨慎使用指标评估个人表现或提供奖励计划。一旦你这样做,每个人都会试图欺骗系统,你的指标将证明毫无价值。

答案 1 :(得分:1)

如果您正在使用Ruby,那么有一些工具可以帮助您使用LOCs / Method和Methods / Class Saikuros Cyclomatic复杂度等指标。

我的老板实际上在去年的红宝石会议上对我们使用的软件指标进行了演示,these are the slides.

一个有趣的工具,可以同时为您提供大量指标metric_fu。它检查了很多有趣的代码方面。高度相似的东西,变化很大,有很多分支。你的代码可能更好的迹象:)

我想其他语言也有很多这样的工具。

答案 2 :(得分:0)

软件讨论小组的旧Joel有一个很好的thread

答案 3 :(得分:0)

我知道一些SVN统计程序提供了每次提交更改行的概述。如果您有一个错误跟踪系统,修复错误添加功能的人员等在修复错误时说明了他们的提交编号,那么您可以计算每个错误/新功能请求影响了多少行。这可以让您测量可变性。

接下来就是简单地计算找到的错误数量,并将它们与代码行数进行比较。每个代码行都有一些高质量软件应该有多少错误。

答案 4 :(得分:0)

你可以用某种经济方式程序员的方式来实现。

如果是经济方式,您需要考虑改进代码,修复错误,添加新功能等的成本。如果您选择第二种方式,您可能需要测量人员使用您的程序的程度,以及查找和修复人工时间内的平均错误是多么容易。当然它们并不完美,因为成本取决于市场情况,人工时间取决于实际的人和他们的技能,因此最好将这两种方法结合起来。

通过这种方式,您可以获得一些工具来保证代码的质量。当然你应该考虑你的项目规模和其他因素,但我希望主要的想法是明确的。

答案 5 :(得分:0)

更加以客户为中心的指标是软件供应商修复错误和实施新功能所需的平均时间。

根据您的错误跟踪软件的创建日期以及已关闭的信息,可以非常轻松地进行计算。

如果您的平均错误修复/功能实施时间非常长,这也可能是软件质量不佳的指标。

答案 6 :(得分:0)

您可能需要查看以下 page ,其中介绍了软件质量的各个方面,包括示例图。您需要测量的一些质量特性可以使用Sonar等工具获得。弄清楚如何为以下几个方面建模是非常重要的:

  1. 可维护性:您确实提到了更改/测试代码或重用代码有多容易。这些与可维护性的可测试性和可重用性方面有关,这被认为是关键的软件质量特性。因此,您可以根据可测试性(单元测试覆盖率)和可重用性(代码的凝聚力指数)来衡量可维护性。
  2. 缺陷:单独的缺陷可能不是一个好主意。但是,如果您可以对缺陷密度进行建模,它可以为您提供良好的图像。