2009-06-29 87 views
7

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

有测量来回答这些问题:

  • 有多容易改变/增强软件,健壮性
  • 如果是普通/一般足够的软件,如何可重复使用的是
  • 有多少缺陷的代码
  • 先后此需要重新设计相关/重新编码
  • 已这段代码被周围
  • 多久10
  • 开发者喜欢代码是如何设计和实现的

看起来像大多数这将需要与CM和错误报告工具密切联系。

+2

社区维基... – 2009-06-29 21:07:03

回答

0

老软件Joel在Software Discussion groups上有一个很好的thread

0

我知道一些SVN stat程序提供了对每次提交更改行的概述。如果您有错误跟踪系统,并且修复错误的人员在修正错误时指出他们的提交编号,则可以计算每个错误/新功能请求影响的线数。这可以给你一个可变性的度量。

接下来的事情是简单地计算找到的错误数量,并将它们与代码行数量的比率进行设置。有一些价值观看高质量软件每个代码行应该有多少错误。

0

你可以在一些经济的方式程序员的方式

如果使用经济的方式,您可以减少代码改进,修复错误,增加新功能等等。如果您选择第二种方式,您可能需要测量员工在程序中的工作量,以及查找和修复人为小时的平均错误的容易程度。当然,它们并非完美无瑕,因为成本取决于市场情况,人的时间取决于实际的人员和技能,所以最好将两种方法结合起来。

这样你就可以得到一些仪器来保证你的代码的质量。当然,你应该考虑到你的项目的规模和其他因素,但我希望主要想法很明确。

1

如果按照您所说的术语来衡量代码质量将是一件非常简单的工作,且指标准确无误,那么可能不再需要项目经理了。更重要的是,好的和差的管理者之间的区别是非常小的。因为它不是,这只是表明获得关于软件质量的准确概念并非易事。

您的问题涉及到多个量化不同的领域或对量化非常主观的领域,因此您应将这些问题归入与常见目标相对应的类别。然后,您可以为每个类别分配一个“重要性”因素,并从中得出一些指标。

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

您还可以使用与版本控制系统集成的缺陷跟踪工具从缺陷/代码行中得出度量标准。

为了测量编码过程的稳健性,重用性和效率,您可以评估每个功能开发的设计模式的使用情况(当然这是有意义的)。没有任何工具可以帮助你实现这个目标,但是如果你监视你的软件变得越来越大,并且把数字放在这些数据上,它可以给你一个关于你的项目如何发展以及它是否朝着正确的方向的好主意。引入代码审查程序可以帮助您更轻松地跟踪这些过程,并可能在开发过程的早期解决它们。可以使用适当设计模式实现的功能的百分比。

虽然指标可能相当抽象且主观,但如果您花时间去尝试改善它们,它可以为您提供有用的信息。

有几件事情需要注意的软件过程,虽然指标:

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

如果你使用Ruby,也有一些工具来帮助您与指标从交通线/方法与方法/类Saikuros圈复杂度。

我的老板实际持有的软件度量的演示,我们在去年红宝石会议使用,these are the slides.

一个有趣的工具,为您带来了很多指标一次是metric_fu。它会检查代码的很多有趣的方面。那些高度相似的东西,变化很大,有很多分支。所有的迹象你的代码可能会更好:)

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

0

更关注客户的度量标准是软件供应商修复错误和实现新功能所需的平均时间。

根据您创建的错误跟踪软件的日期和已关闭的信息,它很容易计算。

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

0

您可能需要检查以下内容page描述软件质量的各个不同方面,包括样本图。您需要测量的一些质量特性可以使用Sonar等工具推导出来。弄清楚如何建立以下几个方面的模型非常重要:

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