论文部分内容阅读
类是构成面向对象(OO)系统的基本单位,有可能随着系统的演化而发生变更。预测系统中有变更倾向的类具有重要意义,不仅可使得维护人员能够提早采取预防性措施降低软件维护的成本和提高软件的质量,也可使得项目经理能够更有效地分配资源。OO度量是预测系统中有变更倾向的类的重要途径,论文利用元分析对它们与易变性间的关系进行了深入分析。
论文在102个开源Java系统的基础上进行了如下研究:
(1)利用元分析方法分析了OO度量与易变性的相关性。元分析结果表明,规模度量与易变性显著正相关,其中大部分度量具有中等的相关性;内聚性度量与易变性具有小到中等的相关性,但部分度量的相关性方向与直觉相反;耦合性度量与易变性具有小到中等的正相关;大多数继承相关度量与易变性具有非常小的相关性。因此,规模度量具有最强的预测能力,耦合性和内聚性度量次之,继承相关度量最弱。
(2)利用元分析方法分析了规模的潜在混和效应。类的规模与许多内聚性、耦合性和继承相关度量存在高度的相关性,因此有可能影响它们与易变性间的相关性。元分析结果表明,规模对大多数的内聚性、耦合性和继承相关度量具有混和效应,在大多数情况下会导致高估它们与易变性之间的相关关系,在许多情况下甚至导致虚假的相关关系。为此,在易变性预测上下文中需要将类的规模作为一个混和变量来考虑。
(3)利用元分析方法分析了OO度量的易变性分类能力。OO度量常被用来将系统中的类进行分类(易变的和不易变的),弄清它们的分类能力具有重要的实际价值。元分析结果表明,规模度量具有中等或者近乎中等的分类能力;耦合性和内聚性度量的分类能力比规模度量低;继承相关度量具有很弱的分类能力。在移除规模的混和效应后,所有OO度量的分类能力都明显降低。
(4)利用元分析方法分析了OO度量的易变性排序能力。OO度量常被用来将系统中的模块按照度量值从大到小进行排序,越排在前面的模块被认为越有可能发生变更。元分析结果表明:与直觉相反,排在最前面的类并不是最有可能发生变更的类。
(5)利用元分析方法分析了OO度量的易变性阈值。OO度量的阈值可帮助人们识别面向对象系统中有变更倾向的类,对实际的软件质量保证活动具有重要的意义。在logistic回归阈值模型的基础上,论文利用元分析方法得到了OO度量的易变性阈值。与其他方法得到的阈值相比,本文所得的阈值能更准确地识别有变更倾向的类。