度量、测量、量度
术语“measure”(测量)、“measurement”(测度)和“metrics”(度量)经常被互换地使用,但注意到它们之间的细微差别是很重要的。因为“measure”(测量)和“Measurement”(测度)即可以作为名词也可以作为动词,所以它们的定义可能会混淆。在软件工程领域中,“measure”(测量)对一个产品过程的某个属性的范围、数量、维度、容量或大小提供了一个定量的指示。“Measurement”(测度)则是确定一个测量的行为。IEEE的软件工程术语标准辞典(IEEE Standard Glossary of Software Engineering Terms)中定义“metric”(度量)为“对一个系统、构件或过程具有的某个给定属性的度的一个定量测量”。
当获取到单个的数据点(如在一个模块的复审中发现的错误数)时,就建立了一个测量。测度的发生是收集一个或多个数据点的结果(如调研若干个模块的复审,以收集每一次复审所发现的错误数的测量)。软件度量在某种程度上与单个的测量相关(如每一次复审所发现的错误的平均数,或复审中每人/小时所发现的错误的平均数)。
软件工程师收集测量结果并产生度量,这样就可以获得指标“indicator”。指标是一个度量或度量的组合,它对软件过程、软件项目或产品本身提供了更深入的了解。指标所提供的更深入的理解,使得项目管理者或软件工程师能够调整开发过程、项目或产品,这样使事情进行得更顺利,能被更好地完成。
例如,四个软件小组共同完成一个大型软件项目。每一个小组必须进行技术复审,但允许其自行选择所采用的复审类型。检查度量结果——每人/小时所发现的错误数,项目管理者注意到采用更加正式的复审方法的两个小组,每人/小时所发现的错误数比起另外两个小组高40%。假设所有其他参数都相同,这就给项目管理者提供了一个指标:正式的复审方法比起其他复审方法在时间投资上能得到更大的回报。他可能会决定建议所有小组都采用更加正式的方法。度量给管理者提供了更深入的理解,而更深入的理解会产生更严谨、更正确的决策。
软件度量(software measurement)和软件量度(software metrics)一样非常有名(译者注:为了区分,译者将software measurement和software metrics分别译成软件度量和软件量度,其实他们都可以表示软件度量)。但目前学界还没有明确这两个术语的区别。参照测量理论[159]的相关术语,我们采用软件度量(software measurement)。从文献上看,这两个术语是同义词。量度(metric)在这里不作度量空间理解,它理解为:度量是客观对象到数字对象的同态映射。同态映射包括所有关系和结构映射。用另一句话说,软件品质和软件度量成直对关系。这是度量和软件度量的根本理念。