(计算机应用技术专业论文)面向方面软件体系结构动态演化方法研究.pdf_第1页
(计算机应用技术专业论文)面向方面软件体系结构动态演化方法研究.pdf_第2页
(计算机应用技术专业论文)面向方面软件体系结构动态演化方法研究.pdf_第3页
(计算机应用技术专业论文)面向方面软件体系结构动态演化方法研究.pdf_第4页
(计算机应用技术专业论文)面向方面软件体系结构动态演化方法研究.pdf_第5页
已阅读5页,还剩66页未读 继续免费阅读

(计算机应用技术专业论文)面向方面软件体系结构动态演化方法研究.pdf.pdf 免费下载

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

文档简介

面向方面软件体系结构动态演化方法研究 中文摘要 中文摘要 由于用户需求和计算环境频繁变化,导致软件复杂性和演化性不断增强。软件演 化是指软件进行变化以达到所期望形态的过程,主要分为静态演化和动态演化两种类 型。由于具有持续提供服务的优点,动态演化己成为目前软件工程研究的热点。 软件体系结构是影响软件演化效果的关键因素,而现存软件体系结构由于对非功 能( 横切) 属性关注不足,导致软件动态演化中关注点难以分离,软件体系结构不断退 化、甚至弃用,这无疑增加了动态演化的难度和成本。 为解决上述问题,本文将面向方面的思想引入软件体系结构中。在简述面向方面 软件开发方法基本概念、基本原则等背景知识的基础上,分析a o p 技术优势,将a o p 的概念引入到软件体系结构中,建立了面向方面软件体系结构( a o s a ) 核心模型; 以时序逻辑为基础,提出一种a o s a 各元素的形式化规约方法,为软件动态演化行 为的分析、推理及其验证奠定了基础。 针对系统运行期间,软件体系结构不可见、难以控制的问题,本文还提出一种基 于关注点分离原则,支持动态演化的、反射式面向方面体系结构r a o s a ;形式化定 义了a o s a 核心元素和一组基于e c a 的模式的演化规则和演化策略。 在上述工作的基础上,结合简单网上拍卖系统的应用实例,通过建立其r a o s a 元素的形式化规约,运用前面定义的演化规则和演化策略,说明提出的动态演化方法 是可行的和有效的。 通过上述研究工作,本文建立的a o s a 核心模型,将关注点分离原则贯穿于系 统需求到系统实现中,有助于系统保持一个清晰的架构,增加体系结构的弹性和复用 性;提出的支持动态演化的反射式架构r a o s a 和基于时序逻辑的a o s a 各元素规约 方法,有助于软件动态演化实现及其行为的分析、推理和验证。 关键字:面向方面软件开发;软件体系结构;关注点分离;动态演化;反射;横切 作者:李平福 指导老师:张广泉 a b s t r a c tr e s e a r c ho nd y n a m i ce v o l u t i o nm e t h o do f a s p e c t - o r i e n t e ds o r w a r ea r c h i t e c t u r e a b s t r a c t a ni n c r e a s i n gc o m p l e x i t ya n de v o l v a b l i t yo fs o f t w a r ei se n h a n c e da c c o r d i n gt ot h e u s e r s r e q u i r e m e n t sa n dc o m p u t i n ge n v i r o n m e n t s s o f t w a r ee v o l u t i o nr e f e r st ot h ep r o c e s s t h a ts o f t w a r ec h a n g e si t s e l ft oa c h i e v et h ea n t i c i p a n tf o r m ,a n di tm a i n l yd i v i d e di n t ot w o c a t e g o r i e s ,s t a t i ce v o l u t i o na n dd y n a m i ce v o l u t i o n o w i n gt ot h em e r i to fc o n t i n u o u s l y p r o v i d i n gs e r v i c e s ,d y n a m i ce v o l u t i o nh a sb e c o m eah o t s p o ti ns o f t w a r ee n g i n e e r i n g p r e s e n t l y s o f t w a r ea r c h i t e c t u r ei sak e yf a c t o ro fe f f e c t i n gs o f t w a r ee v o l u t i o n ,b u te x i s t i n g s o f t w a r ea r c h i t e c t u r eu s u a l l yn o tp a y se n o u g ha t t e n t i o n0 1 1t h en o n f u n c t i o n a l ( c r o s s c u t t i n g ) a t t r i b u t e s ,r e s u l t i n gi nt h ed i f f i c u l t yo fs e p a r a t i o no fc o n c e r n sa n dd e g r a d a t i o no re v e n a b a n d o no fs o f t w a r ea r c h i t e c t u r e ,i tm a k e sd y n a m i ce v o l u t i o no fs o f t w a r es y s t e mm o r e d i f f i c u l ta n dc o s t l y t oa d d r e s st h e p r o b l e m sa b o v e ,t h i s d i s s e r t a t i o ni n t r o d u c e st h ei d e ao f a s p e c t - o r i e n t e di n t o s o f t w a r ea r c h i t e c t u r e w i t has k e t c ho nb a s i cc o n c e p t s ,m a i n p r i n c i p l ea n da d v a n t a g ea n a l y s i so fa o p , i t sc o n c e p t s a r ei n t r o d u c e di n t os o f t w a r e a r c h i t e c t u r ea n dac o r em o d e lo fa s p e c t - o r i e n t e ds o f t w a r ea r c h i t e c t u r e ( a o s a ) i s e s t a b l i s h e d w ep r e s e n taf o r m a ls p e c i f i c a t i o no fa l la o s ae l e m e n t s ,w h i c hl a y st h e f o u n d a t i o nf o ra n a l y s i s ,d e d u c t i o na n dv e r i f i c a t i o no fd y n a m i ce v o l u t i o nb e h a v i o r s ,b a s e d o nt h et e m p o r a ll o g i c c o n s i d e r i n gt h en o n v i s i b i l i t ya n du n c o n t r o l l a b i l i t yo fs o f t w a r ea r c h i t e c t u r ea tr u n t i m e , i nt h i sd i s s e r t a t i o n ,ar e f l e x i v ea r c h i t e c u t u r er a o s ao fs u p p o r t i n gd y n a m i ce v o l u t i o n , w h i c hb a s e do nt h ep r i n c i p l eo fs e p a r a t i o no fc o n c e r n s ,i sp r o p o s e d ;k e ye l e m e n t so f a o s aa n dag r o u po fe v o l u t i o nr u l e sa n de v o l u t i o ns t r a t e g i e st h a tb a s e do ne c a p a n e r ni s f o r m a l i z e d b a s e do na l la f o r e m e n t i o n e dw o r k ,谢t l las i m p l ea p p l i c a t i o no fi n t e r a c ta u c t i o n s y s t e m ,t h i sd i s s e r t a t i o ne s t a b l i s h e st h ef o r m a ls p e c i f i c a t i o no fi t sr a o s af r a m e w o r k ;a n d w eu s et h ee v o l u t i o nr u l e sa n de v o l u t i o ns t r a t e g i e sd e f i n e da b o v et os h o wt h ef e a s i b i l i t y a n d v a l i d i t yo ft h ep r o p o s e dd y n a m i ce v o l u t i o nm e t h o d i i r e s e a r c h0 1 1d y n a m i ce v o l u t i o nm e t h o do f a s p e c t o r i e n t e ds o f t w a r ea r c h i t e c t u r e a b s t r a c t f r o mt h ea b o v e ,t h a n k st ot h ep e n e t r a b i l i t yo fs e p a r a t i o nc o n c e l n sf r o mr e q u i r e m e n t t oi m p l e m e n t a t i o n , t h ec o r em o d e lo fa o s ai nt h i sd i s s e r t a t i o ni sh e l p f u lt oi m p r o v et h e f l e x i b i l i t ya n dr e u s a b i l i t yo fs y s t e m ;t h er e f l e c t i v ea r c h i t e c t u r er a o s a a n dt h em e t h o do f a l la o s ae l e m e n t sb a s e do nt e m p r o a ll o g i ci sa l s oh e l p f u lt ot h ei m p l e m e n t a t i o no f d y n a m i ce v o l u t i o na n da n a l y s i s ,d e d u c t i o na n d v e r i f i c a t i o no ft h e i rb e h a v i o r s k e y w o r d s :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 m e n t ;s o f t w a r ea r c h i t e c t u r e ;s e p a r a t i o no f c o n c e r n s ;d y n a m i ce v o l u t i o n ;r e f l e c t i o n ;c r o s s c u t t i n g i i i w r i t t e nb yl ip i n g - f u s u p e r v i s e db yz h a n gg u a n g q u a r t 图表索弓面向方面软件体系结构动态演化方法研究 图表索引 图2 1 核心关注点与横切关注点之间的关系8 图2 2a s p e c t j 中方面概念之间的关系9 图2 3a o p 的基本流程10 图3 1a o s a 核心模型。13 图3 2 基础构件规约语法1 4 图3 3 方面构件的规约语法1 5 图3 4 方面连接件的规约语法1 6 图3 5 配置的规约语法一l 7 图3 6a o s a 规约语法17 图3 7 局域网用户访问控制系统的软件体系结构。1 8 图3 8 基础构件u s e r s 规约2 0 图3 - 9 基础构件r e s o u r c e s 规约2 1 图3 1 0 方面构件s e c u r i t y 规约2 l 图3 1 1 方面构件e x c e p t i o nh a n d i n g 规约2 2 图4 1 软件体系结构的核心模型2 7 图4 2 反射系统的基层和元层2 9 图4 3 反射与a o p 的关系3 0 图4 - 4a o s a 模型建立过程3 3 图4 5 支持动态演化的反射式架构r a o s a 3 4 图4 6c l i e n t s e r v e r 实例3 7 图5 1 网上拍卖系统的体系结构视图4 2 图5 2 网上拍卖系统异构方面构件示意图。4 7 图5 3 网上拍卖系统相互交织的方面构件5 4 表4 1 演化规则样例3 6 表4 2 演化策略样例3 6 表5 1 网上拍卖系统的核心关注点4 1 表5 2 网上拍卖系统的横切关注点4 l i v 苏州大学学位论文独创性声明及使用授权的声明 学位论文独创性声明 本人郑重声明:所提交的学位论文是本人在导师的指导下,独立进 行研究工作所取得的成果。除文中已经注明引用的内容外,本论文不含 其他个人或集体已经发表或撰写过的研究成果,也不含为获得苏州大学 或其它教育机构的学位证书而使用过的材料。对本文的研究作出重要贡 献的个人和集体,均己在文中以明确方式标明。本人承担本声明的法律 责任。 x 研究生签名:幺歪塑日期:匕拿:墨:! 学位论文使用授权声明 苏州大学、中国科学技术信息研究所、国家图书馆、清华大学论文 合作部、中国社科院文献信息情报中心有权保留本人所送交学位论文的 复印件和电子文档,可以采用影印、缩印或其他复制手段保存论文。本 人电子文档的内容和纸质论文的内容相一致。除在保密期内的保密论文 外,允许论文被查阅和借阅,可以公布( 包括刊登) 论文的全部或部分 内容。论文的公布( 包括刊登) 授权苏州大学学位办办理。 堕埘盘 名 ,名 戳 潞 蟋 瑾 魁 师 面向方面软件体系结构动态演化方法研究第一章绪论 1 1 研究背景及意义 第一章绪论 当今,计算机软件已经在社会各个领域中得到广泛的应用。特别是在i n t e r n e t 成 为主流的软件开发环境后,网络的开放性和动态性使得客户需求与计算环境频繁变 化,致使软件的变化性和复杂性不断增强,这就要求系统能够适应环境的变化,具备 软件演化( s o f t w a r ee v o l u t i o n ) 的功能。软件演化是指系统进行变化以达到所期望状 态的过程。软件演化分为静态演化和动态演化;静态演化是系统在停止运行的情况下 进行的演化过程,动态演化是指在系统运行期间的演化过程。 对于一些任务关键( t a s k c r i t i c a l ) 系统,通过停止、更新和重启而实现系统的维 护和演化,将带来不可接受的延迟、成本和危险。如电信交换系统、全球性的金融交 易系统、空中交通控制系统及高可信的公共信息系统等都必须以7 * 2 4 的方式运行, 同时需要不断演化以适应环境的变化和满足用户的需求,于是,它们只能在不停机的 情况下对系统进行扩展和升级。即使对于一般的商业应用软件,如果具有运行时修改 系统的特性,将大大提高系统的自适应性和灵活性,从而延长生命周期,提高企业竞 争力。可见,软件的这种运行时进行演化即动态演化的能力变得日益重要,且由于动 态演化具有持续可用性的优点,受到学术界和工业界的重视,成为当前软件工程界研 究的热点。 由于动态演化涉及状态迁移等技术,其技术处理难度比静态演化方法要大,而且 随着软件规模和复杂性的提高,这就决定了动态演化的研究应以软件体系结构 ( s o f t w a r e a r c h i t e c t u r e ) 作为切入点,避免过早地陷入繁琐的细节中。软件体系结构 从全局和整体的视角实现对系统构件、构件之间关系( 连接件) 和构件之间配置的抽 象描述,指出了系统需求和构成元素之间的对应关系,已成为软件开发过程中的核心 制品( s o f t w a r ea r t i f a c t s ) 1 1 】。 现存软件体系结构是以封闭、静态的环境为背景进行研究的,难以适应h a t e m e t 环境下开放、动态性的用户需求。由于其主要集中在对功能属性的模块化上,对非功 能( 横切) 属性的关注不足( 如安全性、持久性和日志管理等) ,使得其在软件演化 中的所有关注点难以分离,导致软件体系结构的不断退化、甚至弃用,这无疑增加了 第一章绪论 面向方面软件体系结构动态演化方法研究 软件演化难度和成本,也不利于系统的动态演化。面向方面编程( 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 o p ) 技术运用关注点分离原则,将核心功能和横切功能分别封装为构 件和方面,系统织入( w e a v i n g ) 机制决定在什么位置、什么时机把方面织入到构件 系统中,这种方式给软件演化带来了新的启示。本文在软件体系结构层次引入面向方 面编程的思想,即面向方面软件体系结构( a s p e c t - o r i e n t e ds o f t w a r ea r c h i t e c t u r e , a o s a ) ,能够实现关注点分离,将影响演化的横切关注点模块化,封装成方面,这 不仅增加了软件体系结构的弹性,也为系统更好地实现动态演化打下了良好的基础。 1 2 国内外研究现状 本文从软件动态演化的粒度和研究集中点出发,对国内外有关动态演化方法的研 究简述如下: ( 1 ) 基于过程或函数的动态演化方法 文【2 提出了一种称为p o d u s ( p r o c e d u r e - o r i e m e dd y n a m i cu p d a t i n gs y s t e m ) 的 面向过程的动态更新系统原型。它通过类装载机制实现新版本程序对旧版本程序的更 新,并且将对旧版本程序的调用映射到新版本程序。文【3 】使用一个基于高阶的类型 程序语言来进行运行时的变更。它要求程序员预测程序中可能发生变化的部分,并把 这部分以过程或函数的形式封闭以封闭变更。开发者把变化策略和变化范围都植入代 码中,因此允许在运行时对程序进行细粒度的控制。但是,由于变化策略并没有从执 行源代码中分离出来,单独地更改应用变得十分困难。 ( 2 ) 面向对象的动态演化方法 文【4 】指出动态对象技术集成了动态链接和动态更新能力,可用于解决软件运行 期间的演化问题。其中,动态对象技术包括以下特点:在不涉及源码的情况下进行 运行时刻重配置;能使用诸如反射、元数据和元对象协议等技术;在不中断系统 运行的情况下进行演化,即动态演化。d m i t r i e v 在文【5 】中将j a v a 程序的动态演化分 为四个阶段:只改变方法体实现;对c l a s s 文件兼容的改变;除了实例之外的 任意改变;任意改变。 ( 3 ) 基于连接件的动态演化方法 文【6 】提出了一种增量式的面向方面体系结构建模方法和称为a w c ( a s p e c t w e a v i n gc o n n e c t o r ) 的连接件模型,用a c m e a d l 描述方面、构件、a w c 及其复 2 面向方面软件体系结构动态演化方法研究 第一章绪论 合,在体系结构层次上支持软件动态演化。文 7 】通过抽取系统非功能性属性,作为 类似构件的一阶实体方面连接件,并用u m l 表示;用a o p 中切入点( p o i n t c u t ) 和 通知( a d v i c e ) 机制实现与构件间的交互以支持系统的自适应演化。文【8 】提出了一种 以连接件为中心的面向方面体系结构建模机制。以a w c 为连接件包装器,封装一般 构件( r e g u l a rc o m p o n e n t ) 和方面构件( a s p e c tc o m p o n e n t ) 的交互逻辑,以进程代 数c s p 作为其编织机制的语义基础。针对体系结构层中非功能关注点( 如安全性) 影响连接件复用的问题,文 9 引入面向方面开发方法,把非功能性关注点看作新的 方面实体,封装到通知中,建立了方面连接件模型,用扩展的a d l 进行描述,有利 于连接件的演化和复用,但对动态演化支持不够。 ( 4 ) 基于体系结构的动态演化方法 软件体系结构研究的主要成果表现在体系结构描述语言a d l 上。目前,用许多 已提出的a d l 书写的体系结构为系统的实现提供了良好的坚实基础。而软件体系结 构对动态演化的支持,主要表现在将动态配置功能集成在a d l 中,如d a r w i n 1 0 】, r a p i d e 11 】和d y n a m i cw r i g h t t l 2 】等。 文 1 3 】集成基于构件和面向方面软件开发( a s p e c t o r i e n t e ds o f t w a r ed e v o l o p m e n t , a o s d ) 的优点,提出了一个中间件模型p r i s m a ,并在n e t 平台上实现;该中间 件的体系结构使用p r i s m a a d l 进行描述,并利用其反射属性支持系统体系结构层 次的演化和重配置操作。在国内,北京大学梅宏等开发的遵循j 2 e e 标准的反射式中 间件p k u a s t l 4 】系统,采用了基于运行时软件体系结构( r s a ) 的软件维护和演化方 法。通过r s a ,系统的运行状态与行为以s a 的形式展现,且操纵该体系结构视图能 导致运行系统进行相应改变,这种因果关联通过反射式软件中间件实现。通过扩展传 统的s a 描述语言a b c a d l 描述r s a ,并使之具备继承设计阶段体系结构所富含语 义的天然能力。但由于a b c a d l 缺乏构件交互行为的形式化描述,在解决构件替换 时的可观察行为一致性和横切关注点方面还存在不足。为适应计算环境和用户需求在 系统运行期间的变化,满足动态演化的需求,南京大学吕建等也提出了一种面向动态 软件体系结构的在线演化方法【l5 1 ,设计并实现了一种运行时刻可见的体系结构原模 型,将原来运行时刻不可见的体系结构设计信息具体化为显式的体系结构实体,并与 系统实现及规约之间保持因果关联。元模型的演化可通过反射实现对运行系统的修改 和规约的更新,所有演化行为都在良定义的体系结构元模型的指导下规范地进行,保 证了演化前后系统的一致性、完整性和可追溯性。 第一章绪论面向方面软件体系结构动态演化方法研究 1 3 本文研究内容 软件体系结构是影响软件演化效果的关键因素,而现存软件体系结构主要集中在 对功能属性的模块化上,对非功能属性的关注不足,使得软件演化中的所有关注点难 以分离,导致软件体系结构的不断退化、甚至弃用,这无疑增加了软件演化难度和成 本,也不利于系统的动态演化。 由于面向方面编程能够实现关注点分离,将横切属性封装为方面,实现模块化, 可以解决由横切属性引起的问题,因而能增加软件体系结构的弹性,有利于系统的动 态演化。因此,本文在软件体系结构层面上引入面向方面编程的思想,提出了一种面 向方面软件体系结构时序逻辑规约方法。在此基础上,建立了一种面向方面软件体系 结构动态演化架构。具体的研究内容如下: ( 1 ) 简述面向方面软件开发方法,a o p 基本概念、基本思想等背景知识。分析 a o p 技术的优势,将a o p 的相关概念引入到软件体系结构中,建立了面向方面软件 体系结构( a o s a ) 核心模型。 ( 2 ) 以时序逻辑为基础,给出a o s a 各构成元素的形式化规约方法,为系统动 态演化行为的分析、推理及验证奠定了良好基础,通过局域网用户访问控制的实例的 描述来展示这种形式化规约方法。 ( 3 ) 分析系统运行期间,软件体系结构信息不可见、难以控制的特点,基于a o p 关注点分离原则,在a o s a 中引入反射机制,提出一种在运行时刻可见,支持动态 演化的面向方面体系结构r a o s a ;形式化定义了a o s a 核心元素和一组基于事件 条件动作( e v e n t c o n d i t i o n a c t i o n ,e c a ) 模式的演化规则和演化策略,以简单的 c l i e n t s e r v e r 实例验证了该方法的可行性和有效性。 ( 4 ) 结合简单网上拍卖系统的实例,建立其r a o s a 元素的时序逻辑规约,运 用基于e c a 的演化规则和演化策略,证明所提出的动态演化方法是可行的和有效的。 1 4 本文组织结构 本文其余各章内容组织如下: 第二章介绍了面向方面软件开发的相关概念、面向方面软件开发的研究现状,以 及面向方面编程的核心思想。 4 面向方面软件体系结构动态演化方法研究第一章绪论 第三章介绍了时序逻辑相关算子的语义,给出面向方面软件体系结构a o s a 核 心模型的组成部分,针对各构成元素,建立了其相应的形式化规约,并通过局域网用 户访问控制的实例的描述来展示这种形式化规约方法。 第四章在简述软件演化的定义、分类及动态演化的意义等的基础上,针对面向方 面软件体系结构动态演化面临的主要问题,利用a o p 关注点分离和计算反射的机制, 将运行时不可见、难以控制的体系结构信息显示表达,将系统的横切关注点模块化, 提出了一种在运行时刻可见,支持软件动态演化的、反射式面向方面体系结构 r a o s a 。 第五章实例研究部分。通过一个简单网上拍卖系统的应用实例,分离出其核心和 横切关注点,建立了其r a o s a 元素的形式化规则,运用基于e c a 模式的演化规则 和演化策略,证明了所提出的动态演化方法的可行性和有效性。 第六章对本文工作进行总结的基础上,分析研究工作中的不完善之处,提出了下 一步要进行的工作。 第二章面向方面软件开发概述面向方面软件体系结构动态演化方法研究 第二章面向方面软件开发概述 面向方面软件开发是由一系列新技术组成的,用以寻找软件系统中新的模块化特 性。其技术目标就是在整个软件生命周期中提供系统化标识、模块化和组合横切关注 点的手段。a o p 是a o s d 的一个重要组成部分。它成功解决了面向对象编程中的代 码散射和缠结问题。本章将简要介绍面向方面软件开发的相关概念,面向方面软件开 发的发展现状,以及面向方面编程的核心思想。 2 1 面向方面软件开发简述 面向方面编程的概念由g r e g o rk i c z a l e s 等人在1 9 9 7 年举行的欧洲面向对象编程 大会上( e c o o p 9 7 ) 首次提出。2 0 0 1 年3 月施乐公司p o l oa l t o 研究中心创建了 a s p e c t j i l 6 】,第一次成功实现将面向方面编程理论应用到实际的软件开发中。a o p 技 术的进步推动着a o s d 不断向前发展,a o s d 是由一系列新技术和方法组成,用以 寻找软件系统中新的模块化特性。当前对a o s d 的研究涵盖软件生命周期的多个阶 段,形成了面向方面需求工程、面向方面建模、面向方面编程、面向方面系统演化等。 ( 1 ) 面向方面需求工程 面向方面需求工程是采用a o s d 进行软件开发时的一种需求工程方法,是面向 方面软件开发的第一个步骤,其目的是为模块化和组合关注点提供新的抽象和组合机 制。范围宽广、频繁变化的需求和约束,为在需求层次进行方面化提供了良好的条件。 目前已经有了一些面向方面的需求工程技术,如a o c r e 17 1 、a o r e l l 扪、t h e m e 【1 明方 法等。 ( 2 ) 面向方面建模 面向方面建模( 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 o m 并没有得到很好的支持,缺乏统一的、标准的建模理论,也没有得 到相应建模工具的支持。事实上,这也是影响a o p 技术推广的重要原因之一。 ( 3 ) 面向方面编程 当前存在多种面向方面编程语言,例如:a s p e c t j 是一种基于j a v a 的方面语言, a s p e c t s 是对s m a l l t a l k 的扩展,a s p e c t c 是对c 语言的扩展。这些语言的不断出现有 6 面向方面软件体系结构动态演化方法研究 第二章面向方面软件开发概述 助于实现a o s d 的快速普及化。 ( 4 ) 面向方面系统演化 a o s d 非常适合于处理有关系统演化问题,实际上这也是a o s d 最常见的研究 动机【2 0 1 。在当前的系统演化研究工作中,动态演化( 在系统不停止运行的情况下支持 软件的变化) 是需要考虑的关键问题【2 l 】。目前组合过滤器【2 2 】和j a c 2 3 】( j a v a 方面构 件) 都能够支持动态演化。 2 2 面向方面编程 软件设计的一个重要原则,就是要清晰地分离出各种关注点( c o n c e r n ) ,一个关 注点就是软件需要解决的一个问题。面向方面编程是一种基于关注点分离的技术,成 功解决了面向对象编程中所存在的代码散射和缠结问题。在a o p 中,主要涉及以下 几个重要概念: 2 2 1 核心与横切关注点 关注点是软件设计中经常接触的重要概念,软件开发最重要的步骤就是要鉴别和 分离关注点,目的是减少处理的复杂性,使得软件设计达到若干工程质量指标,如系 统适应性,可维护性,可扩展性和可重用性等。鉴别关注点是一个过程,贯穿于软件 生命周期的各个阶段。 实际上,软件系统可以看作是关注点集合的实现。例如,一个简单的股票证券交 易系统就可以看作是这样一些关注点集合的实现:股票报价、账户管理、交易管理、 系统日志、事务处理和权限验证等。a o p 根据这些关注点的不同特征,将它们划分 为两类集合: ( 1 ) 核心关注点 核心关注点( c o r ec o n e m ) 是软件要实现的主要功能和目标,例如股票证券交 易系统中的股票报价、账户管理和交易管理。 ( 2 ) 横切关注点 横切关注点( c r o s s c u t t i n gc o n e m ) 是那些与核心关注点之间有横切作用的关注 点,例如系统日志、事务处理和权限验证。在当前的技术框架下,通常横切关注点在 逻辑上与核心关注点相互之间彼此正交,但在实现上却趋向于与若干核心关注点交 第二章面向方面软件开发概述 面向方面软件体系结构动态演化方法研究 织。例如系统日志就与股票报价、账户管理和交易管理相联系,如图2 1 所示。 2 2 2 基本概念 图2 1 核心关注点与横切关注点之间的关系 a o p 被证明能够更好地分离关注点,与o o p 相比,其软件模块化程度更高,软 件可重用性更好,克服了代码散射和缠结的弊端,更有利于系统的扩展和演化。目前 a s p e c t j 已经发展成为一种较为成熟的面向方面编程语言,并且已经获得j b u i l d e r 、 e c l i p s e 等主流j a v a 集成开发环境的支持。因此,本文选择a s p e c t j 来介绍a o p 的相 关概念。在a s p e c t j 中,基本的面向方面概念主要有横切( c r o s s c u t t i n g ) 、引入 ( i n t r o d u c t i o n ) 、连接点( j o i n tp o i n t ) 、切点( p o i n t c u t ) 、通知( a d v i c e ) 、方面( a s p e c t ) 等,它们之间的关系如图2 2 所示。 ( 1 ) 横切 在a s p e c t j 中,对于编织规则的实现称为横切,可以分为两类:第一类是在某些 明确定义的程序执行点上,定义附加操作及运行条件,被称为动态横切,其功能是在 执行程序中的特定点拦截并获得控制权。第二类是用横切方法改变已有对象类型的结 构或其编译时的表现,被称为静态横切。在软件项目中,动态横切的使用更为广泛。 ( 2 ) 引入 a s p e c t 可以有自己的方法和属性,i n t r o d u c t i o n 可以在a s p e c t 中添加新的属性和 方法,它们将根据需要直接影响或作用程序中原有的基础构件,并且在语法格式上完 全等同于类的方法和属性。 8 面向方面软件体系结构动态演化方法研究第二章面向方面软件开发概述 图2 - 2a s p e c t j 中方面概念之间的关系 ( 3 ) 连接点 连接点是构件应用程序执行过程中一个定义明确的位置,a s p e c t 将在这里横切核 心关注点。连接点可以是方法调用、构造函数调用、异常处理程序,或者程序执行过 程中的其它点。一个连接点本身没有多大用途,但是它会对那些与它有横切作用的构 件产生影响,当在构件应用程序执行过程中遇到该连接点时,切点就会被触发。 ( 4 ) 切点 切点是专门用来识别连接点并捕获连接点上下文的一种a s p e c t j 结构,是由一系 列连接点通过“与、“或 、“非( 即“& & 、“i 一“! ) 组成的。切点是一个连接 点容器,能够直接显示关注点是如何横切构件应用程序的。当构件应用程序执行到达 某个连接点时,p o i n t c u t 会被激活来执行该连接点的行为,然后相应的a d v i c e 就会在 此连接点处执行横切行为。 ( 5 ) 通知 通知表述了在切点所选定的连接点处要执行的横切行为,与o o p 中类的方法相 似。在大多数a s p e c t j 规范中,a d v i c e 代码可以在不同的地方执行:连接点之前 ( b e f o r e ) 、连接点附近( a r o u n d ) 和连接点之后( a f t e r ) 。但不论在哪种情况下,都 必须在所有的a d v i c e 代码执行前触发切点。 ( 6 ) 方面 a s p e c t 是面向对象范型的自然演进。在a o p 中,a s p e c t 是用来描述和实现横切 关注点的基本单位。在a s p e c t j 中,a s p e c t 为封装连接点、切点、通知代码提供了一 个方便的容器。 9 第二章面向方面软件开发概述面向方面软件体系结构动态演化方法研究 2 3a o p 基本思想 面向方面编程是一种关注点分离的新技术,其基本思想是通过分别描述系统中不 同的关注点及其关系,以一种松耦合的方式实现单个关注点,然后依靠a o p 环境的 支撑机制,将这些关注点编织成最终可执行的程序。 2 3 1a 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 代码和构件代码编织在一起,其一般步骤【2 4 】为: ( 1 ) 对需求规约进行方面分解 在此步骤中,主要是确定系统中哪些功能是构件必须实现的,即分离出系统的核 心关注点,哪些功能可以用a s p e c t 来封装的,即分离出系统中的横切关注点。 ( 2 ) 对标识出的构件与a s p e c t 通过相应的机制分别实现 在此步骤中,主要是利用相应技术分别实现系统的核心关注点和横切关注点。对 于系统中的构件,可以利用构件语言实现。如果采用的是o o p 语言,这些构件可以 是类;而如果是过程化语言,则这些构件可以是函数和a p i 。对于系统中的a s p e c t , 可以利用a s p e c t 语言实现。 ( 3 ) 用a s p e c t 编织器将所有单元编织成最终可执行的系统。 为构件语言和a s p e c t 语言构造相应的语法树,依据a s p e c t 中的连接点定义和编 织规则实现对语法树的连接,生成中间文件或目标代码。 综上所述,a o p 系统的基本流程可以用图2 3 说明。 图2 - 3a o p 的基本流程 1 0 面向方面软件体系结构动态演化方法研究第二章面向方面软件开发概述 2 3 2a o p 与o o p 比较 o o p 是a o p 的技术基础,a o p 是对o o p 的继承和发展。与o o p 相比,a o p 具有更多的优势。下面将分别从以下几个角度对两者进行比较: 从可重用的角度来讲,虽然o o p 以类机制作为一种抽象的数据类型,提供了比 过程化更好的可重用性,但o o p 中存在代码散射现象,使得有些代码很难被封装成 类,如日志管理、异常处理等,使得这些代码很难实现重用。而a o p 可以对这些代 码进行封装,使其被重用成为可能。 从易理解性和易维护性的角度来讲,由于代码缠结问题的存在,使得o o p 技术 在易理解性和易维护性方面都很难有较大幅度的提高。而采用a o p ,由于可以对横 切关注点进行封装,避免了代码散射和缠结现象的发生,从而有利于提高系统各个部 分的易理解性。另外,通过修改一个a s p e c t 就可以实现对系统多个相关构件的影响, 从而极大地提高了系统的易维护性。 从适应演化的角度来讲,所有有用的软件都会随着时间和空间的改变而演化,发 生演化的原因多种多样,这使得当前软件系统在适应演化上面临重大挑战。在系统演 化过程中,人们总是希望能够以一种非侵入的方式来实现对系统的改变或者在系统运 行期间实时改变系统,实现系统的动态演化。此时,如果采用o o p 技术,通常会通 过o o p 的封装、继承和多态的特性来实现软件系统的演化,然而这会导致对系统中 的已有的多个类进行修改和组合,很难做到系统以非侵入方式演化。而采用a o p 技 术,则可以仅通过扩展a s p e c t 或者是增加一个a s p e c t ,就可以使得系统中相关的部 分随之发生变化,而不需要修改系统已有的任何类,从而实现了系统较理想的演化。 2 4 本章小结 本章简要介绍了面向方面软件开发的一些发展情况,并结合实例介绍了其基本概 念、一般步骤及基本思想。面向方面编程是一种新兴而重要的编程技术,目前对a o s d 的研究也多数集中于此。面向方面编程技术的发展一直驱动着a o s d 不断向前,同 时对a o s d 规律的研究也会促进a o p 技术的更加合理和完善。 第三章面向方面软件体系结构时序逻辑规约方法面向方面软件体系结构动态演化方法研究 第三章面向方面软件体系结构时序逻辑规约方法 本章介绍了时序逻辑相关算子的语义,给出面向方面软件体系结构的核心组成部 分,针对各体系结构元素,提出使用方面构件明确描述系统的横切关注点,引入方面 连接件对构件间的复杂横切关系进行规约,建立了基于时序逻辑的整体规约框架;最 后以一个局域网用户访问控制实例的展示了所提出的形式化规约。 3 1 时序逻辑简介 时序逻辑是一种特殊的模态逻辑,它提供了定性描写和推理断言的真值如何随着 时间变化而改变的方法,由a p n u e l i 于1 9 7 7 年首先把它引入计算机科学中【2 5 1 。根据 时序逻辑语义模型的内涵不同分为两类:一种是线性时序逻辑( l i n e a rt i m el o g i c , l t l ) ,它把时间看成是一个线性序列;另一种是分支时序逻辑( c o m p u t i n gt i m el o g i c , c t l ) 它认为同一个时间有多种可能的将来。在后面的实例描述中,主要会使用线性 时序逻辑的四种时序算子,简单介绍如下: x p :假如p 在状态s 的下一个状态为真,则x p 在状态s 里为真,符号记为 “o 。 g p :假如在从s 开始的将来所有的状态( 包括s ) 里p 都为真,则g p 在状态s 为真,符号记为“口”。 f

温馨提示

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

评论

0/150

提交评论