我必须提交一篇关于在软件工程过程中使用源代码度量的论文。我认为最好先介绍一些源代码指标的分类(例如使用平面 LOC 计数与对代码进行一些静态分析),但我找不到一本书或文章来介绍不同类型的指标和可能的一些历史背景信息(我的导师更喜欢书籍和文章而不是网站)。
有人知道这样的来源吗?
我必须提交一篇关于在软件工程过程中使用源代码度量的论文。我认为最好先介绍一些源代码指标的分类(例如使用平面 LOC 计数与对代码进行一些静态分析),但我找不到一本书或文章来介绍不同类型的指标和可能的一些历史背景信息(我的导师更喜欢书籍和文章而不是网站)。
有人知道这样的来源吗?
Patrick Smacchia 的NDepend站点有一组很好的定义:Metrics Definitions。他的 NDepend 工具(用于 .NET)提供了许多不同的量化代码库的方法。
指标有多有用,这有点争议。它们有利于获得代码库的全景视图,但它们对日常有用吗?有多少商店每周使用(或关心)指标?我怀疑大多数人更关心错误数量:修复的错误数量和报告的错误数量。
当然,像内聚和耦合这样的措施可以指示可能的重构点。
另一个重要指标:有多少测试,以及这些测试代表了多少代码覆盖率。在没有测试和良好的测试覆盖率的情况下进行重构是一项有风险的业务。
Pressman's Software Engineering: A Practitioner's Approach有很多关于软件度量的好信息(除其他外)。
可能关于度量的关键建议是要小心你测量的内容。如果您测量 LOC,那将是人们关注的重点。
“不是所有可以计算的东西都很重要,也不是所有重要的东西都可以计算。”
- 艾尔伯特爱因斯坦
“通过代码行来衡量软件生产力就像用飞机的重量来衡量飞机的进展。”
- 比尔盖茨
Halstead 的“软件科学要素”是该领域的开创性著作。我记得这个故事,他定义了大约 15 个不同的指标,所有这些都旨在衡量一段代码的不同质量。
不幸的是,van der Meulen 和 Revilla表明,一些关键指标与 SLOC(源代码行)密切相关。(这不是第一次证明这一点,但这是我能很快找到的第一篇论文。)由于 SLOC 比其他东西更容易测量,所以 SLOC 是应该测量和管理的。
正如我刚刚在关于可视化指标变化的问题中提到的那样,有Henderson-Sellers 的《面向对象的指标:复杂性测量》和我拥有多年的早期面向对象的软件指标。
有Metrics and Models in Software Quality Engineering, Second Edition是Safari 上唯一一本书,其中有一章讨论了上述指标和一些行业结果。
我还刚刚找到了 2006 年出版的《实践中的面向对象度量:使用软件度量来表征、评估和改进面向对象系统的设计》一书,那里没有评论(不是一个好兆头),但听起来很有趣。