首页> 中文学位 >代码级横切关注点挖掘方法研究
【6h】

代码级横切关注点挖掘方法研究

代理获取

目录

封面

声明

中文摘要

英文摘要

目录

第1章 绪论

1.1 课题背景

1.2 国内外研究现状及分析

1.3 研究方向

1.4 本文的主要研究内容

1.5 论文结构

第2章 横切关注点挖掘相关技术

2.1 面向方面编程(AOP)

2.2 面向方面挖掘

2.3 面向方面重构

第3章 结合扇入分析和改进系统依赖图的方面挖掘技术(FIMS)

3.1 扇入分析(Fan-In)

3.2 基于程序依赖图方面挖掘方法

3.3 结合扇入分析和改进系统依赖图方面挖掘算法(FIMS)

3.4 本章小结

第4章 FIMS的实现

4.1 FINT工具

4.2 Soot框架介绍

4.3 程序依赖性分析实现

4.4 方面挖掘方法的详细实现过程

4.5 本章小结

第5章 实例研究和分析

5.1 实验结果

5.2 挖掘方法综合性分析

5.3 与其他挖掘方法比较

5.4 本章小结

第6章 总结与展望

6.1 工作总结

6.2 不足和改进

6.3 未来工作展望

参考文献

攻读硕士期间发表的论文

致谢

展开▼

摘要

随着软件系统的广泛应用,现代软件工程采用了一种“分而治之”的策略,将系统开发看作是实现核心功能关注点和横切功能关注点分离的过程。研究发现,目前在使用面向对象思想进行软件开发的整个过程中,两种关注点在需求和总体设计阶段还能保持彼此分离的状态,而到了具体实现过程中,面向对象程序设计(Object Oriented Programming,OOP)方法就很难再保持核心关注点与横切关注点的彼此分离状态,致使了代码分散和代码缠结问题的出现,导致了之前的OOP技术不能有效地模块化横切关注,从而严重影响了系统软件中核心功能关注的模块化。这些问题的出现促使了一种能够很自然地描述横切关注点的编程模型——面向方面编程(Aspect Oriented Programming, AOP)模型的出现。面向方面的软件重构技术作为传统重构和面向方面编程两种技术的组合,向原先传统的重构技术提供了更多附加的手段,帮助重组系统软件中与横切关注点相对应的代码,进一步提高关注点模块化,其中方面挖掘不仅是方面重构的先决条件,还是面向方面重构过程中的重要步骤,其最终的挖掘效果将直接影响之后重构的整体过程。
  横切关注点在程序代码中主要表现形式有两种:代码缠结(tangling)和代码分散(scattering)。因此目前代码级横切关注点挖掘的主要原理都是通过探测程序代码中是否存在这两种表现形式的代码块来进行判断和识别工作。学者们依据这种判断来制定相对应的横切关注点挖掘算法,进而提出具有可行性的横切关注点挖掘方法,最后通过使用大量开源代码项目用例测试挖掘方法的准确性和实用性。但由于代码分散特征的横切关注点主要存在方法级类层次上,表现形式更加明显和容易识别,而代码缠结特征的横切关注点主要存在方法内部,表现形式不够明显,导致目前很多挖掘方法仅基于识别代码分散特征而进行挖掘工作,对潜在的具有代码缠结特征的横切关注点识别能力不强,挖掘效率不高。
  本文根据系统软件中横切代码的外在特征及核心功能语句与非核心功能语句之间潜在的依赖关系,提出了一种将扇入分析(Fan-In)和改进系统依赖图(Modified System Dependence Graph, M-SDG)相结合的方面挖掘方法FIMS,首先在类层次上以方法之间的调用频率作为横切关注点的外在特征,对现有系统进行扇入分析,得到符合条件的横切方法集,挖掘出存在类层次上的具有分散特征的横切关注点,然后再把这些方法所在类的每个执行过程当作独立个体,构建成方法内程序依赖图整合成的改进的系统依赖图(M-SDG),M-SDG是指通过调用关系关联起来每个执行过程中语句为结点的依赖图,再通过相应的挖掘规则,分离出依赖图中核心功能的结点集,最后挖掘出目标系统潜在的横切关注点集。
  FIMS方法没有局限于横切代码的外在结构形式和行为特征,而是有层次的由外向内,挖掘粒度从方法级到语句级逐步细化的实现代码级方面挖掘工作,兼顾了横切关注点的代码分散和代码缠结特征,提高了系统中横切关注点的识别能力。
  在最后通过JHotDraw和HSQLDB两个代码开源项目作为试验用例来对FIMS挖掘方法进行测试和分析,并且通过与其他几种经典挖掘方法进行比较,证明了FIMS方法的可行性和挖掘准确性。

著录项

相似文献

  • 中文文献
  • 外文文献
  • 专利
代理获取

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号