论文部分内容阅读
自提出至今,面向侧面编程(Aspect-Oriented Programming,AOP)技术已被证明可以有效地改善软件的可维护性、可理解性以及可演化性。为了使用AOP技术重构遗产软件,首先需要自动或者半自动地寻找系统中值得并且可能被重构的代码,该过程称为侧面挖掘(Aspect Mining)。虽然到目前为止已经有了一些侧面挖掘技术研究成果,但是其中大部分方法返同的结果尚需进行人工分类,并且很难覆盖侧而相关的所有程序实体,这给程序员完整地重构侧面带来了困难。
针对这样的问题,本文提出了一种新的侧面挖掘技术:基于聚类的扇入值分析(Clustering-Based Fan-in Analysis,CBFA)。与其他侧面挖掘方法不同,CBFA采用了基于文本的聚类方法进行侧面挖掘,自动并且精确地推荐一组相关的函数作为侧而候选。这个自动聚类过程一方面可以显著地减少人工对结果进行分类的工作量;另一方面,对聚类整体而非单个函数进行挖掘可以减少返回不完整侧面的情况。同时,本文提出了一个新的侧面排序指标:聚类扇入值(cluster fan—in value)来按照结果的重要性进行排序。该指标有助于程序员更快地在挖掘结果中发现重要侧面,另外也避免了现有排序指标容易遗漏重要侧面的弊端。
论文在Eclipse平台上实现了CBFA工具原型,并且在Linux操作系统上在几种重要的侧面上与两种主流侧面挖掘技术进行了详细对比。评估结果显示,CBFA可以在保证挖掘准确率的同时,较其中一种方法提高大约50%的侧面覆盖率;而较另一种方法可以有效地在前30个而不是前121个结果中找到重要关注点,另外也可以发现后者无法找到的三个重要侧面。