论文部分内容阅读
在现代软件开发中,耦合性往往是衡量一个系统组件间相互依赖关系的指标。高耦合性系统有着很强的相互交互关系,模块间相互依赖。通常对程序员来说,编写耦合性较低的模块被认为是一项渴望的目标,因为低耦合的模块容易维护,容易重用。耦合性度量参数经常被用来评价软件外部质量属性,如可维护性、可重用性、以及可靠性。目前,已经存在很多的框架来度量面向对象程序的耦合性,也出现了不少面向方面程序中静态耦合性度量的研究。然而,很少有研究工作系统地分析面向方面程序中的静态和动态耦合性度量。本文以面向方面编程语言为目标,提出了一套适用于面向方面程序的耦合性度量框架,该框架的核心在于归纳定义一系列模块间的调用关系,并利用这些调用关系来计算组件间及系统的耦合性。基于所提出的耦合性度量框架,本文讨论了面向方面程序中的两个典型应用:1.系统可维护性评估。本文提出了一套面向方面程序的细粒度耦合性度量参数来度量系统演化过程中的变化。首先,通过影响分析识别出系统演化过程中模块的变化,然后利用耦合性度量计算每个模块的耦合性值。最后,参照统计关联性规则,提出耦合性度量与系统可维护性之间的依赖指标,来衡量软件变化对系统的影响。2.方面化重构评估。方面化重构已被广泛运用在实际的软件维护中。然而,几乎没有研究工作关注在方面化重构前后系统耦合性的变化。因此,对于面向方面编程的程序员来说,在不了解方面化重构对系统耦合性影响的情况下,很难决定是否应该把重构操作应用到程序演化中。本文提出了一套耦合性框架,适用于面向方面程序的静态和动态度量。利用多维线性回归模型,来拟合方面化重构前后耦合性的扩散度,从而评价方面化重构对系统耦合性的影响。基于所提出的耦合性框架,本文实现了自动化工具AJMetrics和AJDyMetrics来分别计算面向方面程序中静态和动态耦合性度量。本文使用了23个设计模式、5个AspectJ基准测试程序和2个大规模程序对耦合性度量框架的应用进行实验化评估。评估结果不但验证了度量工具的正确性,衡量了软件变化对系统演化中系统可维护性的影响,而且评估了方面化重构对系统耦合性的影响。