【问题标题】:Evaluation of Code Metrics [closed]代码指标评估[关闭]
【发布时间】:2010-12-22 17:43:24
【问题描述】:

关于代码度量的讨论相当多(例如:What is the fascination with code metrics?)。我(作为一名软件开发人员)对这些指标非常感兴趣,因为我认为它们可以帮助人们编写更好的代码。至少在查找需要重构的代码区域时,它们很有帮助。

但是,我想知道的是以下内容。是否有一些对这些源代码指标的评估证明它们确实与错误率或方法的可维护性相关。例如:圈复杂度非常高的方法真的会比复杂度低的方法引入更多的错误吗?还是说难度高的方法(Halstead)真的比难度低的方法需要更多的维护量?

也许有人知道这方面的一些可靠研究。

非常感谢!

【问题讨论】:

    标签: software-quality code-metrics


    【解决方案1】:

    好问题,没有直接答案。

    篇研究论文展示了例如圈复杂度和错误之间的关系。问题是大多数研究论文都不能免费获得。

    我发现了以下内容:http://www.pitt.edu/~ckemerer/CK%20research%20papers/CyclomaticComplexityDensity_GillKemerer91.pdf。尽管它显示了圈复杂度和生产力之间的关系。然而,它有一些其他论文的参考,值得尝试用谷歌搜索。

    【讨论】:

      【解决方案2】:
      【解决方案3】:

      看看this article from Microsoft research。总的来说,我对来自微软的开发智慧持怀疑态度,但他们确实拥有能够对大型产品进行长期研究的资源。引用的文章谈到了他们发现的各种指标和项目缺陷率之间的相关性。

      【讨论】:

        【解决方案4】:

        最后,我确实找到了一些关于软件指标和错误率之间相关性的论文,但没有一篇是我真正想要的。大多数论文都已过时(80 年代末或 90 年代初)。

        我认为开始对当前软件进行分析是个好主意。在我看来,应该可以调查一些流行的开源系统。源代码可用并且(我认为更重要的是)许多项目使用问题跟踪器和某种版本控制系统。可能有可能在版本控制系统的日志和问题跟踪器之间找到一个强大的链接。这将导致分析某些软件指标与错误率之间的关系的非常有趣的可能性。

        也许还有一个项目可以完全按照我上面的描述进行。有人知道类似的事情吗?

        【讨论】:

          【解决方案5】:

          我们对著名的 Chidamber 和 Kemerer 面向对象指标的错误预测能力进行了实证研究。事实证明,当我们应用适当的机器学习模型时,这些指标结合起来可以预测错误,准确率超过 80%。如果您有兴趣,可以在以下论文中准备完整的研究:

          “用于故障预测的开源软件的面向对象指标的实证验证。在 IEEE Transactions on Software Engineering,第 31 卷,第 10 期,2005 年 10 月,第 897-910 页。”

          【讨论】:

            【解决方案6】:

            我也曾经对用于衡量可能质量的代码指标的承诺非常着迷,并发现考虑到其设计复杂性,编写一段特定的代码需要多长时间。可悲的是,绝大多数关于指标的声明都是炒作,从未取得任何成果。

            最大的问题是我们想知道的输出(质量、时间、美元等)取决于太多无法控制的因素。这里只是部分列表:

            • 工具操作系统
            • 代码类型(嵌入式、后端、GUI、Web)
            • 开发者经验水平
            • 开发人员技能水平
            • 开发者背景
            • 管理环境
            • 质量重点
            • 编码标准
            • 软件进程
            • 测试环境/实践
            • 需求稳定性
            • 问题域(会计/电信/军事/等)
            • 公司规模/年龄
            • 系统架构
            • 语言

            请参阅此处的博客,其中讨论了许多此类问题,并给出了我们迄今为止尝试过的方法在实践中没有奏效的合理理由。 (博客不是我的。)

            https://shape-of-code.com

            这个链接很好,因为它解构了 Visual Studio 中最明显的指标之一,即可维护性指数:

            https://avandeursen.com/2014/08/29/think-twice-before-using-the-maintainability-index/

            有关大量指标的良好概述,请参阅本文,表明它们与程序的可理解性(其本身应与可维护性相关)没有很好的相关性:“自动评估代码可理解性:我们有多远?”,由 Scalabrino 等人撰写。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2015-02-06
              • 2018-11-05
              • 2011-06-09
              • 2021-04-11
              • 2018-01-20
              • 1970-01-01
              • 2013-02-01
              • 2020-04-05
              相关资源
              最近更新 更多