论文部分内容阅读
如何将已有的面向对象系统转化为面向Aspeet系统,进而提高原有系统的可复用性、可维护性以及可扩展性已成为AOP(Aspect-OrientedProgramming,面向Aspect编程)领域的热点问题。这个转化包含Aspect挖掘和Aspect重构两个关键步骤。切点(Pointcut)定义是Aspect重构的关键,指明了Aspect应织入基础程序(Base Program)的哪些模块。因此,国内外对该课题的研究也主要针对Aspect挖掘和切点定义展开。
目前,现有的Aspect挖掘方法存在准确率、召回率和执行效率较低的问题,主要原因是挖掘时无法有效过滤软件系统中的“噪音数据”。同时,切点定义面临的主要问题是“切点软化损坏”(Fragile Pointcut),现已形成了创建新的表达力更强的切点语言和借助现有工具或模型视图进行定义两条研究路线。新的切点语言实现复杂,短期难以实现,而后一类方法存在通用性和实用性较差的问题。
针对以上问题,设计一种结合扇入分析和聚类分析的Aspect挖掘方法。该方法首先对目标软件系统进行扇入分析,剔除系统中的扇入值较小的函数,即“噪音数据”,同时,获取扇入值较大,极有可能成为候选Aspect种子的函数及其调用函数,再把调用函数看作这些函数的特征属性,构造对象属性矩阵进行聚类分析,获得候选Aspect种子集。给出一种基于概念模型的切点定义方法。概念模型通过扩展UML元模型实现,是对AspectJ切点表达式的抽象概括,依据软件系统中的横切关系构建,切点定义依据此模型,实现了与基础程序的解耦,提高了切点的鲁棒性和可复用性。同时,扩展了Rational Rose,使其支持本切点定义方法的建模。
实验表明结合扇入分析和聚类分析的Aspect挖掘方法在保证较高召回率的情况下,有效过滤了“噪音数据”,提高了Aspect挖掘的准确率。基于概念模型的切点定义方法在模型实现和建模工具支持方面,有更好的通用性和实用性。