论文部分内容阅读
传统的编程技术无法模块化实现系统关注点,导致系统关注点的实现代码横切于多个代码模块中,因此这些关注点被命名为横切关注点。面向方面编程技术可以将这些横切关注点单独实现为Aspect,从而解决了采用传统编程技术实现遗产系统难以维护、进化和修改等问题。如何将遗产系统转化为面向方面系统成为当前研究的热点话题。为了实现遗产系统向面向方面系统转化,需要使用方面挖掘技术识别遗产系统中的横切关注点,然后将识别的横切关注点使用重构技术封装成独立的Aspect。本文重点研究了使用向量空间模型标识遗产系统源代码中方法级横切关注点,基于聚类分析技术进行横切关注点识别的自动化方面挖掘方法。本文首先分析了现有的使用向量空间模型的方面挖掘方法的挖掘过程,发现现有的向量空间模型中属性都是基于源代码中类级别的,通过对源代码的进一步分析,依据被调用方法和方法名分解的token字,提出了FIV-class、FIV-method和FIV-method-tokens三个改进的向量空间模型,给出了每个模型的构造算法,描述了使用启发式k-means聚类算法进行方面挖掘的挖掘过程。针对JHotDraw源代码,基于相同的聚类算法,使用现有的向量空间模型和改进的向量空间模型进行方面挖掘,给出了实验过程和实验结果。实验结果表明,相比于现有的向量空间模型,使用本文提出的三个改进向量空间模型进行方面挖掘的挖掘结果在DISP评价指标上有明显的提高。为了进一步提高使用向量空间模型的方面挖掘方法的挖掘效率,本文对现有的两种基于启发式的凝聚聚类算法进行了比较,证明了HAC算法比HACO算法更适合使用向量空间模型的方面挖掘。本文给出了基于HAC算法,使用改进的三个向量空间模型进行方面挖掘的挖掘过程。针对JHotDraw源代码,基于启发式k-means聚类算法和HAC算法,使用现有的向量空间模型和改进的向量空间模型进行方面挖掘,给出了实验过程和实验结果。实验结果表明,相比于现有的使用向量空间的方面挖掘方法,本文提出的基于HAC算法,使用改进向量空间的方面挖掘方法的挖掘结果在DISP和DIV两个评价指标上均有提高,识别横切关注点的准确率和召回率也有明显的提高,同时也证明了基于凝聚的层次聚类比划分式聚类更适合于使用向量空间的方面挖掘。