代码之家  ›  专栏  ›  技术社区  ›  Brent Arias

通过案例研究支持代码度量

  •  1
  • Brent Arias  · 技术社区  · 14 年前

    我主要对代码度量的案例研究感兴趣,它将代码可读性与缺陷减少联系起来,从而证明认真对待循环复杂性或类似的度量是合理的。维基百科有这样一个例子:

    许多研究已经调查 圈复杂度与 A中包含的缺陷数 模块。大多数这样的研究发现 两者之间有很强的正相关 循环复杂性和缺陷: 具有最高 复杂性往往也包含 大多数缺陷。例如,2008年 计量监测软件研究 供应商能源分析 开源Java应用程序和 根据 在 他们。他们发现了很强的相关性 在圈复杂度和 他们的错误,与阶级 11的组合复杂度 容易出错的概率 只有0.28升到0.98 复杂度为74。

    这很好,但我希望知道是否有更多的研究(或者其他指标的类似研究,如SLOC)。

    我还发现了一个 article at IBM 这有助于监控CC值,但缺乏显示ROI数字的案例研究支持。然后有 Coding Horror article on "arrow code" 哪些网站是案例研究的摘要,但不提供案例研究本身,也不提供证明结论的实际数字:

    研究表明 程序的循环复杂性和 它的错误频率。低气旋 复杂性导致程序的 可理解性并表明 可在较低风险下进行修改 比一个更复杂的程序。一 模块的循环复杂性也是 它的可测试性的有力指标。

    当然,圈复杂度(CC)将有助于定位箭头代码,但我仍然需要展示ROI值的案例研究。例如,“OrganizationX在方法/功能上加入了最多10个CC,并在随后的开发迭代中减少了20%的缺陷。”

    没有这种数据,很难让管理层去关心。有人能给我指出一些刻苦的学习吗?即使只有一个也会有帮助…

    3 回复  |  直到 14 年前
        1
  •  0
  •   Jerry Coffin    14 年前

    在这种情况下,您可以从 original article 而不是维基百科。 technical paper 关于数据收集等如何在结论中显示95%的置信水平。

    你说得对,这并不能直接提供投资回报率信息。至少对于这项研究来说,这是相当困难的——例如,他们使用开放源代码项目作为培训数据,而开放源代码项目的实际成本通常难以估计,更不用说度量了。同时,他们确实使用了我认为至少是真实投资回报率数据的合理代理:他们在源代码管理系统中搜索他们的每个“培训”项目,寻找似乎与修复错误、缺陷等相关的签入。然后他们使用朴素的Bayes算法查找他们使用的度量之间的相关性。以及代码中确定的问题。尽管毫无疑问,至少会有一些改进,但在我看来,这些结果至少意味着一些东西。

    同样值得注意的是,做这项研究的同一个人 index 在大量的开源项目上。如果您想要更多的实体数据,您可以对照一些项目的源代码管理日志来检查它们的索引,您可能可以使用它们的数据来获得更多的直接ROI类型的结果。然而,有一点需要注意:它们的索引基于相当多的源代码度量, 仅仅是圈复杂度,所以我不确定它到底能告诉我们多少关于CC的专门信息,而不是他们看到的其他指标。

        2
  •  1
  •   S.Lott    14 年前

    “…我仍然需要显示投资回报率值的案例研究。”

    为什么投资回报率如此之高?

    这就是原因。

    单个程序员的生产力至少有一个甚至两个数量级的变化。

    http://forums.construx.com/blogs/stevemcc/archive/2008/03/27/productivity-variations-among-software-developers-and-teams-the-origin-of-quot-10x-quot.aspx

    个体变异性胜过你可能寻找的任何其他影响。你不能做“头对头”、“苹果对苹果”的比较。当您使用不同的技术(即,不同的复杂性阈值)比较两个相似的团队时,您会发现,单个的性能差异仅仅主导了数据,几乎所有的事情都是噪音。

    “没有这类数据,很难让管理层关心。”

    如果管理层不关心质量,你就有很大的问题。投资回报率不会影响管理层改变环境。

    你必须在你自己的组织中用你自己的代码运行你自己的实验。

    收集循环复杂性、缺陷率、问题单、崩溃,以及任何你能收集的东西。尝试将复杂性与其他坏指标关联起来。一个有争议的经理总是可以通过指出团队成员之间的个体差异来赢得胜利。

    在真实的组织中使用真实的数据。这是你能做的最好的。它不是“一些研究”或“一些白皮书”,而是你的实际组织。

    推荐文章