(计算机软件与理论专业论文)aop中的aspect挖掘与切点定义方法研究.pdf_第1页
(计算机软件与理论专业论文)aop中的aspect挖掘与切点定义方法研究.pdf_第2页
(计算机软件与理论专业论文)aop中的aspect挖掘与切点定义方法研究.pdf_第3页
(计算机软件与理论专业论文)aop中的aspect挖掘与切点定义方法研究.pdf_第4页
(计算机软件与理论专业论文)aop中的aspect挖掘与切点定义方法研究.pdf_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

独创性声明 幽 y 18 2 4 翠 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得的研 究成果。据我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他 人已经发表或撰写过的研究成果,也不包含为获得重麽邮电太堂或其他教育 机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡 献均已在论文中作了明确的说明并表示谢意。 学位论文作者签名:毳乏衙诌 签字日期: 7 汐口7 年y 月,z 日 学位论文版权使用授权书 本学位论文作者完全了解 重麽邮电太堂有关保留、使用学位论文的规 定,有权保留并向国家有关部门或机构送交论文的复印件和磁盘,允许论文被查 阅和借阅。本人授权重庞邮电太堂可以将学位论文的全部或部分内容编入 有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存、汇编学位论 文。 ( 保密的学位论文在解密后适用本授权书) 学位论文作者签名: 孤鸸 导师签名: 签字日期:7 口d j 年岁月7 z 日 签字日期: 乞月日 重庆邮电大学硕士论文 摘要 摘要 如何将已有的面向对象系统转化为面向a s p e c t 系统,进而提高原有系 统的可复用性、可维护性以及可扩展性已成为a o p ( a s p e c t - o r i e n t e d p r o g r a m m i n g ,面向a s p e c t 编程) 领域的热点问题。这个转化包含a s p e c t 挖掘和a s p e c t 重构两个关键步骤。切点( p o i n t c u t ) 定义是a s p e c t 重构的关 键,指明了a s p e c t 应织入基础程序( b a s ep r o g r a m ) 的哪些模块。因此,国 内外对该课题的研究也主要针对a s p e c t 挖掘和切点定义展开。 目前,现有的a s p e c t 挖掘方法存在准确率、召回率和执行效率较低的 问题,主要原因是挖掘时无法有效过滤软件系统中的“噪音数据 。同时, 切点定义面临的主要问题是“切点软化损坏 ( f 豫g i l ep o i n t c u t ) ,现已形成 了创建新的表达力更强的切点语言和借助现有工具或模型视图进行定义 两条研究路线。新的切点语言实现复杂,短期难以实现,而后一类方法存 在通用性和实用性较差的问题。 针对以上问题,设计一种结合扇入分析和聚类分析的a s p e c t 挖掘方 法。该方法首先对目标软件系统进行扇入分析,剔除系统中的扇入值较小 的函数,即“噪音数据”,同时,获取扇入值较大,极有可能成为候选a s p e c t 种子的函数及其调用函数,再把调用函数看作这些函数的特征属性,构造 对象属性矩阵进行聚类分析,获得候选a s p e c t 种子集。给出一种基于概念 模型的切点定义方法。概念模型通过扩展u m l 元模型实现,是对a s p e c t j 切点表达式的抽象概括,依据软件系统中的横切关系构建,切点定义依据 此模型,实现了与基础程序的解耦,提高了切点的鲁棒性和可复用性。同 时,扩展了r a t i o n a lr o s e ,使其支持本切点定义方法的建模。 实验表明结合扇入分析和聚类分析的a s p e c t 挖掘方法在保证较高召 回率的情况下,有效过滤了“噪音数据”,提高了a s p e c t 挖掘的准确率。 基于概念模型的切点定义方法在模型实现和建模工具支持方面,有更好的 通用性和实用性。 关键词:面向a s p e c t 编程,横切关注点,a s p e c t 挖掘,切点定义 a b s t r a c t t r a n s f o r m i n gt h eo b j e c t o r i e n t e ds y s t e mi n t ot h ea s p e c t o n e n t e ds y s e m t oi m p r o v et h es y s t e m ,sr e u s a b i l i t y ,m a i n t a i n a b i l i t y a n ds c a l a b i l i t yi s ah o t t o p i ci na o p ( a s p e c t o r i e n t e dp r o g r a m i n g ) a r e a t h i s i n c l u d e st w os t e p s , a s p e c tm i n i n ga n da s p e c tr e f a c t o r i n g p o i n t c u t d e n i l i t i o ni st h ek e yo fa s p e c t r e f a c t o r i n g i tp o i n t so u tt h e a s p e c th o wt ow e a v ei n t o t h eb a s ep r o g r a m t h e r e f o r e ,t h er e s e a r c ho ft h i ss u b j e c ti sm a i n l yo n t h ea s p e c tm l n l n g 觚dt h e p o i n t c u td e 伍n i t i o n p r e s e n t l ym o s to ft h ea s p e c tm i n i n ga p p r o a c h e sh a v e al o wp r e c l s l o n , r e c a l la n de m c i e n c y ,t h em a i nr e a s o ni s t h a tc a nn o te f f e c t i v e l yn l t e rt h e n o i s vd a t a ,i nt h es o f t w a r es y s t e m a tt h es a m et i m e ,t h em a j o rp r o b l e m o l p o i n t c u td e 行n i t i o np r e s e n ti s f r a g i l e p o i n t c u t a n dn o wh a sa l s of o r m e d t w or o u t e s , o n ei st oc r e a t em o r ee x p r e s s i v ep o i n t c u t l a n g u a g e b u tt 0 0 c o m p l e xt os u c c e s si ns h o r tt i m e ,t h eo t h e r i st ou s et h es o m et o o l so ra b s t r a c t v i e w sa n dm o d e l st oa s s i t t h ep o i n c u td e f i n i o n , b u ti t sg e n e r a l l t y a n d p r a c t i c a l i t yi sn o tg o o d t 0s o l v et h ea b o v ep r o b l e m s ,d e s i g n sa na p p r o a c h0 f a s p e c tm l n l n gb a s e d o nf a n - i na n a l y s i sa n dc l u s t e r i n ga n a l y s i s t h i sa p p r o a c hn r s t l yp r o c e s s e s t h e a i m e ds o f t w a r es y s t e mb yf a n i na n a l y s i s ,e l i m i n a t i n gt h e f u n c t i o n sw l t ha l o wf a n i nv a l u e ,t h e n o i s yd a t a ”,a n d g e t t i n gt h ef u n c t i o n s w l t hah l g h f a n i nv a l u e sw h i c hc o u l da l m o s tb e c o m et h ec a n d i d a t ea s p e c t s a n d1 t sc a l l e r s , t h e ns e tt h ec a l l e r st o b et h ec h a r a c t e ra t t r i b u t e so ft h ef u n c t i o n s ,s o a st o c f e a t et h eo b je c ta t t r i b u t e s 眦t r i xt od ot h ec l u s t e r i n ga n a l y s l s g e t t l n g c a n d i d a t ea s p e c t s a n dt h e ng i v e sa na p p r o a c ho fp o i n t c u td e n i l i t i o n b a s e d o n c o n c e p tm o d e l c o n c e p tm o d e li s r e a l i z e dt h r o u g he x t e n d i n g h em e a - m o d e l o fu m l , w h i c hi sa na b s t r a c t i o n o fa s p e c t j sp o i n c u t , a n dc o n s t r u c t e d a c c o r d i n gt h ec r o s s c u t t i n gr e l a t i o n si nt h es y s t e m p o i n t c u t d e f i i l i t i o nl nt e r m s o ft h em o d e ln o td i r e c t l y i nt e 珊so ft h eb a s ep r o g r a m , l m p r 0 v e d t h e r o b u s t n e s sa n dr e u s a b i l i t yo f t h ep o i n t c u t w h i l ea l s o e x t e n d st h er a t l o n a l r o s et os u p p o r tm o d e l i n go u rp o i n t c u td e 行n i t i o na p p r o a c h e x p e r i m e n tr e s u l t s s h o wt h a ta s p e c tm i n i n ga p p r o a c hb a s e d o nf 。a n 。1 n n a n a l y s i sa n dc l u s t e r i n ga n a l y s i sh a se f f e c t i v e l yf i l t e r e dt h e t t n o i s yd a t a ”,a n d r a i s e dt h ep r e c i s i o no fa s p e c tm i n i n g ,w h i l ea l s ok e e p sah i g hr e c a l l a n d t h e p 。i n t c u td e n n i t i o na p p r 。a c hh a sab e t t e rg e n e r a l i t ya n dp r a c t i c a l i t yi nt e r m s o fm o d e lr e a l i z i n ga n dt o o ls u p p o r t k e yw 。r d s :a s p e c t 。r i e n t e d p r 。g r a m m i n g ,c r o s s c u t t i n gc 。n c e r n s ,a s p e c t m i n i n g ,p o i n t c u td e f i n i t i o n n i 重庆邮电大学硕士论文 目录 目录 摘要“i a b s t r a c t i i 第一章绪论“l 1 1 选题背景i 1 2 国内外研究现状3 1 2 1a s p e c t 挖掘研究现状3 1 2 2 切点定义研究现状4 1 3 论文主要工作6 1 4 论文组织结构“7 第二章a s p e c t 挖掘和切点定义研究概述8 2 1a o p 概j 苤8 2 1 1a o p 的实现机制”8 2 1 2a o p 的基本构成9 2 1 3 横切关注点分析“l o 2 2a s p e c t 挖掘相关实现方法1 2 2 3 2 4 2 5 第三章 3 1 3 2 3 3 2 2 1 扇入分析方法1 3 2 2 2 形式概念分析方法1 4 2 2 3 聚类分析方法1 5 2 2 4 模式匹配的方法”1 6 切点定义相关实现方法1 7 现有实现方法存在的问题1 9 小结2 0 结合扇入分析和聚类分析的a s p e c t 挖掘方法“2 l 引言2 l 方法理论模型与具体实现”2 2 3 2 1 理论模型2 2 3 2 2 实现步骤2 3 算法描述与阈值估算j 2 4 3 3 1 改进后的k m e a n s 算法2 4 i v 重庆邮电大学硕士论文目录 3 3 2 阈值d 捃r 朋f 甩估算方法2 7 3 4 小结2 8 第四章基于概念模型的切点定义方法2 9 4 1 引言2 9 4 2 核心思想与模型构造- 2 9 4 2 1 方法核心思想2 9 4 2 2 元模型的构造3 l 4 2 3 代码实体抽象分类与概念约束3 2 4 3 切点模型的实现及说明3 3 4 3 1 元模型的实现3 3 4 3 2 扩展r a t i o n a lr o s e 3 4 4 3 3 举例说明“3 5 4 4d 、结3 6 第五章实验仿真与案例分析3 7 5 1a s p e c t 挖掘实验测试一3 7 5 1 1 实验环境“3 7 5 1 2 实验测试说明3 8 5 1 3 实验测试结果分析3 9 5 2 测试结果对比4 4 5 2 1a s p e c t 挖掘结果对比4 4 5 2 2 两种距离度量的测试对比“4 6 5 3 切点定义案例分析4 6 5 4 小结5 0 第六章总结及未来的工作“5 l 6 1 总结5l 6 2 未来的工作5 2 致谢5 3 攻读硕士期间从事的科研项目及发表的论文5 4 参考文献“5 5 v 重庆邮电大学硕士论文第一章绪论 1 1 选题背景 第一章绪论 随着现代软件产业的发展,尤其是大型分布式复杂软件系统出现以 来,众多专家学者发现软件系统中的日志记录、权限管理等横切关注点 ( c r o s s c u t t i n gc o n c e r n ) 在代码实现时与系统核心关注点( c o r ec o n c e r n ) 交织 在一起,造成了“代码分散 ( c o d es c a t t e r i n g ) 和“代码纠缠( c o d et a n g l i n g ) , 极大影响了模块的内聚性和模块之间的独立性,加大了许多程序设计出错 的概率,使得一些模块更加难以复用,软件代码难以开发、理解和演化, 给软件的后期维护带来了极大困难。 为解决以上问题,施乐公司帕洛阿尔托研究中心( x e r o xp a l o a l t o r e s e a r c hc e n t e r ) 的首席科学家g r e g o rk i c z a l e s 在1 9 9 7 年的欧洲的面向对 象大会上提出a o p ( a s p e c t - o r i e n t e dp r o g r a m m i n g ,面向a s p e c t 编程) 的概 念【。 a o p 是o o p ( o b j e c t - o r i e n t e dp r o g r a m m i n g ,面向对象编程) 的继承和 补充,它对o o p 进行了扩展,提供了横切关注点分离、捕获和实现的语 言机制,将软件系统中影响多个模块的横切关注点封装到一个新的语言结 构方面( a s p e c t ) 中,并通过切点( p o i n t c u t ) 在编译或运行时作用于多个过程 或模块,而不破坏原有程序的组织结构【2 】。通过这种方式,a o p 降低了类 与类之间的耦合度,增强了类的内聚度,使软件更易于维护、复用和扩展。 由于其对软件横切关注点的有效解决,a o p 自诞生就迅速引起了广泛 关注,其中以r u p ( r a t i o n a lu n i 行e dp r o c e e s s ,统一软件开发过程) 之父i v a r j a c o b o s n 为代表的科学家对a o p 甚为推崇,纷纷预测a o p 即将成为软件 开发学的下一个里程碑。国内外关于a o p 的研究工作也异常活跃,对于 a o p 的研究也由代码实现阶段迅速扩展渗透到软件开发的各个阶段,面向 a s p e c t 的需求、架构、建模以及测试等概念相继被提出,逐渐形成了一套 系统的面向a s p e c t 软件开发理念,这直接促使了第一届面向a s p e c t 软件 开发( a s p e c t o r i e n t e ds o f t w a r ed e v e l o p i n g ,a o s d ) 大会于2 0 01 年召开, a o s d 也随之被m i t 技术评论杂志评为2 l 世纪十种对人类生活和工 作方式产生最具影响力的技术之一p j 。 i b m 公司在进行了长达l0 余年研究后,于2 0 0 4 年宣布力推a o p 技 重庆邮电大 术,并计划在未来几年内将其引入到商业化生产中。同时,杨芙清也指出 整个a o p 的研究工作己从纯学术的理论研究转向学术研究和应用研究并 行发展的态势【4 j 。 目前,各种a o p 程序设计语言,如a s p e c t j 【5 1 ,a s p e c t c 【6 1 ,a s p e c t c + + 【7 】【8 】 以及i b mh y p e r j 【9 】和a s p e c t c 撑【1 0 】等相继诞生并在工业中得到初步应用, 依据在实际应用中反馈的问题,国内外专家学者已围绕如下几个热点问题 展开研究,并取得初步成果: 如何构建完善的集成a s p e c t 开发工具1 1 1 1 ; 如何在现有的操作系统【4 1 、中间件【1 2 14 1 、虚拟机【15 1 、网络客户端【1 6 l 等以及设计模式【1 7 - 1 9 】中引入a o p ; 如何将已有的面向对象系统转化为面向a s p e c t 系统,从而提高原有 系统的可复用性、可维护性以及可扩展性。 在以上几个问题中,尤其以最后一个问题影响最为广泛,对于改善当 , 前软件系统的可维护性、可复用性、可扩展性以及a o p 的推广有着十分 重要的意义。目前包括c a m b r i d g eu n i v e r s i t y 、d e l f tu n i v e r s i t y o f t e c h n o l o g y 、北京大学、吉林大学、东南大学等在内的国内外多所著名大 学及研究机构已对该课题展开了深入研究。 将面向对象系统转换为面向a s p e c t 系统需要如下两个关键步骤: a s p e c t 挖掘和a s p e c t 重构,其详细流程如图1 1 所示。 “) 桷译谓试 = = 实现模块 基础程序 彳 i f 切点定义 凸凸凸 u 喈。嘭 图1 1 面向对象系统转化为面向a s p e c t 系统流程图 a s p e c t 挖掘的主要工作是从面向对象源代码中识别出候选的横切关注 点,而a s p e c t 重构的主要任务是将上一步挖掘出的横切关注点代码构造成 a s p e c t 形式,其包括切点( p o i n t c u t ) 定义和通知( a d v i c e ) 实现两部分。由图 可看出,切点定义是a s p e c t 重构的关键,它控制了横切的粒度,指明了 2 重庆邮电大学硕士论文第一章绪论 a s p e c t 应织入基础程序的哪些模块。 这里需指出的是,a s p e c t 挖掘也可在需求分析阶段进行,本文仅讨论 如何从现有的面向对象系统代码中挖掘a s p e c t 。同时,由软件代码中挖掘 出的横切关注点并不一定全是真正的横切关注点,有些横切关注点也不一 定具有相当的重构价值,所以在切点定义前需对横切关注点进行分析,确 定正确的横切关注点进行a s p e c t 重构。 综上所述,本文主要针对如何将面向对象系统转化为面向a s p e c t 系统 问题的两个连续关键点a s p e c t 挖掘和切点定义进行深入研究。 1 2 国内外研究现状 目前,国内外对a s p e c t 挖掘和切点定义的研究都处于起步阶段,理论 上实现方法较多,但成熟的、完善的较少。 1 2 1 a s p e c t 挖掘研究现状 当前国内外已有多所著名大学和研究机构对a s p e c t 挖掘展开了深入 研究,并已形成了一些初步的原型工具【2 0 - 2 3 1 和挖掘方法【2 4 4 0 1 。这些原型工 具多为代码浏览器的形式,主要用于帮助用户手动的挖掘横切关注点,并 要求用户对原软件系统有一定了解,如f i n t 【2 0 1 、a s p e c tb r o w s e r 【2 1 1 、 a m t ( a s p e c tm i n i n gt 0 0 1 ) “j 、p “s m l 列1 等。 现有的a s p e c t 挖掘方法能自动的从系统代码中挖掘出候选横切关注 点种子,但仍需要用户手工的分析挖掘结果,并具备一定的预备知识。这 些方法依据其所采用的核心思想或实现技术可分为扇入分析 ( f a n i n ) 【2 4 】【2 5 1 、聚类分析( c l u s t e r i n ga n a i y s i s ) 【2 6 2 引、模式匹配( p a t t e r n m a t c h i n g ) 【2 9 35 1 、形式概念分析( f o r m a lc o n c e p ta n a l y s i s ) 【3 6 - 4 0 】等几种。有的 方法依据其所采用的具体挖掘思路不同,又可做进一步细分,详细分类如 图1 2 所示。 国内对a s p e c t 挖掘的研究开始于2 0 0 6 年前后,大部分研究都是对国 外现有成果的补充与扩展,例如哈尔滨工程大学的区立平和刘大晰在s i l v a b r e u 等人的研究成果上提出了一种基于方法调用树的a s p e c t 挖掘方法【3 2 1 : 东南大学的闵洪波,徐宝文等人为程序依赖图引入了虚拟接点表示核心功 能【”1 :吉林大学的何丽莉,白洪涛等相继提出用概念格挖掘a s p e c t 的方 重庆邮电大学硕士论文 第一章绪论 法1 36 1 ,以及基于聚类分析和关联规则挖掘方法【2 7 1 。以上多数方法仍都处于 理论论证阶段,没有经过标准测试程序j h o t d r a w 的实验验证或未给出详 细实验结果。 a s p c c t j 宪掘方法 扇入l i 聚类 分析i 1 分析 形式概念li 模式 分析l 匹配 曩驯霎到霭莆il 雾莆ll 翟li1 絮nli 箍名字| l 类型l l 调用il 调用l m i c l c 幅 ii 克隆 程序 依赖 图 抽象 语法 树 抽象 符号 程序动态 执行轨迹 图1 2a s p e c t 挖掘方法详细分类 v u b 的a n d yk e l i e n s ,k i mm e n s 等】从不同的角度对当前的a s p e c t 挖掘方法进行了分类,并指出了a s p e c t 挖掘下一步发展的方向应为多种挖 掘方法的融合。同时,二人在文献【4 2 】中指出了目前a s p e c t 挖掘存在的不 足:准确率和召回率仍较低,执行效率较差,不利于挖掘大规模复杂软件 系统;多数方法没有给出详细的实验测试结果,以及总的准确率和召回个 数,影响了a s p e c t 挖掘研究的进展。 1 2 2 切点定义研究现状 目前切点定义面临的最主要问题是由程序演化而造成的软化损坏问 题,该问题已严重影响了a s p e c t 重构的质量以及重构后系统的可维护性和 可扩展性。所谓“切点软化损坏 ( f r a g i l ep o i n t c u t ) 是指在面向a s p e c t 系 统中对基础程序( b a s ep r o g r a m ) 看似安全的修改导致切点丢失或捕获特定 连接点造成的a s p e c t 织入错误【4 5 1 ,因此,如何定义鲁棒性更好的切点, 避免切点的软化损坏,从而改善a s p e c t 重构的质量,已成为切点定义研究 亟待解决的问题。 目前对切点定义的研究主要形成了两条思路,一方面集中在研究如何 创建表达力更强的切点语言,实现切点定义与具体基础程序结构的解耦 4 重庆邮电大学硕士论文第一章绪论 【4 6 】【4 7 】;另一方面主要是借助相关的工具或模型视图,协助开发人员实现切 点的定义与基础程序的间接解耦,以提高切点的鲁棒性和可复用性,并及 时发现切点的软化损坏【4 5 】【4 6 1 。由于引入新的切点语言牵涉到编译器匹配 和新语言的推广等问题,难度较大,短期内难以实现,因此,目前对切点 定义的研究主要集中在后一条思路上。 德国p a s s a uu n i v e r s i t y 的m a x i m i l i a ns t o e r z e r 和j u e r g e ng r a f t 4 5 j 首先提 出“切点软化损坏”的概念,并开发了一个e c l i p s e 插件p c d i f f 来协助开 发人员判断切点是否软化,但p c d i f f 并没有考虑动态切点指示符捕获连接 点的变化。 g y b e l s 等【4 6 l 提出了一种基于逻辑编程的横切语言c a r m a ,k l a u s 和 m i r a 等【4 7 l 提出了另一种用于切点定义的逻辑编程语言a l p h a ,但以上两种 切点语言都还不成熟,都仍处于不断完善阶段。 a n d yk e l l e n s ,k i mm e n s 等在文献【4 8 】中提出一种基于视图模型的切 点定义方法,视图是代码实体的抽象概括,实现了切点定义与基础程序的 解耦。但该视图模型目前仅适用于扩展c a r m a 类型语言的切点定义,并 且视图模型通过自身开发的工具i n t e n s i v e 【5 6 】实现,通用性不强。文献【4 9 】 提出一种基于程序视图的切点定义方法,该方法适用于a e s p e c t j 的切点定 义,但仅支持3 个常用切点指示符并且实现工具仍不完善。 k i c z a l e s 以及h a v i n g a 等【5 0 】【5 l 】在切点定义中引入j a v a 标记( j a v a a n n o t a t i o n s ) 以实现切点定义与基础程序的解耦,但标记只能实现切点定义 与基础程序的部分解耦,且在程序中出现连接点匹配错误时更难以发现。 文献 5 2 】提出横切编程接口( c r o s s c u tp r o g r a m m i n gi n t e r f a c e ,x p i ) 的概 念,并通过一些设计规则【5 3 】间接实现了基础程序代码与a s p e c t 代码演化 的相互独立。b r a e m 和t 0 u r w e 等【5 4 】【5 5 1 研究了如何利用推理逻辑编程 ( i n d u c t i v el o g i cp r o g r a m m i n g ,i l p ) 技术从给定的连接点集合中推理出通配 符模式的切点,为下一步a s p e c t 重构做准备。 目前国内多数对切点的研究仍是从建模的角度出发【”】,着重研究如 何把切点、方面等面向a s p e c t 概念引入到传统建模当中。它与本文所论述 的切点定义研究关键区别在于研究出发点的不同,本文所论述切点定义研 究是从代码实现的角度考虑如何使切点定义与基础程序解耦,创建鲁棒 性、复用性更好的切点,以加强完善a s p e c t 重构的质量,提高软件后期的 易维护性和易扩展性,避免后期因基础程序演化而造成切点软化损坏,它 与前者是有本质区别的。 综上所述,目前关于切点定义的研究仍处于起步阶段,表达力更强的 5 重庆邮电大学硕士论文 切点语言短期内难 现工具或支持语言的独特性,通用性和实用性较差,不利于方法的推广, 影响了a s p e c t 的重构质量。 1 3 论文主要工作 如何将面向对象系统转化为面向a s p e c t 系统是a o p 领域的研究热点, 本文对该课题中的两个连续核心问题a s p e c t 挖掘和切点定义进行了深入 研究,着重于研究如何有效过滤a s p e c t 挖掘中的“噪音数据”,进而提高 现有a s p e c t 挖掘方法的准确率,以及如何在实现切点定义与基础程序解耦 同时,提高现有切点定义方法的通用性和实用性。论文的主要研究工作和 内容包括以下几方面: ( 1 ) 设计了一种结合扇入分析和聚类分析的a s p e c t 挖掘方法,该方法 首先对目标软件系统进行扇入分析,过滤掉其中扇入值较小难以成为候选 a s p e c t 种子的函数,即“噪音数据 ,获取扇入值较大极易成为候选a s p e c t 种子的函数及其调用函数,然后构造对象属性矩阵对其进行聚类分析,获 取候选a s p e c t 种子集。同时,改进了本方法在聚类分析阶段所用的k - m e a n s 算法,通过一个初始中心点自动选择算法,解决了k m e a n s 算法必须事先 指定七个初始聚类中心点的问题,另外,给出了算法的阈值估算方法,并 在实验分析阶段验证了其正确性。 ( 2 ) 给出了一种基于概念模型的切点定义方法,概念模型通过扩展 u m l 元模型实现,是对a s p e c t j 切点表达式的抽象概括,依据软件系统的 横切关系构建,本文称之为切点模型,实现了切点定义与基础程序的解耦, 提高了切点的鲁棒性和可复用性。 ( 3 ) 对论文所提a s p e c t 挖掘方法和切点定义方法进行了实验测试和案 例分析。实验表明本文的a s p e c t 挖掘方法在保证较高的召回率的情况下, 有效过滤了目标系统中的“噪音数据 ,显著减少了聚类分析的数据处理 量,a s p e c t 挖掘准确率有明显改善,但也会丢失很少一部分扇入值较低的 横切函数。通过一个案例分析表明,与其它类似方法相比,基于概念模型 的切点定义方法在实现切点定义与基础程序解耦的同时,有更好的通用性 和实用性,但本模型目前只支持较为常用的切点指示符,其余切点指示符 有待进一步引入。 ( 4 ) 利用m i c r o s o f tv i s u a ic + + 6 0 实现了一个初步的a s p e c t 挖掘实验 6 重庆邮电大学硕士论文 第一章绪论 平台,该平台集成了聚类数据预处理、阈值估算、聚类分析和结果转换功 能,为下一步a s p e c t 挖掘研究提供了便利。通过一个i n i 配置文件修改了 r a t i o n a lr o s e 的注册表,使其支持本文切点模型建模。同时,通过编写一 个r o s e 脚本文件p o i n t c u t e b s 实现了由切点模型自动生成重构的a s p e c t 代码框架。 1 4 论文组织结构 本论文组织结构如下: 第一章介绍论文的选题背景、a s p e c t 挖掘和切点定义的研究现状以 及论文的主要工作。 第二章介绍a s p e c t 挖掘和切点定义研究的相关概念和实现方法,并 分析当前具体实现方法存在的不足。 第三章针对当前a s p e c t 挖掘方法存在的不足,设计一种结合扇入分 析和聚类分析的a s p e c t 挖掘方法,详细阐述了其理论模型和具体实现步 骤,并给出了方法的阈值估算方法。 第四章介绍基于概念模型的切点定义方法,论述如何利用u m l 的扩 展机制构建本文所提切点模型以及模型内在的概念约束,同时阐述如何利 用可视化建模工具r a t i o n a lr o s e 的扩展接口实现切点模型的建模以及 a s p e c t 重构代码框架的自动生成。 第五章实验分析。对本文的a s p e c t 挖掘方法以及阈值估算方法的有 效性和正确性进行了测试。同时,在实验环节对比分析了欧几里德距离和 曼哈顿距离在a s p e c t 挖掘方面存在的差异。最后,通过一个具体案例分析 证明了基于概念模型切点定义方法的有效性。 第六章对全文研究工作进行了总结,并展望下一步的研究方向。 7 重庆邮电大学硕士论文 第二章a s p e c t 挖掘和切点定义研究概述 第二章a s p e c t 挖掘和切点定义研究概述 本章主要介绍a s p e c t 挖掘和切点定义的相关概念及实现方法,并分析 探讨了目前方法存在的不足。 2 1a o p 概述 a o p 是一种程序设计方法,不是一种具体的语言或工具,在实际软件 开发中,开发人员需要使用具体的a o p 实现语言来应用a o p 。这类似于 面向对象方法和其实现语言j a v a ,c + + ,c 撑等语言之间的关系。虽然自1 9 9 7 年a o p 提出以来,先后有多种a o p 语言问世,如a s p e c t j 【5 】、a s p e c t c 【引、 a s p e c t c + + 【7 】【8 】等,但基本上所有a o p 语言的实现机制以及基本概念、基 本构成都是相通的。 2 1 1a o p 的实现机制 a o p 的核心思想是对这两种不同的关注点分别进行编码,使用传统的 面向对象编程语言对核心关注点编程,使用面向a s p e c t 的编程语言对横切 关注点,也就是a s p e c t 进行编程。然后使用一种机制将这两种代码自动混 合起来,形成最终的代码。这一机制的实现工具称为织入器( w e a v e r ) 。因 此,对a s p e c t 单独编码,并通过适当的织入机制使两种代码混合,构成了 a o p 思想的基石。 关注点实现 图2 1a o p 的实现机制 a o p 实现机制的整个过程可用图2 1 表示,从图中可以看出,整个过 程大致可以分为三个阶段:关注点分解、关注点实现和a s p e c t 织入。关注 8 重庆邮电大学硕士论文 第二章a s p e c t 挖掘和切点定义研究概述 点分解是把横切关注点和核心关注点分别从系统需求中抽取出来分为核 心模块和横切模块。关注点实现是把各个核心模块和横切模块分别以c l a s s 和a s p e c t 的形式独立实现。a s p e c t 织入则是把己经实现的a s p e c t 代码织 入到系统核心功能代码中构成最终需求的系统。 2 1 2a o p 的基本构成 为了实现对横切关注点的封装、织入,面向a s p e c t 编程技术在传统面 向对象编程技术基础上引入了一套新的构成元素,包括方面( a s p e c t ) 、切 点( p o i n t c u t ) 、连接点( j o i np o i n t ) 、通知( a d v i c e ) 和类型间声明( i n t r o d u c t i o n ) 。 鉴于a s p e c t j 目前已成为a o p 的语言规范,本文下面基于a s p e c t j 介绍这 些基本概念。 连接点( j o i np o i n t ) :指程序控制流中的某些点,如最常见的函数调用、 类属性读写访问、类对象的初始化、异常处理等,表示程序代码中可能需 要调用横切功能的一些点,编译器就在这些连接点处织入a s p e c t 以实现横 切功能的调用。 切点( p o i n t c u t ) :它是连接点的集合,切点通过切点指示符( p o i n t c u t d e s i g n a t o r ) 定义捕获特定的连接点实现a s p e c t 的织入。 通知( a d v i c e ) :通知的结构与面向对象语言中的函数相似,封装了实 现特定横切功能代码,在切点捕获的连接点处执行。通知根据其执行时机 又分为以下三种类型: ( a ) b e f o r ea d v i c e :这是a o p 中最常见的通知,在连接点之前执行,如 图2 2b e f o r ea d v i c e 对应了一个c h e c k ( ) 切点,该切点定义了在函数w e b ( ) 调用之前执行a d v i c e ,提醒用户检查用户名和密码。 ( b ) a f t e ra d v i c e :该类型通知在连接点之后执行,若连接点类型为函数 调用连接点,通知的执行又分为三种情况,函数正常返回时执行,函数抛 出异常时执行,任意类型返回都执行。 ( c ) a r o u n da d v i c e :这种类型的a d v i c e 最为复杂,它在匹配连接点之前 或之后都执行,它可以控制连接点处的函数是否执行,执行的次数以及每 次的参数值,它还可以有返回值。 类型间声明( i n t r o d u c t i o n ) :程序员可以通过类型间的声明修改程序的 静态结构、名称,并能为c l a s s 添加属性、函数以及修改c l a s s 之间的继承 关系。 方面( a s p e c t ) :与面向对象中类有相似的结构,实现了对以上各种元素 9 重庆邮电大学硕士论文 第二章a s p e c t 挖掘和切点定义研究概述 的封装。 函数签名。要捕获 的j o i n t p o i n t p o i n t c u t 定义p 0 i n t c u tc h e c k ( ) :c a l l ( v o i d - 曲s e r v e s e r v e p a g e ( ) ) ; b e f o r ea d v i c e b e f o r e

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论