软件质量度量指标

7
我想知道是否有人有衡量软件质量的度量经验。我知道有代码复杂度度量,但我想知道是否有一种特定的方式来衡量它在其生命周期内实际表现如何。我的意思不是运行时性能,而是质量的度量。欢迎提供任何有助于收集这些信息的工具。
是否有度量标准来回答以下问题:
- 软件更改/增强的易用性、健壮性如何 - 如果它是一个常见/通用的软件,它有多可重用 - 与代码相关的缺陷数量有多少 - 是否需要重新设计/编码 - 这段代码存在多长时间了 - 开发人员是否喜欢代码的设计和实现
似乎大部分都需要与CM和错误报告工具密切相关。
7个回答

1

如果用你所提到的衡量代码质量的标准是如此直接的工作并且度量准确,那么也许就不再需要项目经理。更重要的是,好的和差的经理之间的区别将非常小。由于这并不是这样,这只表明获取有关软件质量的准确概念并不容易。

你的问题涉及到多个不同的领域,这些领域的量化方式各不相同或者很难量化,因此应该将这些问题分成对应共同目标的类别。然后,你可以为每个类别分配一个“重要性”因素,并从中得出一些指标。

例如,你可以使用 静态代码分析工具 来测量代码的语法质量,并从中得出一些指标。

你还可以使用与版本控制系统集成的错误跟踪工具从错误行/代码中得出一些指标。

为了衡量编码过程的稳健性、重用性和效率,您可以评估每个开发功能使用设计模式的情况(当然,在有意义的情况下)。没有工具可以帮助您实现这一点,但如果您监控软件的增长并对其进行数字化处理,它可以给您一个很好的想法,了解您的项目正在如何发展以及是否朝着正确的方向前进。引入代码审查程序可以帮助您更轻松地跟踪这些问题,并在开发过程的早期可能解决它们。可以将适当的设计模式实现的功能百分比作为指标。

虽然度量标准可能相当抽象和主观,但如果您花时间并始终尝试改进它们,它可以为您提供有用的信息。

关于软件过程中的度量标准需要注意以下几点:

  1. 除非您做得好,否则度量标准可能会带来更多的危害。
  2. 度量标准很难做到好。
  3. 您应该谨慎使用度量标准来评估个人绩效或提供奖金计划。一旦您这样做,每个人都会试图欺骗系统,您的度量标准将变得毫无价值。

1

如果你正在使用Ruby,那么有一些工具可以帮助你处理从LOCs/Method和Methods/Class到Saikuros圆形复杂度等各种指标。

去年,在一个Ruby会议上,我的老板实际上举行了一场关于我们使用的软件度量标准的演讲,这是幻灯片。

一个有趣的工具,可以同时为您提供很多指标,它就是metric_fu。它检查代码的许多有趣方面,例如高度相似的代码、经常更改的代码、分支较多的代码等等。这些都是您的代码可以改进的迹象 :)

我想其他语言也有很多类似的工具。


0

您可能需要查看以下页面,其中描述了软件质量的各个方面,包括样本图。您需要测量的一些质量特征可以使用诸如Sonar之类的工具来推导。非常重要的是要弄清楚您想要如何对以下某些方面进行建模:

  1. 可维护性:您提到了更改/测试代码或重用代码的易用性。这些与可维护性的可测试性和可重用性方面有关,这被认为是关键的软件质量特征。因此,您可以将可维护性作为测试能力(单元测试覆盖率)和可重用性(代码的内聚性指数)的函数来衡量。
  2. 缺陷:仅测量缺陷可能不是一个好主意。但是,如果您可以对缺陷密度进行建模,那么它可能会给您一个很好的画面。

0

更加注重客户的度量标准应该是软件供应商修复漏洞和实现新功能所需的平均时间。

这很容易计算,基于您的缺陷跟踪软件的创建日期和关闭信息。

如果您的平均故障修复/功能实现时间非常长,这也可能是低质量软件的指标。


0

关于这个问题,旧的 Joel on Software 论坛有一个不错的帖子


0

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

接下来的事情就是简单地计算发现的错误数量,并将它们与代码行数的比率设置在一起。有一些价值观认为高质量软件应该每行代码拥有多少个错误。


0

你可以用一些经济的方式或者程序员的方式来做。

如果你选择经济的方式,你需要衡量改进代码、修复错误、添加新功能等成本。如果你选择第二种方式,你可能想要衡量工作人员使用你的程序的时间以及发现和修复平均错误所需的人力小时数。当然,这些方法都不是完美的,因为成本取决于市场情况,人力小时数取决于实际的人员和他们的技能,所以最好结合两种方法。

这样你就可以得到一些衡量代码质量的工具。当然,你应该考虑项目的规模和其他因素,但我希望主要思想是清楚的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接