




已阅读5页,还剩69页未读, 继续免费阅读
(计算机科学与技术专业论文)基于aop的软件性质监控技术研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国防科技大学研究生院学位论文 摘要 随着软件复杂度的提高,软件失效和故障问题日渐突出,软件可信性越来越 受到人们的关注。针对软件实施运行时监控是提高软件可信性的一种有效途径。 然而,传统的软件监控技术存在着一维实现技术与多维监控需求之间的失配,导 致了代码的缠结和分散。a o p 技术的发展,为监控关注点的模块化实现提供了支 持,a o p 技术在监控领域的应用越来越广泛。 论文介绍了监控领域a o p 技术的应用现状,分析了现有监控技术的不足;设 计并实现了一个基于a o p 的软件性质监控框架。该框架从利用o c l 描述性质约 束出发,通过一系列过程自动生成监控方面代码,该方面代码与源程序编织实现 监控能力的植入。框架一方面利用a o p 技术实现了“监控”的模块化封装;另一 方面提供了监控代码自动生成机制,免除了编程实现监控逻辑的负担。 针对基于a o p 的软件性质监控框架中监控效率问题,论文随后还提出了一个 基于0 c l j a v a 转换的软件性质监控技术。该技术结合了o c l j a v a 的转换机制, 降低了监控对o c l 验证工具的依赖,提高了监控效率。 论文最后还就多核体系中监控效率提高问题进行了研究,提出了一个可行的 技术思路。 主题词:面向方面编程,软件性质,监控,对象约束语言,多核程序设计, a s p e c t j 第i 页 国防科技大学研究生院学位论文 a b s t r a c t a l o n gw i t ht h ei n c r e a s ei nc o m p l e x i t y ,s o f t w a r ef a i l u r e sa n dm a l f u n c t i o n sg r o w p e o p l ep a ym o r ea n dm o r ea t t e n t i o nt ot h eq u e s t i o no fs o f t w a r ec r e d i b i l i t y m o n i t o r i n g s o f t w a r ea tr t m t i m ei sa l le f f e c t i v ew a yt oe n h a n c es o f t w a r ec r e d i b i l i t y h o w e v e r , t h e r ei sam i s m a t c hf r o mo n e d i m e n s i o n a li m p l e m e n t a t i o n t om u l t i d i m e n s i o n a l r e q u i r e m e n ti nt r a d i t i o n a lt e c h n i q u e sf o rs o f t w a r em o n i t o r i n g ,w h i c hr e s u l t i n gi nc o d e t a n g l i n ga n ds c a t t e r i n g t h ed e v e l o p m e n to fa o pt e c h n o l o g yg i v e s as u p p o r tt o s e p a r a t i n gc r o s s c u t t i n gc o n c e r n sf r o mt h eb u s i n e s sl o g i c i nt h ef i e l do fm o n i t o r i n g ,t h e u s i n go fa o pt e c h n o l o g yi sm o r ea n d m o r ep o p u l a r t m sd i s s e r t a t i o np r e s e n t st h ea p p l i c a t i o no fa o pt e c h n o l o g yi nt h ef i e l do f m o n i t o r i n g ,a n dt a k e sa l la n a l y s i s t ot h es h o r t c o m i n g so ft h ee x i s t i n gm o n i t o r i n g t e c h n o l o g y am o n i t o r i n gf r a m e w o r kf o rs o f t w a r ep r o p e r t i e sb a s e do na o p a l s ob e d e s i g n e da n di m p l e m e n t e d t h i sf r a m e w o r kd e s c r i b e st h ec o n s t r a i n t so fp r o p e r t i e su s i n g o c lf i r s t l y t h r o u g has e r i e so fp r o c e s s ,m o n i t o ra s p e c tc o d e s 晰l lb eg e n e r a t e d a u t o m a t i c a l l y b yw e a v i n gt h e s ea s p e c tc o d e sw i t hs o f t w a r em o n i t o r e d ,t h ea b i l i t yo f m o n i t o r i n gw i l lb ee m b e d d e d t h ef r a m e w o r kc o u l dm o d u l a r i z e m o n i t o r t h r o u g h a o pt e c h n o l o g y o nt h eo t h e rh a n d , g e n e r a t i n gm o n i t o rc o d e sa u t o m a t i c a l l y , m o n i t o rl o g i c t h ef r a m e w o r kp r o v i d e sam e c h a n i s mf o r e l i m i n a t i n gt h eb u r d e no fp r o g r a m m i n gt o i no r d e rt os o l v et h ep r o b l e mo fm o n i t o r i n ge 蚯c i e n c yi nt h em o n i t o r i n g f r a m e w o r kf o rs o f t w a r ep r o p e r t i e sb a s e do na o p ,t h ed i s s e r t a t i o np r o p o s e sam o n i t o r i n g t e c h n i q u ef o rs o f t w a r ep r o p e r t i e sb a s e do nt h et r a n s f o r m a t i o n a lm e c h a n i s mf r o mo c l t oj a v a t 【1 i st e c h n i q u eh a sc o m b i n e dt h et r a n s f o r m a t i o n a lm e c h a n i s mf r o mo c l t o j a v aa n dc r nr e d u c et h ed e p e n d e n c eo no c lv a l i d a t i o nt o o l si nt h ec o u r s eo f m o n i t o r i n g a n di m p r o v em o n i t o r i n ge 衔c i e n c y a tt h es a m et i m e f i n a l l y t h i sd i s s e r t a t i o na l s ot a k e sr e s e a r c hi ni m p r o v i n gm o n i t o r i n ge 所c i e n c y i n m u l t i c o r es y s t e m ,a n dp r o p o s e saf e a s i b l ew a y k e yw o r d s :a s p e c t o r i e n t e dp r o g r a m m i n g ,s o f t w a r ep r o p e r t i e s ,m o n i t o r i n g , o b j e c tc o n s t r a i n tl a n g u a g e ,m u l t i c o r ep r o g r a m m i n g ,a s p e c t j 第i i 页 国防科技大学研究生院学位论文 表目录 表3 1 需要解析信息列表3 3 表3 2 动作对应的切入点3 4 表3 3o c l 对应的切入点3 4 表3 4 区域与信息填入对照表3 5 表4 1o c l j a v a 基本类型对应表4 6 表4 2o c l j a v a 集合类型对应表4 8 表4 3f o r a l l 操作j a v a 实现模板4 9 表4 4f o r a u 模板的应用实例4 9 表4 5 前置条件验证方面模板5l 表4 6 不变式验证方面模板5 1 表4 7 后置条件验证方面模板5 2 表4 8 构造器后置条件验证方面模板:5 2 表4 9 实例监控方面代码5 3 第1 v 页 国防科技大学研究生院学位论文 图目录 图2 1 横切关注点图示6 图2 2 图元编辑器类图7 图2 3a o p 机制9 图2 4 三菱镜原理l0 图2 5a s p e c t j 语言结构1 1 图2 6a j c 编译器1 3 图3 1 监控能力自动植入机制1 9 图3 2 监控功能实现维度2 0 图3 3 监控描述与实现对应层面2 0 图3 4 基于a o p 的软件性质监控框架结构2 1 图3 5 简化的o c l 元模型j 2 3 图3 6 简化的u m l 元模型2 4 图3 7o c l 上下文信息在u m l 元模型的对应2 5 图3 8 监控能力植入模块结构2 7 图3 9 监控实施与输出模块2 8 图3 1 0 工具总体框架2 9 图3 1 1 框架监控流程3 0 图3 1 2x m l 解析机制3 1 图3 1 3s a x 解析x m l 3 1 图3 1 4d o m 解析x m l 3 2 图3 1 5d o m 解析流程:_ :黑z j :3 2 图3 1 6x m l 解析器工作流程3 3 图3 1 7 监控方面生成器主要接口3 6 图3 1 8 实例u m l o c l 模型4 1 图3 1 9 实例监控结果输出一4 1 图4 1 基于o c l j a v a 转换的软件性质监控流程4 4 图4 2o c l j a v a 转换过程4 5 图4 3o c l 标准库中类型定义4 5 图4 4 集合操作的的三种策略5 0 图5 1 多核体系中软件性质监控流程5 9 图5 2 线程计算模型5 9 图5 3 执行环境中线程执行流程6 0 第v 页 国防科技大学研究生院学位论文 图5 4j a v a 线程执行流程6 1 第页 独创性声明 本人声明所呈交的学位论文是我本人在导师指导下进行的研究工作及取得的研 究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已 经发表和撰写过的研究成果,也不包含为获得国防科学技术大学或其它教育机构的学 位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文 中作了明确的说明并表示谢意 学位论文题目: 基王q 旦鲍熬佳! 陛厦些控拉垄盟壅 学位论文作者签名:鞠里 日期:啦年,2 月“日 学位论文版权使用授权书 本人完全了解国防科学技术大学有关保留、使用学位论文的规定本人授权国 防科学技术大学可以保留并向国家有关部门或机构送交论文的复印件和电子文档,允 许论文被查阅和借阒;可以将学位论文的全部或部分内容编入有关数据库进行检索, 可以采用影印、缩印或扫描等复制手段保存、汇编学位论文 ( 保密学位论文在解密后适用本授权书。) 沙苫年12 , 月玩 2 程咯年2 月馏日 国防科技大学研究生院学位论文 第一章绪论 1 1 课题研究背景和意义 随着计算机技术的不断发展,人们的生产、生活对于计算机的依赖越来越高。 目前,计算机已广泛应用于工业、交通、金融、医疗、通信、航空航天等众多领 域。与此同时,软件系统规模日益增大,复杂度不断提高,软件失效和故障问题 日渐突出,软件可信性问题越来越受到人们的关注【l 】。如何构建高可信的软件已成 为国内外研究的热点。针对软件实施运行时监控是提高软件可信性的一种有效途 径和重要方法。 然而,传统的软件监控系统,由于被监控对象分散在系统的各个模块,致使 监控逻辑的实现代码也散布于多个模块,这样直接导致了代码的混乱和分散,破 坏了系统的模块性,降低了可读性和可复用性。当监控需求发生改变时,监控代 码的维护变得异常困难。究其原因在于:监控是一个系统横切关注点,传统的o o p 编程技术在实现系统横切关注点时存在先天的缺陷系统横切关注点的需求空 间在系统中是n 维的,而o o p 只提供了一维的关注点实现方法【2 】。 面向方面技术的提出和发展,为系统横切关注点的模块化问题提供了支持。 监控作为典型的系统横切关注点,已越来越重视面向方面技术的运用。利用a o p 关注点分离技术,监控能力可以以一种松散耦合的方式注入软件系统。 为此,课题针对a o p 技术在监控中的应用展开研究。首先分析已有监控技术 中a o p 应用现状,发现其存在的不足。为了在模型上实现监控的描述和规划,课 题引入了对象约束语言0 c l ,并通过在模型上加入o c l 约束的方式,实现在设计 层面上的监控部署。加入的o c l 约束在设计的监控框架中自动转化为监控方面代 码,并通过方面编织器织入原系统,为原本没有监控能力的软件植入监控能力。 最后,为了提高多核体系中监控的效率,课题还提出了一个利用多核技术提高监 控效率的思路。 本课题的基本任务是研究a o p 技术在监控领域的应用,基于a o p 设计软件 性质监控框架,并开发相应的支撑工具。 本课题的研究意义体现在理论和实践两个方面。在理论上,提出和优化了 0 c l j a v a 转换机制,有利于m d a 框架中o c l 的运用;设计了监控的方面自动生 成机制,能促进a o p 技术在监控领域应用;提出了利用多核技术提高监控效率的 设计思路。在实践上,课题设计和实现的监控框架,实现了对监控代码的模块化 封装,降低了面向方面技术的使用门槛,为专业领域的监控人员提供了操作更简 单、输出更灵活、监控更高效的监控平台。 第1 页 国防科技大学研究生院学位论文 1 2 论文的研究内容 本课题主要任务是应用a o p 技术开发软件运行时监控平台。论文首先研究了 a o p 技术在现有监控工具中的应用,分析其理论基础和相关实现技术。然后,针 对现有监控技术对软件性质监控能力的不足,课题设计了一个基于a o p 的软件性 质监控框架。该框架在有效监控软件性质违背的同时实现了对a o p 技术的透明化 处理,并支持文本和模型的双层输出。然而,该框架的监控实施需要借助o c l 约 束验证工具u s e ( u m l b a s e ds p e c i f i c a t i o ne n v i r o n m e n t ) 进行。u s e 是一个基于o c l 的模型约束检查工具。为了降低监控框架对o c l 验证工具u s e 的依赖,提高监控 效率,课题随后又提出了一种基于o c l j a v a 转换机制的软件性质监控技术,该技 术在提高监控效率的同时还能更好的支持输出模式定制,具有更加灵活的输出方 式。课题最后就多核体系中监控效率提高问题进行了研究,提出了一个能更好利 用多核资源,提高监控效率的设计思路。 本课题主要研究内容如下: ( 1 ) 研究a o p 技术的理念和特点,熟悉a o p 技术在监控领域的应用现状,分 析现有监控技术的特点和不足。 ( 2 ) 基于a o p 技术提出一个软件性质监控框架,设计框架结构,并开发相应 工具。 ( 3 ) 分析上一监控框架的监控效率问题;基于o c l j a v a 转换机制设计更为直 接高效的软件性质监控技术。 ( 4 ) 结合多核技术,进一步提高监控有效性和监控效率。 1 3 论文结构 本文共六章,各章的主要内容安排如下: 第一章提出课题研究背景和意义,介绍课题研究的理论基础,确定研究内容 和目标。 第二章介绍a o p 技术的基本理念、发展历程和实现机理;分析a s p e c t j 的语 言机理和特点;介绍a o p 技术在监控领域的应用现状,分析现有监控技术的不足。 第三章提出一个基于a o p 的软件性质监控框架,设计和实现框架的支撑工具 包。最后通过案例对框架监控能力进行了分析。 第四章设计一个基于o c l j a v a 转换的软件性质监控技术,弥补前一监控框架 中的不足,提高了监控效率。 第五章就多核体系中监控效率提高问题进行了研究,提出了一个可行的技术 思路。 第2 页 国防科技大学研究生院学位论文 第六章总结本文的主要工作,提出了存在的问题和有待于进一步开展的研究 方向。 1 4 论文研究成果 本文的主要贡献和创新工作主要包括以下三个方面: ( 1 ) 提出了一个基于a o p 的软件性质监控框架,并设计实现了相关工具。该 框架结合x m l 解析、方面生成与编织,o c l 约束验证等一系列相关技 术,实现了监控代码的自动生成和植入。 ( 2 ) 提出了一个基于o c l j a v a 转换的软件性质监控技术,该技术支持将o c l 约束转化为j a v a 断言代码,并自动生成监控方面代码:方面编织后的程 序直接具备运行时监控能力。 ( 3 ) 提出了将多核技术与a o p 监控技术结合的思想,实现监控功能执行与基 本业务功能执行在计算内核上的有效分离,提高监控效率。 第3 页 国防科技大学研究生院学位论文 第二章a o p 技术在监控领域的应用 a o p 技术的发展,为系统横切关注点的模块化实现提供了直接的支持。监控 作为典型的系统横切关注点,已越来越重视面向方面技术的运用。本章首先介绍 a o p 的相关概念和实现机理,并说明为什么用a o p 可以很好的解决系统中横切关 注点模块化问题。随后,详细介绍目前运用最为广泛的a o p 语言a s p e c t j 。最后, 介绍a o p 技术在现有监控技术中的应用现状,分析存在的不足。 2 1a o p 模块化是软件开发遵循的一般原则。在遇到复杂的问题时,通过将问题划分 为许多小问题,然后分而治之。目前主流的高级程序设计语言都提供了一定的模 块化机制,例如在o o p 中,类是基本的模块单元,直接对应问题域中的一类实体。 然而在复杂的系统中,必然存在一些关注点( 即a o p 概念中的横切关注点) ,其 实现横切于其它关注点,例如日志,跟踪,持久性,异常处理,安全控制等。这 些关注点在o o p 中的实现,必然导致代码的分散与交织,破坏系统模块性。a o p 就是为了解决横切关注点实现中的代码分散与交织问题而出现的。a o p 希望在已 有的软件开发技术和方法之上,提供一种系统化标识、模块化表示和合成横切关 注点的方式。 2 i ia o p 基本概念 面向方面的思想包含以下重要的概念【3 j : 关注点( c o n c e r n ) - 软件系统中特定的问题或者兴趣区间,例如安全检查, 日志,事务处理,d e b u g 踪迹,性能监控。 横切关注点( c r o s s c u t t i n gc o n c e r n ) :其实现代码分散到软件实现的其它部 分之中的关注点。 方面( a s p e c t ) :将横切关注点的分散代码归整于同一“模块。方面提供 了一种机制,这种机制可以用一种模块化的方式指定横切关注点。 连接点( j o i np o i n t ) :连接点就是可能会或者可能不会调用某个通知的应 用程序内的特定点。 切入点( p o i n t c u t ) :一组连接点的总称。常用通配符或者正则表达式表示。 切入点描述什么时候需要进行横切操作,即在哪些位置需要加入通知,但 切入点不了解具体a d v i c e 的内容。 通知( a d v i c e ) :通知是方面被调用时所执行的代码。通知包含本身的一组 第4 页 国防科技大学研究生院学位论文 规则,这组规则规定了何时调用通知,这是与被触发的连接点相关的。 织入( w e a v e ) :将方面整合到原有的执行流程之中,形成在引入a o p 机 制后的完整的执行流程。 2 1 2 关注点的多维分离 关注点分离s o c ( s e p a r a t i o no fc o n c e r n s ) 一直是软件工程的一个重要原则和 出发点,是软件工程的重要核心之一。软件工程的主要目标是提高软件质量,减 少软件产品成本,便于维护和进化。为了实现这些目标,软件工程师不断的寻找 新的开发技术和方法,以减少软件复杂度,提高可理解性和可重用性。这就需要 一定的分解机制将软件分割为有意义且可管理的片段。当然同时也需要组合机制 将这些片段组合成一个有机整体。关注点的分离和组合机制可以带来以下好处: 降低软件的复杂性,提高软件的可理解性。 提高软件的演化能力。关注点分离之后,功能模块化,更容易改变软件局 部功能,并且改变的影响较小。 提高可复用性。关注点分离后,开发人员不受与复用无关部分的约束。 简化构件的集成。 在软件生命周期中,具有各种类别的关注点。这些关注点的维度能够帮助组 织概念空间和单元功能维度f 5 1 。数据或对象( 导致数据抽象的对象) 维度以及功能 维度是关注点的公共维度。除此之外,还有特征、角色和配置等其它维度。关注 点的维度一部分是从领域概念派生而来,还有的来源于系统需求、开发过程和系 统内部细节。因此,很多维度来源于不同的目的( 如可理解性、可重用性、可跟 踪性) 、不同的系统和生命周期的不同阶段。 2 1 2 1 单一主导维度分离 在传统的软件系统中,只支持根据关注点的单一维度分离与组合。这个维度 被称之为主导维度。开发时常常特别选定采用的主导维度。例如过程和功能性程 序语言只允许基于功能分解;而面向对象的形式化体系只支持基于对象( 或数据) 的维度分解。这样,开发者最终只是选择实现了沿着主导维度的关注点分离。这 样的软件产品,只是以适当的形式化体系建模了领域概念。产品包含模块,模块 包含单元。这种模块化结构只反映了基于一种主要关注维度的分解方式。 这种基于一维关注点分离的软件往往存在以下的问题: 软件易理解性随着时间而降低。 许多普通的维护和进化导致高度影响的、入侵式的修改。 软件只具有有限的重用性,或是重有困难。 不同软件制品间可跟踪性受限。 第5 页 国防科技大学研究生院学位论文 2 1 2 2 多维分解 将关注点沿着单一的、主要维度上的分解虽然有一定的价值,但往往不充分。 其他维度的关注点单元最终会分散在多个模块中,而且彼此混杂在一起,破坏模 块化。为了解决这一问题,引入了超切片这一额外的、灵活的分解方式。 超切片【6 1 是一组由任意形式体系编写的传统模块,其主要是为了封装主导维度 以外的其他维度上的关注点。超切片的模块内部只包含那些处理某个特定关注点 的单元和与之相关的单元。同一个单元可以以不同形式出现在不同的超切片中, 以支持根据关注点多维度进行并行开发。这样,一个系统被分解为超切片的集合。 超切片虽然提供了一种灵活的分解方式,但要使其发挥作用,还需要将它们 组合起来成为一个整体。超模块则提供这样的机能。它由一组超切片和一个组合 规则构成,该组合规则说明了超切片怎样被组合形成一个新的超切片,这个超切 片综合并集成了它们的单元。 2 1 3 横切关注点问题 关注点分离要求软件设计人员能够以模块化的方式实现各种关注点,然而在 传统的软件系统中,只支持根据关注点的单一维度分离。例如根据业务逻辑维度 分离。然而一个系统除了包含业务功能的关注点外,还包含很多系统级关注点, 例如日志、事务、认证、安全和性能等等。在传统的开发方法下,系统级关注点 在逻辑上彼此正交( 相互独立) ,同时在实现上趋向于和若干核心模块交织( 图2 1 ) 。 系统级关注点实现代码往往与核心业务关注点的实现代码彼此横切,使得最终的 系统呈现代码缠结( c o d et a n g l i n g ) 和代码散射( c o d es c a t t e r i n g ) 现象。这类实现代码分 散到软件实现的其它部分之中的关注点称为横切关注点( c r o s s c u t t i n gc o n c e r n s ) 。典 型的横切关注点包括:同步、实时约束、错误检查、对象交互约束、持久性、安 全性、日志、跟踪、校准、优化、监控、内存管理、缓存、资源池、权限、懒加 载和测试等。 1 ,纵 驴 * ”j 甥 醪即馨”绷 嗣+ w 善 ;壶嗣 立 i 蠡辑j 。 萋 # 红。j 参, i 芝 i l幸霉- q 墒 # 莨。玉。淘娩,? :翻 一 ,上 甲, 图2 1 横切关注点图示 第6 页 国防科技大学研究生院学位论文 考虑一个图元编辑器的实例【7 1 。在图元编辑器中( 图2 2 ) ,抽象图元类 f i g u r e e l e m e n t 有两个图元子类p o i n t 和l i n e ,分别对点和线进行管理。这两个类有 着良好的模块性,类中源代码都紧密相关,内聚度很高,并且每个类的接口都很 清晰。 图2 2 图元编辑器类图 在实例中,存在一个显示更新的需求,即无论图元何时移动、移动到哪里, 都要通知屏幕管理器其位置发生了改变。这显然是一个系统横切关注点,其实现 横切于p o i n t 和l i n e 两个类。采用面向对象的设计方法,典型的做法是在每个移 动图元的操作代码中,都插入一段通知屏幕管理器其位置发生了改变的代码( 调 用d i s p l a y u p d a t e ( ) 方法) ,实现代码如下: c l a s sl i n e p r i v a t ep o i n t _ pl ,_ p 2 ; p o i n tg e t p l ( ) r e t u r n _ p 1 ; p o i n tg e t p 2 ( ) r e t u r n - p 2 ; v o i ds e t p l ( p o i n tp 1 ) t h i s _ p l = p l ; d i s p l a y u p d a t e o 歹 v o i ds e t p 2 ( p o i n tp 2 ) t h i s _ p 2 = p 2 ; d i s p l a y u p d a t e o ; ) c l a s sp o i n t p r i v a t ei m _ x l ,卫; i n tg e t x ( ) r e t u r n 1 ; i n tg e t y ( ) r e t u r n 2 ; 第7 页 国防科技大学研究生院学位论文 v o i ds e t x ( i n tx 1 ) t h i s x l = x l ; , d i s p l a y u p d a t e ( ) ; v o i ds e t y ( i n t ) 【2 ) t h i s _ x 2 - - - x 2 ; d i s p l a y u p d a t e o 歹 ) ) 这种实现方式的缺陷主要有两方面: 降低了模块性和可理解性。系统横切关注点与业务逻辑关注点缠结在一 起。 实现横切关注点的代码分散在许多的方法中,维护工作开展困难。 在o o p 系统中,横切关注点对软件系统的影响如下: 降低可理解性。横切关注点的代码可能在多个模块出现,造成代码冗余; 结构不清晰,难以描述模块的功能。 降低可演化性。系统演化时,必须查找相关的所有代码,并确保一致性的 改变;需求改变时,难于为系统增加新的关注点。 降低可复用性。b a s e 系统的代码与横切代码缠结,模块化不够。 可维护性差。系统功能改变时,需要找到同一关注点的所有相关的代码, 而这些代码散布在系统的各个角落,对代码的修改容易导致不一致性。 横切关注点问题存在的根本原因:传统软件开发方法只提供了一维方法学实 现系统的关注点,该单一维度一般是核心需求关注点的模块化实现,其他类型的 需求也被迫和该主导维度一致。这样,问题空间是1 1 维的,而解空间是一维的。 这种失配必然导致需求和实现之间的失配。要解决这一问题,必须将横切关注点 从业务核心关注点中分离出来,并进行模块化封装。 2 1 4a o p 机制 a o p 的提出就是为了解决o 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 是一种抽象机制;在设计层面上,a s p e c t 是系统的横切关注点;在实 现层面上,a s p e c t 是模块化横切关注点的程序构造单元。 第8 页 国防科技大学研究生院学位论文 a o p 解决横切关注点问题的思路:首先分离横切关注点和核心关注点,将它 们分别对应为类和a s p e c t 。类和a s p e c t 可以并行开发。最后利用方面编织工具将 a s p e c t 与c l a s s 一起编织,形成可运行的应用系统。a o p 这一解决横切关注点的机 匍j 如图2 3 。 图2 3a o p 机制 在不同的a o p 方法中,实现机制有着一定的差异【3 】: 语言的方面扩展。扩展j a v a 、c + + 等编程语言,直接引入a s p e c t 、a d v i c e 、 p o i n t c u t s 的表达机制。a s p e c t j 羽、a s p e c t c h 【9 】等使用此机制。 动态代理( d ) r i l a i i l i cp r o x i e s ) 。由j d k l 3 新引入动态代理的机制,生成a o p 代理的实现类的源代码。s p r i n g a o p 1 0 l 和n a n i n g 等使用此机制。 动态字节码生成。针对原有的类生成其子类,覆盖其中的方法,实现方法 拦截。例如c g l i b ( c o d eg e n e r a t i o nl i b r a r y ) 。 j a v a 源代码生成。生成新的j a v a 源代码,在其中执行方面代码。e j b 等使 用此机制。 定制类加载器( c l a s sl o a d e r ) 。利用j a v a 类加载机制的可扩充性,改变n e w 算子的行为,使得针对原有类的对象构造变成对增强后的a o p 代理类的 对象构造。j b o s sa o p 11 】和a s p e c t w e r k z 1 2 】等采用此机制。 不同a o p 的实现机制在技术核心上非常一致,都是连接点的访问、编辑、命 名和抽象机制。区别主要在于具体语法。目前,比较成熟的a o p 实现方法主要包 括a s p e c t j 、a s p e c t c + + 、j b o s sa o p 和s p r i n ga o p 等。 应用面向对象方法实现上节图元编辑器显示需求时,造成了系统代码的散射 和缠结。a s p e c t 的核心思想就是将横切关注点从系统中抽取出来,在设计、实现 阶段进行封装,从而提高软件系统模块化。下面应用a o p 技术来模块化实例中显 示更新需求这一横切关注点。用a s p e c t j 代码实现如下: a s p e c td i s p l a y u p d a t i n g p o i n t c u tm o v e 0 : c a l l ( v o i dl i n e s e t p1 ( p o i n t ) ) l i c a l l ( v o i dl i n e s e t p 2 ( p o i n t ) ) l i c a l l ( v o i dp o i n t s e t x ( i n t ) ) l i 第9 页 国防科技大学研究生院学位论文 c a l l ( v o i dp o i n t s e t y ( i n t ) ) ; a f t e r ( ) r e t u r n i n g :m o v e ( ) d i s p l a y u p d a t e ( ) ; ) 2 1 5a o p 开发步骤 系统的开发过程是一个将系统需求映射到程序实现的过程。a o p 程序开发人 员在需求分析阶段对需求空间中不同的关注点进行识别,识别出的关注点根据功 能和性质的不同可分为核心关注点和横切关注点。整个关注点识别过程可以用三 棱镜法则来形容,系统需求好比射入三棱镜的光束,光束经过三棱镜分光( 关注点 识别) ,不同颜色的光束被区分出来,代表了不同的关注点,如图2 4 所示。 需求分 用系统 图2 4 三菱镜原理 对于核心业务关注点,开发者还是通过传统的o o p 技术设计和编写实现代码。 而针对横切关注点,开发人员则需要通过a o p 提供的程序设计单元,结构化地设 计和编写横切关注点的实现代码,从根本上分离不同类型的关注点【1 3 1 。 a o p 提供了织, ) , , ( w e a v i n g ) 机制f 1 4 ,l5 1 ,能够支持横切关注点向核心关注点代 码的注入、组合机制,实现这一机制的工具称为编织器( w e a v e r ) 。因此,模块化地 对横切关注点进行编码,并通过适当的织入机制使两种代码混合,就构成了a o p 多维分解横切关注点的基石。为了最终生成目标代码,开发人员需要将实现基本 功能的o o p 程序和实现横切关注点的a o p 程序通过a o p 编织器进行编织,编织 出的代码是中间代码,中问代码进一步提交给开发环境中的编译器进行编译,就 形成了同时实现两种关注点的目标代码。 2 2a s p e c t j a s p e c t j 是较成熟和目前使用最广泛的a o p 语言,并被应用于工业上大型复杂 系统的开发。 第1 0 页 国防科技大学研究生院学位论文 2 2 1a s p e c t j 发展历程 美国施乐公司帕洛阿尔托研究中心( ) ( e r o xp a r c ) 成立之后,面向方面真正步 入发展正轨。最初,x e r o x 的前期投入是用于开发针对特定领域的方面语言,而后 转为用j a v a 开发通用模型。a s p e c t j 随之应运而生,并且发展成为目前应用最广泛 的a o p 语言。 a s p e c t j 第一个版本是1 9 9 8 年3 月发布的。开发之初,a s p e c t j 还是为满足特 定领域需求而提出的。之后a s p e c t j 经历了从专用关注点到通用目的的转变。1 9 9 9 年初,编织器用j a v a 进行了重新改写,使系统比以前的版本更加兼容。到2 0 0 0 年 a s p e c t j 已经发布了版本0 7 ,至此其设计已经稳定。2 0 0 2 年x e r o xp a r c 决定把 a s p e c t j 的开发转移到e c l i p s e o r gw r e b 站点上的一个更开放的论坛中。a s p e c t j 下载 数字显示,人们对该方法的兴趣正呈指数级增长。 2 2 2a s p e c t j 语言机制 在a s p e c t j 中,a s p e c t 是模块化横切关注点的单元。a s p e c t s 与b a s e 代码的交互 通过连接点模型( j p m :j o i np o i n tm o d e l ) 定义。不同的a s p e c t 语言有不同的连接点 模型。a s p e c t j 有两种j p m :i n t e r - t y p ed e c l a r a t i o n s 以及p o i n t c u t s 和a d v i c e 。a s p e c t j 语言结构如图2 5 所示【3 i 。 1 图2 5a s p e c t j 语言结构 a s p e c t j 语法的一般形式定义如下【1 6 1 : 【p r i v i l e g e d m o d i f i e r s 】a s p e c ti d 【e x t e n d st y p e 】【i m p l e m e n t st y p e l i s t 】 p e r c l a u s e 】 b o d y a s p e c t j 中定义的a s p e c t 构造主要由以下三部分组成: 第1 1 页 国防科技大学研究生院学位论文 内部类型卢明( i n t e r t y p ed e c l a r a t i o n ) :为b a s e 系统中的类声明和实现接口,定 义属性和方法,改变类之间的继承结构,声明a s p e c t s 之间的优先级等。内部 类型声明的一般形式如下: m o d i f i e r s 】t y p et y p e i d ( f o r m a l s ) t h r o w st y p e l i s t 】 b o d y ) a b s t r a c t 【m o d i f i e r s 】t y p et y p e i d ( f o r m a l s ) 【t h r o w st y p e l i s t 】; m o d i f i e r s 】t y p e n e w ( f o r m a l s ) t h r o w st y p e l i s t 】 b o d y ) m o d i f i e r s 】t y p et y p e i d 【_ e x p r e s s i o n 】; d e c l a r ep a r e n t s :t y p e p a te x t e n d st y p e ; d e c l a r ep a r e n t s :t y p e p a ti m p l e m e n t st y p e l i s t ; d e c l a r ew a r n i n g :p o i n t c u t :s t r i n g ; d e c l a r ee r r o r :p o i n t c u t :s t r i n g ; d e c l a r es o f t :t y p e :p o i n t c u t ; d e c l a r ep r e c e d e n c e :t y p e p a t l i s t ;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年建筑设计师招聘面试必-备知识与模拟题集
- 2025年职业技能汽车修理工汽车修理工(中级)-汽车修理工(高级)参考题库含答案解析
- 2025年职业技能机械设备制造修理人员钳工-钳工参考题库含答案解析
- 2025年江苏省中考数学模拟试卷
- 看图猜字课件
- 2025年特种作业类危险化学品安全作业重氮化工艺作业-化工自动化控制仪表作业参考题库含答案解析
- 2025年特种作业类危险化学品安全作业聚合工艺作业-生产经营从业参考题库含答案解析
- 公司车辆安全使用协议书
- 2025年特种作业类危险化学品安全作业烷基化工艺作业-氟化工艺作业参考题库含答案解析
- 2025年特种作业类危险化学品安全作业氯碱电解工艺作业-氯化工艺作业参考题库含答案解析
- 2024年四川省古蔺县事业单位公开招聘医疗卫生岗笔试题带答案
- 2025-2030中国驾驶培训行业市场发展前瞻及投资战略研究报告
- 江苏盐城2025年公开招聘农村(村务)工作者笔试题带答案分析
- 班费收支统计表
- 建行善担贷合同协议
- 餐饮研发中心管理制度
- 2024年版中华民族共同体概论专家大讲堂课件全集第10章至16章节讲根据高等教育出版社教材制作
- 生产过程控制制度
- 国网公司合规管理
- 上海宝冶合同范例
- 区块链在房地产交易中的应用-全面剖析
评论
0/150
提交评论