基于过程内程序依赖图的方面挖掘技术.pdf

基于过程内程序依赖图的方面挖掘技术.pdf

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于过程内程序依赖图的方面挖掘技术.pdf

基于过程内程序依赖图的方面挖掘技术 闵洪波1,2 钱巨1,2 徐宝文1,2 1 (东南大学计算机科学与工程学院, 南京 210096) 2 (江苏省软件质量研究所, 南京 210096) 摘要:根据横切关注点的本质及其数据流特性,提出了一种基于过程内程序依赖图的方面挖 掘方法。该方法首先考察了过程内与核心功能相关的数据,并结合过程的语义信息和面向对 象技术中实现横切关注点的惯用手法,在过程依赖图上抽象出一个表示核心功能的 Core 结 点,然后对依赖图进行拓扑分析,求解过程内所有功能独立的语句集,并将所有由 Core 结 点可达的语句集作为核心功能对应的语句集,其余的视为横切功能的语句集,从而有效地分 离了过程内潜在的横切关注点。 关键字:横切关注点 方面挖掘 程序依赖图 中图分类号: TP312 1. 引言 面向方面编程技术(AOP )[4]为软件开发人员提供了一种新型的编程范式,弥补了现 有的面向对象技术中难以模块化横切关注点的不足,因此得到了学术界和工业界的广泛关 注。AOP 通过引入方面(aspect )和切点(pointcut )的概念表达模块之间的横向关系,分离 横跨多个模块的关注点,从而更加清晰地划分模块的职责,提高了软件系统的可扩展性、可 维护性和灵活性。 为了充分利用面向方面编程技术的优势,可以通过面向方面的重构改善现有的软件系统。 面向方面的重构首先要进行方面的挖掘,即通过对已有系统进行静态或动态分析来识别系统 中潜在的横切关注点,然后在不改变程序行为的前提下,将这些横切关注点重构为方面。目 前已有许多学者从不同角度研究如何从既有代码中进行方面的挖掘,主要的静态分析技术有 基于克隆代码识别[7]和 Fan-in 分析[6]等,这些技术均根据方面代码的零散性和重复性特征 (scatter),通过挖掘分散在不同模块内的克隆代码来识别系统中潜在的方面代码,而事实上, scatter 特征虽然普遍,但却不是方面的本质特征。方面对应的是横切关注点,其本质是tangle , 即核心逻辑的代码与横切功能代码交缠在同一模块内,编写面向方面程序的目的也是要打破 这种交缠,从根本上划清模块的职责。因此,从 tangle 特征来挖掘方面更契合面向方面程序 设计的本质。 本文从方面代码的 tangle 特征和横切关注点的本质出发,提出了一种基于过程内依赖图 的方面挖掘方法。第2 章分析了横切关注点的数据流特征及其在程序依赖图上的具体体现, 第 3 章详细描述了核心关注点在依赖图上的表示和基于依赖图的横切关注点识别过程,第 4 章给出了实例研究及分析,第5 章就几种典型的方面挖掘技术作了比较,第6 章总结全文。 2. 横切关注点的本质及其数据流特征 2.1 横切关注点的本质 软件的关注点可以理解为需要解决的问题,通常分为两类:一类是核心关注点(core concerns),即软件要实现的主要功能;另一类则是横切关注点(crosscutting concerns),如日 志记录,性能监视,安全验证等功能,它们通常横跨多个业务逻辑模块,与核心关注点交织 在一起。在面向对象开发软件的需求分析和设计阶段,系统的各个关注点还是彼此分离的, 而到了具体实现的阶段,由于面向对象技术提供的继承和的多态机制难以模块化横切关注 点,因此导致了核心关注点的实现代码和横切关注点的实现代码混合在一起,如图1 所示。 这种非模块化的实现方式导致了两种不良的代码形态:(1)混乱代码(tangle ):一个模块混 合实现多个功能,其核心逻辑代码中交织着其他功能的实现代码;(2 )零散代码(scatter ): 当多个模块需要实现同一关注点功能时,导致软件系统中存在相当多的零散重复的代码片 段。这两种不良的代码形态给软件的维护和理解带来了很大的困难。 实际上,从系统角度看,核心关注点与横切关注点都是为解决某一特定问题而设计,不 同的是它们在整个系统中所扮演的角色,核心关注点需要解决的是主要问题,而横切关注点 涉及的是一些次要的问题,以辅助核心关注点在完成系统核心功能的同时能够兼顾次要需 -1-

文档评论(0)

docindoc + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档