您将如何衡量大型项目中的代码“质量”

时间:2009-08-30 03:41:22

标签: software-quality

我正在做一个相当大的项目,几年的制作,在一家相当大的公司,我正在承担推动更好的整体代码质量的任务。

我想知道在这种情况下您将使用什么样的指标来衡量质量和复杂性。我不是在寻找绝对的措施,而是一系列可以随着时间的推移而改进的项目。鉴于这是一个跨越数百个项目的宏观操作(我已经看到一些问题涉及更小的项目),我正在寻找更自动化和整体性的东西。

到目前为止,我有一个如下所示的列表:

  • 全功能测试期间的代码覆盖百分比
  • BVT失败的反复出现
  • 依赖图/分数,基于某些工具,如nDepend
  • 构建警告数
  • 找到/压制的FxCop / StyleCop警告数
  • “捕获”声明的数量
  • 手动部署步骤数
  • 项目数量
  • “死”的代码/项目的百分比,如在任何地方都没有引用
  • 代码审核期间的WTF数量
  • 代码行总数,可以按行分类

5 个答案:

答案 0 :(得分:6)

您应该围绕六个主要的软件质量特性组织您的工作:功能,可靠性,可用性,效率,可维护性和可移植性。我写了一个描述这些特征的diagram online。然后,为每个特征决定您想要并能够跟踪的最重要的指标。例如,一些指标,如Chidamber和Kemerer的指标适用于面向对象的软件,其他指标,如圈复杂度则更通用。

答案 1 :(得分:2)

也许你会发现这种分析有趣或富有洞察力:A Tale of Four Kernels
修改: schema, and the corresponding queries

答案 2 :(得分:1)

圈复杂度是一个不错的“质量”指标。我确信开发人员可以找到一种方法来“游戏”它,如果它是唯一的指标,但是! :)

然后是C.R.A.P.指标...

P.S。 NDepend有大约100亿个指标,因此值得一看。另请参阅CodeMetrics了解Reflector。

D'哦!我刚刚注意到你已经提到了NDepend。

报告的错误数量也很有意义......

答案 3 :(得分:1)

如果您承担了更好的整体代码质量的驱动任务。你可以看看:

  • 您目前有多少未解决的问题以及需要多长时间才能解决?
  • 您有什么程序来收集要求?
  • 您的员工是否遵循最佳做法?
  • 您是否已经定义了描述公司编程方法的内容。

如果您有大量开发人员参与大型项目,那么每个人都有自己的编程方式。每种编程风格都能解决问题,但有些答案可能效率低于其他答案。

在攻击新功能或修复现有代码时,如何使用工作人员。让开发人员按照编程方式在团队中工作会迫使每个人都成为更好的代码。

当您的人员遵循规则更有效地编码时,您的开发时间应该更快。

您可以获得所需的所有指标,但我首先要说明您要做的事情:

您的开发实践是什么?

如果不了解目前的情况,您可以获得所需的所有指标,但您永远不会看到任何改进措施。

答案 4 :(得分:0)

software cloning/duplicate code的数量,显然更好。 (链接讨论克隆和各种技术来检测/测量它们。)