已阅读5页,还剩69页未读, 继续免费阅读
(计算机软件与理论专业论文)基于uml的面向方面建模框架的研究与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中山大学硕士学位论文摘要 基于u m l 的面向方面建模框架的研究与实现 专业:计算机软件与理论 姓名:刘畅 指导教师:周晓聪副教授 摘要 面向方面软件开发( a s p e c t o r i e n t e ds o r w a r ed e v e l o p m e n t ,a o s d ) 是对软件 系统中横切关注点进行模块化的新途径,面向方面建模( a s p e c t o r i e n t e d m o d e l i n g ,a o m ) 是a o s d 中识别、分离、表示以及组合横切关注点的有效手段。 然而,目前a o m 尚缺乏完整和统一的建模体系,大多数a o m 方法对面向方面 概念的建模都不够完善,特别是对面向方面软件的动态行为建模需要进一步的 探索和完善。不仅如此,当前a o m 方法对横切关注点的处理尚局限于非功能 性关注点,而核心功能关注点之间仍然存在散射与缠结等问题,大大降低了软 件的可理解性、可扩展性和可维护性。 为解决这些问题,本文从对面向方面建模需求的分析着手,基于u m l 的扩 展机制提炼出一个面向方面建模元模型,构建一个基于u m l 的面向方面建模框 架( f r a m e w o r ko f a s p e c t o r i e n t e dm o d e l i n g ,a o m f ) ,并且提出种简单有效的面 向方面软件的动态行为建模方法。进一步,本文基于开源项目开发了一个支持 a o 的原型工具,并通过案例研究展示a o m f 的有效性及其优点。 a o m f 中的面向方面建模元模型具有丰富的面向方面语义和语法表示机 制,能充分建模各种通用的面向方面概念,为a o m 提供了良好的结构。同时, a o 将软件的抽象程度提升到关注点层次,并以关注点分离为基本原则,确 保关注点在软件开发整个生命周期中的模块化,实现了各个阶段之间的平滑过 渡,使得软件易于理解、维护、扩展和追踪。 关键词:面向方面软件开发;面向方面建模;横切关注点;儿 i r e s e a r c h0 nu m lb a s e df r a m e w o r k0 f a s p e c t o r i e n t e dm o d e l i n g m 勾o r :c o m p u t e rs o 胁a r c 锄d1 1 1 e o d , n a m e : c h a n g l i u s u p e r v i s o r :x i a o c o n gz h o u a b s t r a c t a s p e c t o r i e n t e ds o f t 、v a r ed e v e l o p m e n t ( a o s d ) i san e wa p p r o a c ht om o d u l a r i z et h e c r o s s c u t t i n gc o n c e m so fs o f t w a r e a s p e c t - o r i e n t e dm o d e l i n g ( a o m ) i sa ne a e c t i v e w a yt oi d e n t i 瓢s e p a r a t e ,r e p r e s e n ta n dc o m p o s ec r o s s c u t t i n gc o n c e m s h o w e v e r ,a c o m p l e t ea n du n 讯e da r c h i t e c t u r ef o ra s p e c t o r i e n t e dm o d e l i n gh a sn o t b e e np m p o s e d y e t t h er e p r e s e n t a t i o n so fa s p e c t o r i e n t e dc o n c e p t si nm o s tc u r r e n ta o m 印p r o a c h e s a r en o tc o m p l e t e ,a n de s p e c i a l l yt h em o d e l i n go fa s p e c t - o r i e n t e dd y n a m i cb e h a v i o r s n e e d st ob em r t h e re x p l o r e d m o r e o v e r ,o n l yn o n f u n c t i o n a lc o n c e m sa r er e g a r d e da s c r o s s c u 位i n gc o n c e m si nc u r r e n ta o ma p p r o a c h e s ,b u t ,i nf a c t ,s c a t t e r i n ga n dt a n g l i n g c a u s e db yc o r e 如n c t i o n a lc o n c e m sa l s od e c r e a s et h eu n d e r s t a n d a b i l i 勺一e x t e n d i b i l i 劬 m a i n t a i l l a b i l i t ) ra n dt m c e a b i l i 够o fs o 胁a r e 7 r oa d d r e s st h e s ei s s u e s ,i n t h i s p 印e r , a 舭ra n a l y z i n gt h er e q u i r e m e n t so f a s p e c t o r i e n t e dm o d e l i n g ,am e t a m o d e lb a s e do nu m le x t e n s i o nm e c h a n i s mf o r a o mi sp r o p o s e d ,af r a m e w o r ko fa s p e c t o r i e n t e dm o d e l i n g ( a o m f ) w i t hu m l i s b u i l t , a j l das i m p l ea n df e a s i b l ew a yt om o d e lt h ed y n a m i cb e h a v i o r so f a s p e c t o r i e n t e ds o 肌a r ei sp r e s e n t e d f u r r t h e n n o r e ,ap r o t o t y p et o o l i sd e v e l o p e dt 0 s u p p o na o m f ,a n dac a s es t u d yi sp r e s e n t e dt od e m o n s t r a t et h ee a e c t i v e n e s sa n d a d v 锄t a g e so f a o m f w i t hr i c hs y n t a = k e sa n ds e m a n t i c s ,a o m fc 锄 r c p r e s e n t v a r i o u sc o m m o n a s p e c t o r i e n t e dc o n c e p t s a n dp r o v i d ew e l ls t r u c t u r e sf o ra o m t h ef r a m e w o r k u p g m d e sa b s t r a c tt oc o n c e ml e v e lw i t ht h eb a s i cp r i n c i p l eo fs e p a m t i o no fc o n c e m s , w h i c he n a b l e sm o d u l a n z a t i o no fc o n c e m st h r o u g h o u ts o r w a r el i f e c y c l e b e n e 行t i n g 舶mt h es m o o t ht r a n s i t i o n sa m o n ga l ls t a g e so fs o r w a r ed e v e l o p m e n t ,a o m fm a _ k e s t t t 中山大学硕士学位论文 基于u m l 的面向方面建模框架的研究与实现 i te a s yt ou n d e r s t a n d ,m a i n t a i n ,e x t e n da n d 仃a c es o 觚a r es y s t e m k e yw o r d s :a s p e c t o r i e n t e ds o 胁a r ed e v e l o p m e n t ;a s p e c t o r i e n t e dm o d e l i l l g ; c r o s s c u t t i n gc o n c e m s ;ih 沮, 原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独立进行研究 工作所取得的成果。除文中已经注明引用的内容外,本论文不包含任何其他个人 或集体已经发表或撰写过的作品成果。对本文的研究作出重要贡献的个人和集 体,均己在文中以明确方式标明。本人完全意识到本声明的法律结果由本人承担。 学位论文作者签名:刎呦 日期:洲年j月彦日 学位论文使用授权声明 本人完全了解中山大学有关保留、使用学位论文的规定,即:学校有权保留 学位论文并向国家主管部门或其指定机构送交论文的电子版和纸质版,有权将学 位论文用于非赢利目的的少量复制并允许论文进入学校图书馆、院系资料室被查 阅,有权将学位论文的内容编入有关数据库进行检索,可以采用复印、缩印或其 他方法保存学位论文。 学位论文作者签名:囱眵 日期:o z 水j 月彦日 jo 霞1 一 彩种虱吁 j 1 嫱 叫渺 中山大学硕士学位论文第一章引言 1 1 研究背景 第一章引言 面向对象范型是软件开发历史上最重要的贡献之一,它以认识论为基础,用 对象来理解和分析问题空间,并设计和开发出由对象构成的软件系统。面向对象 技术通过封装、继承以及多态等机制良好的实现了抽象、信息隐藏与模块化,使 得开发人员有效开发并控制大型复杂的系统成为可能。 然而,面向对象软件开发范型在封装和重用方面的能力并不能达到用户所期 望的理想程度。由于面向对象的设计与实现同需求规范在结构上难以匹配,当引 入某些新的需求时,增加的相关功能所影响到的对象数目往往是不可预测的,这 样便会增加系统演化的难度,同时也妨碍系统的可理解性、可重用性以及可追溯 性,因为这些功能与许多其它模块有着过度紧密的耦合。因此,面向对象软件开 发面临着两大严峻的问题:散射( s c a t t e r i n g ) 与缠结( t a n 鲥n g ) 1 1 。 当某个需求的设计细节或者代码实现在面向对象设计中散布到多个组件 ( 包、类或操作等) 中时,就会发生散射;如果某个组件( 包、类或操作等) 包含了 多个需求的设计细节或者代码实现时,就会发生缠结。 散射与缠结意味着模块化的不足【1 】。首先,单个需求的变更可能会造成类层 次的多处改动,使得软件维护成本极为高昂;其次,由于缠结的影响,处理单个 需求的设计细节或者代码实现时就必须处理与其交织的其他需求的设计与实现, 阻碍了软件的可理解性和可重用性;再次,根据可追溯性要求,软件制品之间的 影响方式应是明确的,换句话说,在已知对某制品变更时需要找到该变更所影响 到的设计与实现,很明显散射与缠结阻碍了软件的可追溯性。 为了解决这些问题并更好的遵循软件开发的关注点分离原则,美国x e r o x p a r c 研究中心在以往的研究基础上提出了面向方面编程( a s p e c t o r i e n t e d p r o g r a m m i n a o p ) 【2 】的概念。为横切关注点寻找模块化的表示,以及为横切关注 点编织开发相关机制是a o p 的主旨。它不仅提供了一种手段,可以将横切关注 点分离并模块化为方面,用以解决对象装配不良、难于处理的横切关系;同时也 中山大学硕士学位论文基于l m 的面向方面建模框架的研究与实现 提供了一种合成机制,使得在系统编译甚至是运行时将横切行为组合到预期的核 心组件中。因此,a o p 允许开发人员不受系统主要逻辑分解结构的支配并在松 散耦合的方式下对系统的横切部分进行编程,弥补了面向对象编程在处理散射和 缠结问题上的不足。 随着a o p 研究的深入与发展,学术界出现了面向方面需求工程 ( a s p e c t o r i e n t e dr e q u i r e m e n te n g i n e e r i n g ,a o r e ) 、面向方面分析与设计 ( a s p e c t o r i e n t e da n a l y s i sa n dd e s i g n ) 、面向方面建模( a s p e c t - o r i e n t e dm o d e l i n g , a o m ) 、面向方面重构与测试( a s p e c t o r i e n t e dr e f a c t o r i n ga n dt e s t i n g ) 等研究热 点,而对这些方面的研究促使了面向方面软件开发( a s p e c t o r i e n t i 甜s o d e v e l o p m e n t ,a o s d ) f 3 j 方法学的形成。 a o s d 是一种新的软件开发范型,它被用以寻找软件系统中新的模块化特 性。a o s d 是对面向对象软件开发方法的一种有益补充,它可以弥补面向对象软 件开发不能良好封装横切关注点的缺陷。a o s d 的首要任务【4 】是要通过识别、分 离、表示及合成等手段处理横切关注点,从而模块化横切关注点,局部化横切关 注点对软件结构的影响,实现各个模块之间的松耦合以提升系统的模块化程度, 进而提高软件的可维护性、可重用性、可追溯性,降低软件开发和演化的成本。 1 2 面向方面建模研究现状 近年a o s d 的一些研究工作【5 】【6 j 【刀表明横切关注点处理不当会降低软件的可 维护性、可追溯性,以及增加软件演化的成本等等,为了解决横切关注点给软件 开发带来的问题,必须在软件生命周期早期甚至整个软件生命周期中处理横切关 注点【8 】。而面向方面建模( a s p e c t o r i e n t e dm o d e l i n a o m ) 是面向方面软件开发的 核心,是在整个软件生命周期中识别、分离、表示以及组合横切关注点的最有效 手段。同面向对象建模与面向对象软件开发方法的关系一样,a o m 的基本目的 是寻求一种普遍适用的设计方法表达面向方面软件系统设计的特点并对系统的 横切关注点从较高的抽象层次上进行建模,从实现系统的分析、设计以及实现之 间平滑过渡,驱动面向方面软件开发的全过程。 目前,国内外学者提出了许多面向方面建模方法,例如p c sf r a m e w o r k 【9 1 、 a o g a 【1 0 】、c a m 【1 1 1 、1 1 1 e m e m l 【5 】【6 】、s t a t e 如la s p e c t 【1 2 1 、a o e m 等等。这些 2 中山大学硕士学位论文第一章引言 方法从不同的应用领域出发进行面向方面建模,不同程度的支持了横切关注点的 模块化。 其中,c 舢( c o m p o n e n t 锄da s p e c tm o d e l ) 是一种基于动态面向方面平台的 可视化体系结构描述语言( d a o p a d l ) ,提供了通用分布式应用服务以及a s p e c t 和组件的非入侵合成机制;t 1 1 e m e 舢m l 是基于主题( t h e m e ) 的扩展u m l 面向方 面建模,将方面表达为类并用模板参数( t e m p l a t ep a r a m e t e r s ) 和模式类( p a n e m c l a s s e s ) 扩展u m l 中模板的概念以实现动态行为建模,同时用绑定指定基t h 锄e 和横切t h e m e 之间的合成关系;p c sf r 锄e w o r k 与文献【1 4 】等工作则是对特定的 面向方面编程语言( 如a s p e c 忉提出的面向方面软件开发所需的建模方法;a o g a 将产生式编程( g e n e r a t i v ep r o g r a m m i n g ,g p ) 与a o p 同时应用于多智能体系统的 开发,并提出了一种面向方面的代码生成模型与方法。s t a t e f u la s p e c t 和a o e m 是对动态行为的面向方面建模,前者是基于支持状态方面( s t a t e f u la s p e c t ) 的a o p 语言j a s c o 【1 5 】的u m l 建模,采用状态机表示并建模横切的动态行为以及各行为 之间的交互;后者是面向方面可执行模型,它扩展了u m l 活动图,用活动图表 达方面中的a d v i c e 并加入动作语义以实现对动态行为的建模。 此外,o m a ra l d a 、u d 等人还提出了基于u m l 扩展机制的面向方面软件开 发p r o f i l e ( a o s dp r o f i l e ) 【1 6 】f 】7 】,将方面表达成类元并对一些基本的面向方面概念 元素进行了建模,同时指出了方面与类之间的关系。 面向方面软件开发正以日新月异的速度向前发展,作为面向方面软件开发核 心的面向方面建模必定会朝着统一的标准建模语言努力迈进,现今不同学者提出 的各种a o m 解决方案会延伸出统一的面向方面建模语言,从而为面向方面软件 开发注入强大动力。 1 3 存在的问题与研究动机 目前,学术界对面向方面建模的研究还处于初期阶段,a o m 为面向方面软 件开发提供了普适的设计方法和高效的抽象建模语言,不仅弥补了传统建模方法 无法表达a o p 相关概念以及无法处理横切关注点的缺陷,同时横切关注点的模 块化也使得软件可重用性和可维护性得到极大提升。但是,当前面向方面建模对 横切关注点的模块化大多数都是指诸如性能、安全、日志、事务等非功能的关注 3 中山大学硕士学位论文 基于i ,的面向方面建模框架的研究与实现 点与系统核心关注点的分离1 0 h 1 4 】【1 7 】 【2 0 1 ,而采用o o 分析和设计的系统功能性 关注点之间依然会出现设计和实现的散射与缠结。换句话说,a o m 需要解决的 并不仅仅是非功能性的横切关注点带来的问题,而是指整个系统的所有关注点之 间出现的散射与缠结问题。 在目前各种面向方面建模方法中,a o s dp r 0 6 l e 【1 刀是一个相对比较完整的基 于u m l 的扩展集,最重要的是它不局限于特定的应用领域和a o p 语言以达到 高层抽象建模的目的,具有一定的通用性。因此,这里选用a o s dp r o f i l e 方法 给出一个简单的a o m 示例。在银行系统中,主要有转账、记账和计算利息三个 基本特性,每一次对账户的操作都是对事务的处理过程,同时每一次对账户的操 作都应该写入日志。显然,事务和日志都是横切关注点,如图1 1 所示,a o s d p r o f i l e 采用a s p e c t 模块化这些非功能特性。 转 记 利 图1 1a o m 示例 从上面银行系统的建模实例可以看出a o s dp r o f i l e 至少存在以下不足: 1 模块化程度不足,关注点散射与缠结问题依然存在。a o s dp r o f i l e 考虑 的仅仅是非功能性横切关注点,却并不对核心功能模块中的散射和缠结 问题进行处理。上例中,转账、记账与利息三个关注点同时跨越多个对 象,且账户种类的实例( 如l o a n 等) 都包含了该三个关注点的设计和实现 细节,这种散射与缠结的存在严重阻碍了系统的可理解性、可维护性等。 4 中山大学硕士学位论文第一章引言 2 a s p e c t 与a s p e c t 之间的关联描述不完善。封装事务与日志的a s p e c t 具有 相同的连接点,也即t m a n a g e m e n t 与l o g g e r 横切于相同的位置,但是 a o s dp r o f i l e 却并未提供对横切行为之间的先后执行顺序的建模方法。 3 不支持静态横切。如果事务或者日志等非功能性需求的实现需要往其他 类中增加额外的属性或操作,将不能通过a o s dp r o f i l e 建模实现,但实 际上a o p 允许从外部修改原有类的结构。 以上可以说是目前a o m 中具有代表性的问题,各种a o m 方法都或多或少 的存在着类似的甚至是其他更多的问题。本文通过对当前各种a o m 方法的研究 与分析,归纳并总结出当前a o m 方法主要存在以下四种问题: 首先,目前的a o m 方法集中于处理非功能性横切关注点,而功能性关注点 仍然采用传统的建模技术,这样并没有解决系统所有关注点之间的横切特性带来 的散射和缠结问题。因此,关注点的分离程度和系统的模块化能力还有待进一步 提升。 其次,目前的a o m 方法大多关注面向方面软件开发过程中某些特定步骤, 对面向方面概念和关联的表达也不够完善,缺乏完整和统一的面向方面建模体 系。正如一些学者所指出的,许多a o m 方法都是通过扩展u m l 来表示某个特 定的a o p 语言( 如a s p e c t j ) 所提供的机制【9 】【14 1 。显然,不同语言会提供不同的 机制,因而这种方式难以建立完整的a o m 体系,也使得a o s d 的分析、设计和 实现阶段存在鸿沟和不一致性【8 j 。 再次,目前的a o m 方法对于软件分离出横切关注点之后,如何更好地建模 软件的动态行为仍需进一步完善,包括如何更好地描述横切关注点与主要关注点 的关系和横切关注点之间的关系,以及如何扩展u m l 的状态图、活动图或顺序 图以增加对横切行为的描述等。 最后,目前的a o m 方法大多没有合适的面向方面建模元模型,但实际上元 模型的完整性与可靠性直接决定建模方法的通用性及其建模质量。元模型能为建 模工作提供良好的元素结构以及丰富的语义描述机制。由于缺乏元模型的支持, 面向方面软件开发过程中往往会出现概念混淆或者描述不一致等问题,甚至不能 准确理解和表达各种面向方面概念,从而影响软件质量。 中山大学硕士学位论文基于l m ,的面向方面建模框架的研究与实现 1 4 主要研究思路与解决方案 1 4 1 抽象提升与关注点分离 程序设计范型的发展体现了人们对抽象提升与关注点分离的不断追求,通过 更高层次的分解和模块化来解决日益增长的软件复杂性。关注点分离( s e p a r a t i o n o f c o n c e m s ,s o c ) 是软件工程中一项长期确立的基本原则1 2 1 】,它不仅在现代编程 语言中得到了极大关注,同时在软件体系结构和设计中关注点分离也是重要的原 则之一。软件的发展与关注点分离原则紧密相关,从最初的基于机器或汇编的开 发到结构化程序开发,到面向对象软件开发乃至面向方面软件开发,每一次方法 论的进步都体现着关注点分离程度的逐渐提升。 面向方面软件开发采用先进的a o p 技术来分离关注点,并强调分离和组合 横切关注点,使得关注点成为软件开发过程中的头等实体。因此,当前面向方面 建模中存在的问题也应沿着关注点分离的思路去寻求解决方案,并将抽象程度从 对象或类层次提升为关注点层次,面向方面建模的整体框架也需要遵循并体现关 注点分离原则。其关键在于如何在面向方面建模过程中模块化各个关注点并描述 关注点彼此之间的关系,包括横切关注点与主要关注点之间的关系以及横切关注 点与横切关注点之间的关系。 关注点特别是横切关注点彼此分离意味着软件模块化程度的提高。这样,软 件开发的效率与软件质量得以提升而使得软件更易于重用,易于维护,易于演化。 1 4 2 关注点建模与面向方面建模的结合 关注点建模( c o n c e mm o d e l i n g ) 【2 2 】【2 3 】【2 4 1 是对关注点以及它们之间相互关系的 建模,使得作为头等重要实体的关注点具有与需求、设计、编码和其他软件构件 独立的表示机制。关注点建模描述和分析贯穿于软件开发生命周期和软件构件之 中的关注点,进而捕获各关注点是如何彼此相关的,以及如何或者独立或者全体 的被约束。因此,关注点建模外部化了关注点和它们关系与约束的抽象,使它们 能够作为软件头等实体被描述、分析和理解。这样便可依据关注点组织、分析、 管理和组合软件构件,从而帮助评定软件构件的完整性与一致性。 6 中山大学硕士学位论文 第一章引言 a o s d 着重考虑如何识别、表示、分离以及组合横切关注点,并模块化横切 关注点。由此可见,对关注点及其相互关系的描述、分析和理解应该成为a o s d 生命周期的一个基本部分,从而在面向方面建模过程中关注点也成了一个基本的 模型元素。关注点建模与面向方面建模结合,可是使得a o s d 更好的描述和组 织关注点单元以及彼此之间的横切关系,分离和模块化横切关注点。 1 4 3 解决方案 本文以抽象提升与关注点分离为思路,在面向方面建模中注入关注点建模思 想,为解决当前面向方面建模存在的问题构建出一个基于u m l 的面向方面建模 框架( a s p e c t o r i e n t e dm o d e 】i n gf 舢e w o r k ,a o m f ) 。这种相对完整和统一的建模 体系的基本特点主要有: 1 将抽象程度提升至关注点层次,使得系统所有关注点保持分离。a o m f 采用关注点建模思想,将关注点作为a o m 的一个基本模型元素,使用 关注点切片封装关注点特定的所有信息单元。对关注点的描述、分析以 及封装可以使软件更加模块化,易于重用和演化。 2 具有明确的面向方面建模需求。a o m f 通过对面向方面建模需求的分析, 提炼出通用的面向方面概念,以及在建模这些概念时应该遵循的基本约 束,而不局限于特定的应用领域和a o p 语言。 3 既对静态结构建模也对动态行为建模。a o m f 首先给出各元素的语义描 述及其可视化模型,然后扩展u m l 顺序图对动态横切行为进行建模, 简洁而清晰的展示了横切行为何时何处以及怎样影响着系统的行为。 4 面向方面建模具有元模型的支持。a o m f 以已得到的通用的面向方面概 念为基础,建立合适的面向方面建模元模型。该模型不受任何特定的 a o p 语言的限制,而且基于该模型a o m 可以准确的表达和建模各种面 向方面的概念。 实际上,a o m 的这四个特点正是对1 3 节中当前a o m 存在的主要问题的 具体解决方案。基于前面提到的问题,a o 首先将关注点看作贯穿生命周期 的头等重要实体以确保其在各阶段的分离,使得系统所有关注点都能封装为独立 的模块,然后从分析a o m 需求着手得到较为完善的面向方面概念集合,并采用 7 中山大学硕士学位论文基于u 咀。的面向方面建模框架的研究与实现 u m lp r o f i l e 扩展机制使a o m 获得元模型的支持。 1 5 研究意义 面向方面技术是一种正目益成熟的技术,是对面向对象技术的有益补充,它 根植于独立地对方面建模的思想。面向方面建模对a o s d 起着重要的作用,是 在整个软件生命周期中识别、分离、表示以及组合横切关注点的最有效手段,合 理的建模过程可以促使软件开发活动得以顺利进行与平滑过渡。 1 5 1 提高了面向方面软件开发的效率 良好的建模过程可以将问题划分为不同的主题域,提供问题求解的结构,同 时以标准化、可复用、易维护的方式表达主题域的有价值的专业知识。面向方面 建模语言是开发人员在分析、设计、实现等过程中高效地相互交流的工具,同时 也是软件维护和撰写文档不可或缺的助手。面向方面建模构建的模型与文档有利 于面向方面软件的评估、复杂性与风险管理等。在a o m 的有力支持下,面向方 面软件开发人员便能快速高效的开发出用户所需的系统。 1 5 2 提高了面向方面软件开发的质量 由于a o m 寻求一种通用的设计方法表达面向方面软件系统设计的特点并对 系统的横切关注点进行建模,所以它能有效的模块化横切关注点并保持彼此的分 离。近年面向方面设计的工作【5 】【6 l p l f l 9 】【2 0 】【2 5 1 已经证实了在软件生命周期早期部署 方面技术的价值,同时也说明了横切关注点处理不当会降低软件质量。a o m 解 决了横切关注点带来的散射和缠结问题,提升了软件的模块化程度,增加了软件 的可维护性、可重用性、可追溯性,以及降低软件演化成本等。而且,完整统一 的面向方面建模体系可从很大程度上解决a o s d 在分析、设计和实现阶段之间 的不一致性,从而实现各阶段之间的顺利过渡。 8 中山大学硕士学位论文 第一章引言 1 5 3 弥补了传统建模语言在a o m 上的不足 a o m 与a o p 的关系就像o o m 与o o p 的关系一样,由于u m l 是面向对 象的标准建模语言,因此它很自然的被尝试使用与a o m 。但是,u m l 等传统的 对象建模技术并不能将关注点建模为易于维护和理解的独立子模型而是在设计 阶段末期生成一个庞大的多重关注点混杂在一起的设计模型,现有的面向对象建 模工具也并不具备支持a o s d 的良好扩充能力。本文从切订l 元模型层次出发, 扩充u m l 元模型使其适应面向方面建模,同时开发出支持a o m 的原型工具。 扩充后的u m l 能充分表达通用的面向方面概念,是合适的面向方面建模语言。 1 6 论文结构 本文的结构安排如下: 第一章简要阐述了论文的研究背景、面向方面建模的研究现状、存在的问题 与研究动机、主要研究思路以及解决方案、选题意义等; 第二章介绍论文中需要用到的技术基础,包括a o p 、关注点建模、i m i ,体 系结构与扩展机制等内容; 第三章分析a o s d 中的建模需求,提炼出通用的面向方面概念,建立不受 限于特定应用领域和a o p 语言的面向方面建模元模型; 第四章实例化元模型,给出面向方面概念的i m ,规范与可视化模型,进行 面向方面静态结构建模和动态行为建模以构建完整的面向方面建模体系; 接下来的第五章介绍基于开源工具开发的一个支持面向方面建模原型工具 的设计与实现; 第六章为案例研究,以一个开源游戏项目为背景展示本文的a o m 框架的建 模过程,并从软件演化、维护、追踪以及扩展等方面分析该方法的优势。 第七章将本文的建模框架与相关工作进行详细的比较,是对a o m 框架的有 效评估; 最后,第八章总结全文并展望未来的工作,对本文的贡献和不足之处进行了 一定的探讨。 9 中山大学硕士学位论文基于u m l 的面向方面建模框架的研究与实现 第二章面向方面建模的技术基础 2 1 关注点建模 2 1 1 关注点与横切关注点 通常,学者往往将关注点与a o p 中的方面做类比,认为方面( a s p e c t ) 是关注 点的一种分类,作为程序属性的方面能对实现进行横切【2 6 】。这种定义着重考虑 程序的结构,并不能作为关注点的通用定义。o s s h e r 等人【2 7 】【2 8 】则将关注点定义 为软件单元,虽然不再局限于程序代码,但它的表示机制仍然不能独立于软件构 件。一种比较通用的定义则是:关注点是指那些与系统开发相关的兴趣点,或者 说是软件系统中任何感兴趣的事务【2 9 】,包括风险承担人所关注的任何重要的或 不重要的事情。它表明关注点是一种基础的概念,具有与需求、设计、编码和其 他软件构件独立的表示机制,但同时需求、领域模型或软件构件可以表示关注点, 也可以是关注点。 关注点分离是软件工程的核心原则与内容之一【2 1 1 。传统编程通常采用分解 技术来实现对关注点的有效分离与模块化。然而,软件系统中诸如日志、事务处 理、跟踪、权限等行为无法封装在单个模块中。这些行为通常完成系统的非功能 需求而不涉及系统的核心业务功能,像这样如果一个关注点的实现影响到多个组 件,那么这种关注点便是横切关注点,被横切关注点影响的关注点则是主要关注 点或核心关注点【3 0 】。 横切关注点是关注点的一种,由于它们分布于各个核心模块中容易造成散射 与缠结问题。j a c o b s o n 指出用例本身就是一种横切关注点【3 0 】,而用例却是系统关 注点的一种特殊形式。事实上,关注点本身就具备横切特性,因为关注点的设计 和实现细节往往涉及到多个组件。因此,后文若未特别说明,并不区别关注点与 横切关注点。 横切关注点影响着软件的可追踪性,使软件难于理解和重用,并带来巨额的 演化成本,如何处理横切关注点已成为当今软件工程领域需要解决的重要问题。 l o 中山大学硕士学位论文第二章面向方面建模的技术基础 2 1 2 关注点建模 关注点建模( c o n c e mm o d e l 抽g ) 【2 2 】【2 3 】【2 4 】是对贯穿于软件生命周期的关注点及 其相互关系的建模。它通过对关注点的描述与分析,寻求独立于软件构件的关注 点表示机制并捕获各关注点之间的关系与约束,使关注点能够作为软件的头等实 体被描述、分析和理解。 目前学术界对关注点建模的研究主要集中于超空间( h y p e r s p a c e ) 方法【2 7 】和 c o s m o s 模式【3 l 】。超空间方法认为数据或对象、特征等是不同维度的关注点,实 现了关注点的多维分离。它包括关注点的识别、封装以及组合三个过程。在超空 间方法中,超切片( h y p e r s l i c e ) 封装了关注点特定的所有信息单元,包括关注点设 计和实现时涉及到的属性、操作、类以及包等,它是系统关注点的模块化组件。 而c o s m o s 是一种通用目的的关注点建模模式,它通过关注点的分类、关系和谓 词对软件关注点空间建模。在c o s m o s 中,一个关注点代表了一种感兴趣的主题 或事物,它的设计和实现细节包含于相关的诸如需求分析、体系结构、设计和代 码等软件构件中。 关注点建模有许多潜在的应用领域,能增强传统开发任务。关注点建模建立 了与关注点相应的关注点模型,还提供了关注点组合机制,利于模块的集成与修 改等,提高了重用性。应用领域是基于对关注点的分析和理解,独立的关注点模 型使得对软件构件的完整性、一致性以及正确性分析成为可能,也可以通过分析 软件需求改变时带来的影响提高软件的可追溯性,易于维护与演化。 2 2 面向方面编程 为解决横切关注点的问题,由施乐公司p a r c 研究中心前首席科学家g r e 9 0 r k i c z a l e s 领导的一个研究小组于1 9 9 7 年欧洲面向对象程序设计大会( e u r o p e a n c o n f e r e n c eo no b j e c t o r i e n t e dp r o g r a m m i n g ,e c o 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 o p ) 【2 1 ,并开发了第一个a o p 编程环境a s p e c t j 1 1 。 中山大学硕士学位论文基于u 咀。的面向方面建模框架的研究与实现 2 2 1 基本概念 2 2 1 1 连接点( j o - np o i n t ) 与切入点( p o i n t c u t ) 连接点是程序结构或者执行过程中一个定义明确的位置,横切关注点的横切 行为通过a o p 编织器在该位置织入到应用程序中。连接点可以是方法调用、构 造函数调用、方法和构造函数执行、异常处理执行、类和对象初始化以及成员访 问等程序过程中的点。 切入点是一个连接点容器,是一组连接点的集合。它通过识别、捕获程序流 程中的连接点指明横切行为发生的时间与位置,从而在程序流中织入并执行预期 的横切行为。但切入点并不执行具体的功能,只提供了一种接口用来指定a s p e c t 如何与核心模块进行关联。 2 2 1 2 动态横切( d y n a m i cc m s s c u 埘n g ) 与静态横切( s t a t i cc r s c u 圳n g ) 动态横切和静态横切是两种不同的横切实现机制。动态横切绑定代码执行过 程中横切行为发生的位置、时间和内容等,为程序的执行过程织入新的行为。由 于动态横切增加甚至替代了程序的核心执行流,从而会改变系统的动态行为。如 果想在某个方法或异常处理执行之前织入某个横切行为,便需要通过动态横切来 实现。 静态横切则提供这样一种机制:它可以往系统的类、接口、a s p e c t 等元素中 增加新的数据属性、操作甚至是新的继承关系和接口实现关系。静态横切不会改 变设计元素原有的动态行为但可改变其静态结构,它的主要功能是为了支持动态 横切的实现。 2 2 1 3 通知( a d v i c e ) 与类型间声明( i n t e r 电p ed e c i a 阳t i o n ) 通知与类型间声明分别是动态横切和静态横切在程序代码中的逻辑单元。 a d v i c e 指定在切入点上将要执行的具体行为,以代码体的形式被定义在a s p e c t 中,它和切入点共同指定行为的横切规则。a o p 提供了b e f o r e 、a r 和a m u n d 三种横切规则,即在切入点之前、之后执行或替代切入点执行横切行为。 1 2 中山大学硕士学位论文第二章面向方面建模的技术基础 类型间声明允许a o p 从外部来修改类或a s p e c t 的静态结构,从而实现静态 横切。 2 2 1 4 方面l a s p e c t ) 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 定义了横切行为发生的主体、横切行为发生的条件以及横切行 为的内容,把切入点、通知和类型间声明封装在一起,实现横切关注点的模块化。 a s p e c t 与类有许多相似之处,都是程序语言的模块单元,可以拥有访问修饰 符以及自定义的数据属性和方法。此外,a s p e c t 还可以同类一样用继承来实现重 用,但两者本质上的不同在于前者是横切关注点的模块单元而后者则是核心关注 点的模块单元。 2 2 1 5 编织( w e a v l n g ) 与编织器( w e a v e r ) a o p 语言在实现时首先将横切关注点和核心关注点两种代码模块通过编织 规则( w :a v i n gr u l e s ) 组合在一起,然后将其转换为可执行代码。这个将单一代码 模块组合成整个系统的过程称作编织,而执行编织过程的处理器便是编织器。编 织器提供了按照a s p e c t 中切入点指定的方式自动调用a d v i c e 的搭配方式。编织器 可接受源代码或二进制形式代码作为输入。a s p e c t 的编织可以在以下时间发生: 编译时:编译时编织是在源代码级别上进行编织并生成字节码的过程,如果 o o p 编译器已经扩展到a o p ,那么a s p e c t 的编织就是标准编译的一部分,否则 就是编译后的步骤。 装入时:与a s p e c t 字节码的编译时编织相同,但是,是在类装入的时候进行 编织,编织的动作发生在字节码层次。 运行时:拦截和基于代理的机制提供了切入点匹配的手段,由虚拟机控制以 决定什么时候应当调用横切行为。 中山大学顺土位1 色戈 2 2 2a o p 核心思想 a o p 的主要r 标足为关注点寻求模块化的表示,并为关注点的编织开发相 关机制,它把核心的业务父注点和横叨关注点分离j 1 = 并分别封装在类和a s d e c t r f l ,然后经由编织器无缝编织成整个系统。a o p 提供了一套对横切关注点进行 描述、封装并将其组台到预期的核心功能组件中f 内完整机制,a o p 的开发办法 包括a s p e c t 分解、关注点实现、a s p e c t 编织i 个步骤。如图2 一l 所示,a o p 通 过识别封装等手段将系统需求分解为横切关注,r 专和核心关注点,然后分别实现各 天注点,最后通过a s p e c t 编织组合成最终的系统。 。- 一 多1 j _ 。 f q u i r e m e m s 、 、 。 。一。1 f i n a fs y s t e m a s p e c t u a i a s p e c t u a i d e c o m p o s n i o n r e c o m p o s n i o n 图2 1a o p 开发过程 a o pi ,门实现建立在0 0 p 基础l ,它并不足肘o o p 的取代,而是弥补o o p 固自的缺陷,解决了对象装配4 :良、难j 二处理的横切荚系。a o p 依据关注点分 离的原则将系统的横切关注点进行模块化,实现设计的延迟绑定,其开发出的松 祸合系统易丁理解、复用、维护与演化。 2 3 面向方面软件开发 a o s d 是围绕a o p 的发展而,虹生的贯穿需求、分析与设计、实现以及测试 等软什全过程的整体方法,它已成为当今最为前沿和热门的软件开发技术研究与 应用领域,也是一个将很快对人们的经济、生活和1 :作产生重大影响的新型技术 领域。 中山大学硕士学位论文第二章面向方面建模的技术基础 2 3 1a o s d 的目标与任务 a
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年中国真空泵制动器行业市场规模及未来投资方向研究报告
- 2025中国疾病预防控制中心人事处招聘工作人员笔试考试备考试题及答案解析
- 2026中国铁路呼和浩特局集团有限公司招聘高校毕业生1261人(二)考试笔试模拟试题及答案解析
- 2025中国华电科工集团有限公司部分基层企业社招16人笔试考试备考试题及答案解析
- 《电力安全事故调查报告编制指南》
- 2025年客运班线承包经营合同签订流程图解
- 福建泉州旅游攻略
- 2026年西安思源学院单招职业技能测试必刷测试卷附答案
- 2026年宁夏体育职业学院单招职业技能考试题库新版
- 2026年潍坊食品科技职业学院单招综合素质考试题库附答案
- 数控车床操作与编程课件
- 煤矿建设安全规范
- 辐照灭菌培训课件
- 2025年陕晋宁青卷历史真题解读 课件
- 2025年上海公务员考试(信息技术)历年参考题库含答案详解(5套)
- (2025年标准)船员合同协议书
- 中药涂擦操作技术
- 2025年衢州市xx乡镇“十五五”发展规划
- 健康管理发展历史
- 中医情志护理课件
- 船员机工面试题及答案
评论
0/150
提交评论