跳转到内容

软件工程/质量/指标简介

来自维基教科书,开放世界中的开放书籍

软件指标是对软件或其规范的某些属性的度量。由于定量测量在所有科学中都是必不可少的,因此计算机科学从业人员和理论家一直在不断努力将类似的方法引入软件开发。目标是获得客观、可重复和可量化的测量结果,这些测量结果在进度和预算计划、成本估算、质量保证测试、软件调试、软件性能优化以及最佳人员任务分配方面可能具有许多有价值的应用。

常见的软件度量

[编辑 | 编辑源代码]

常见的软件度量包括

  • 平衡计分卡
  • 每行代码的错误数
  • COCOMO
  • 代码覆盖率
  • 内聚性
  • 注释密度[1]
  • 可识别的软件组件
  • 耦合
  • 圈复杂度
  • 功能点分析
  • 霍尔斯特德复杂度
  • 指令路径长度
  • 类和接口的数量
  • 代码行数
  • 客户需求行数
  • 程序执行时间
  • 程序加载时间
  • 二进制文件 | 程序大小(二进制)
  • 罗伯特·C·马丁的软件包指标
  • 加权微功能点

局限性

[编辑 | 编辑源代码]

由于软件开发是一个复杂的过程,在方法和目标方面差异很大,因此很难定义或衡量软件质量和数量,并确定有效的并发测量指标,尤其是在进行此类预测之前进行详细设计。另一个困难和争论的来源是确定哪些指标很重要以及它们意味着什么。[2][3] 因此,软件测量的实际效用仅限于狭窄的领域,其中它们包括

  • 时间表
  • 大小/复杂度
  • 成本
  • 质量

常见的测量目标可能是针对上述一个或多个方面,或它们之间的平衡作为团队动机或项目绩效的指标。

接受度和公众舆论

[编辑 | 编辑源代码]

一些软件开发从业人员指出,简单的测量结果可能弊大于利。[4] 其他人指出,指标已成为软件开发过程不可或缺的一部分。[2] 测量对程序员心理的影响引起了人们对由于压力、绩效焦虑以及试图欺骗指标而导致的负面绩效影响的担忧,而另一些人发现它对开发人员对自身工作的价值观产生了积极的影响,并防止他们被低估。[5] 有人认为,许多测量方法的定义并不精确,因此通常不清楚计算它们的工具是如何得出特定结果的,[6] 而另一些人则认为,不完美的量化总比没有好(“你无法控制你无法衡量的东西。”)[7]。证据表明,软件指标被政府机构、美国军方、NASA[8]、IT 咨询师、学术机构[9]以及商业和学术开发估计软件广泛使用。

参考文献

[编辑 | 编辑源代码]
  1. "描述信息 (DI) 度量阈值". 陆地软件工程中心. 检索于 2010 年 10 月 19 日.
  2. a b Binstock, Andrew. "集成观察:有效使用指标". SD Times. BZ Media. 检索于 2010 年 10 月 19 日.
  3. Kolawa, Adam. "何时、为何以及如何:代码分析". 代码项目. 检索于 2010 年 10 月 19 日.
  4. Kaner, Dr. Cem, 软件工程师指标:它们测量什么以及我们如何知道?
  5. ProjectCodeMeter (2010) "ProjectCodeMeter 用户手册" 第 65 页 [1]
  6. Lincke, Rüdiger; Lundberg, Jonas; Löwe, Welf (2008), "Comparing software metrics tools" (PDF), International Symposium on Software Testing and Analysis 2008, pp. 131–142
  7. DeMarco, Tom. Controlling Software Projects: Management, Measurement and Estimation. ISBN 0-13-171711-1.
  8. NASA Metrics Planning and Reporting Working Group (MPARWG) [2]
  9. USC Center for Systems and Software Engineering [3]
[编辑 | 编辑源代码]
华夏公益教科书