我听人说过(尽管我记不起具体是谁),无论使用什么语言,每行代码的错误数量大致是恒定的。支持这一点的研究是什么?
编辑添加:我无权访问它,但显然本文的作者“ 询问了每个代码行 (LOC) 的错误数量是否与用不同编程语言编写的程序相同的问题。”
我听人说过(尽管我记不起具体是谁),无论使用什么语言,每行代码的错误数量大致是恒定的。支持这一点的研究是什么?
编辑添加:我无权访问它,但显然本文的作者“ 询问了每个代码行 (LOC) 的错误数量是否与用不同编程语言编写的程序相同的问题。”
在他的书Code Complete(引自第 2 版)中,在“开发人员测试”一章中,Steve McConnell 引用了一些跨多种语言的研究:
对于交付的软件,行业平均经验是每 1000 行代码大约有 1-25 个错误。该软件通常是使用大杂烩技术开发的(Boehm 1981、Gremillion 1984、Yourdon 1989a、Jones 1998、Jones 2000、Weber 2003)。有十分之一的错误的情况很少见;多出 10 倍的病例往往不会被报告。(它们可能从未完成!)
Microsoft 的应用程序部门在内部测试期间每 1000 行代码会遇到大约 10-20 个缺陷,而在发布的产品中每 1000 行代码会遇到 0.5 个缺陷(Moore 1992)。用于达到此级别的技术是其他类型的协作开发实践中描述的代码阅读技术和独立测试的组合。
Harlan Mills 开创了“无尘室开发”技术,该技术在内部测试期间能够实现低至每 1000 行代码 3 个缺陷的比率,并且在发布的产品中实现每 1000 行代码 0.1 个缺陷的比率(Cobb 和 Mills 1990)。
这些研究范围从 Java 等高级语言,到 C++ 和 C,一直到汇编。考虑到 Code Complete 对软件工程作为一门学科的巨大影响,我怀疑它负责普及这个想法。
一个可能的来源是 Les Hatton 1995 年的论文“计算机编程语言和安全相关系统”,他在该论文中得出结论,语言选择至少接近无关紧要,而其他因素(主要是所选语言的流利程度)是控制因素。
我能补充的就是总结各种其他论文,其中给出了单个项目(等)的缺陷率。我做了一些研究,但从未发现语言和缺陷率之间存在相关性,但这与说缺陷率在不同语言之间是恒定的并不完全一样(即,它们可能不同,但它们在每种语言中的差异如此之大我从未能够证明差异的语言)。