(计算机软件与理论专业论文)自适应型动态软件构架模型的研究与设计.pdf_第1页
(计算机软件与理论专业论文)自适应型动态软件构架模型的研究与设计.pdf_第2页
(计算机软件与理论专业论文)自适应型动态软件构架模型的研究与设计.pdf_第3页
(计算机软件与理论专业论文)自适应型动态软件构架模型的研究与设计.pdf_第4页
(计算机软件与理论专业论文)自适应型动态软件构架模型的研究与设计.pdf_第5页
已阅读5页,还剩54页未读 继续免费阅读

(计算机软件与理论专业论文)自适应型动态软件构架模型的研究与设计.pdf.pdf 免费下载

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

文档简介

自适应型动态软件构架模型的砷f 究与设汁 自适应型动态软件构架模型的研究与设计 摘要 越来越多的应用系统正在使用基于构件和构架的软件开发方法,这为软件工 程提出了一些新的研究课题,比如怎样使构件、构架具有智能,可以在运行时根 据外界的变化而改变结构和行为,即动态软件演化。有很多应用系统已经从动态 软件演化中受益,包括可以实现动态软件升级的2 4 x 7 x 3 6 5 关键任务系统、能够 不在人工干预下进行自适应演化的门户网站系统等等。 本文在深入研究现有动态软件构架模型的基础上,针对当前软件系统,特别 是关键任务系统和网络分布式系统对构架动态演化能力需求的增加,提出了一个 动态软件构架模型f d s a m ,并对其的设计进行了详细的论述。它用层次化的方 法建模,引入了有五个层次的结构来描述构架模型,使用模型层描述构架的静态 结构,元模型层描述构架的动态行为,扩展了现有的构件一连接件模型,设计了 一套基于事务的安全演化协议,增强了演化的错误恢复能力。并利用 x m l s c h e m a 的良好扩展能力来描述自适应代码,分离服务代码和演化代码,增 加了构架的复用能力,而且设计了一个“事件一约束一行为”的白适应演化模式, 最后还给出一个在门户网站的实例来应用f d s a m 。 关键字 构架,动念演化,动态软件构架模型,自适应,元模型,事务,演化协议, 演化策略,自适应代码 5 - 复旦大学硕士学位论文 自适应型动态软件构架模型的研究与设计 a b s t r a c t c o m p o n e n ta n da r c h i t e c t u r eb a s e ds o f t w a r ed e v e l o p m e n ti sb e e na p p l i e do nm o r e a n dm o r ea p p l i c a t i o ns y s t e m ,w h i c hm a k e ss e v e r a ln e wr e s e a r c ht o p i c sf o rs o f t w a r e e n g i n e e r i n g ,s u c ha sh o wt og i v ec o m p o n e n to ra r c h i t e c t u r ei n t e l l i g e n c e ,a n dl e t s o f t w a r ea r c h i t e c t u r ec h a n g ei t ss t r u c t u r eo rb e h a v i o ro nn m n i n gt i m e ,w h i c hi sc a l l e d d y n a m i cs o f t w a r ee v o l u t i o n t h e r ea r ek n o w ns o f t w a r es y s t e m st h a tc a nb e n e f i tf r o m d y n a m i cs o f t w a r ee v o l u t i o n i n c l u d i n g2 4 x t x 3 6 5s y s t e m s t h a t r e q u i r eo n - l i n e u p g r a d e sa n da d a p t i v es y s t e m st h a tn e e dt oa d a p tt of r e q u e n tc h a n g e si nt h e i r e x e c u t i o ne n v i r o n m e n t b a s eo nt h ed e e p l yr e s e a r c ho fs e v e r a ld y n a m i cs o f t w a r ea r c h i t e c t u r e s ,t h i sp a p e r p r e s e n t sad y n a m i cs o f t w a r ea r c h i t e c t u r em o d e l - - f d s a m ,w h i c hi su s e dt os o l v et h e r e q u i r e m e n to fa r c h i t e c t u r ed y n a m i ce v o l u t i o na b i l i t yr a i s e db ys o m es y s t e m , e s p e c i a l l yb yc r i t i c a l b a s e ds y s t e mo rd i s t r i b u t en e t w o r ks y s t e m i ta l s og i v e sa d e t a i l e dd e s i g nf o rf d s a m sp r o t o t y p e i tu s e sl a y e rm o d e l i n gm e t h o d ,w i t ha f i v e - l a y e rs t r u c t u r et o d e s c r i b et h ew h o l em o d e l ,w h i l em o d e ll a y e ri sf o rs t a t i c s t r u c t u r ea n dm e t a m o d e ll a y e rf o rd y n a m i cb e h a v i o r i ta l s oe x t e n d st h ec u r r e n t c o m p o n e n t - c o n n e c t o rm o d e l ,d e s i g n i n gas e t o ft r a n s a c t i o n - b a s e ds a f e t ye v o l u t i o n p r o t o c o l w h i c hi m p r o v e st h em o d e l se r r o rr e c o v e r ya b i l i t y m e a n w h i l ei tu s e s x m l s c h e m aw h i c hh a sab e t t e re x t e n s i v ef e a t u r et od e s c r i b es e l f - a d a p t i v ec o d e ;t h i s m e t h o di s o l a t e dt h es e r v i c ec o d ea n de v o l u t i o nc o d et h a te n h a n c e st h em o d e l s r e u s a b l e a b i l i t y n a l s o d e s i g n s a n “e v e n t - - c o n s t r a i n t - - a c t i o n ”e v o l u t i o n m e c h a n i s m f i n a l l yi ti l l u s t r a t e di t sp r a c t i c ev a l u ew i t ha ne x a m p l eo nw e b - p o r t a l k e y w o r d s a r c h i t e c t u r e ,d y n a m i ce v o l u t i o n ,d y n a m i c s o f t w a r ea r c h i t e c t u r em o d e l s e l f - a d a p t i v e ,m e t a m o d e l ,t r a n s a c t i o n ,e v o l u t i o np r o t o c o l ,e v o l u t i o ns t r a t e g y s e l f - a d a p t i v ec o d e - 6 复旦大学硕士学位论文 自适应型动态软件构架模型的研究与设计 第一章引言 1 1 软件构架研究的起步与发展 2 0 世纪7 0 年代以前,尤其是在以a l g o l6 8 为代表的高级语言出现以前, 软件丌发基本上都是用汇编程序设计。尽管此阶段软件工作者开始逐渐形成模块 编程的方法,但是由于系统规模较小,很少明确考虑软件构架,所以一般不存在 软件系统的建模工作。 2 0 世纪7 0 年代中后期出现结构化软件开发技术,以p a s c a l 、c o b o l 等程序设 计语言和关系数据库管理系统为标志,以强调数据结构、程序模块化结构为特征, 采用自顶向下和单入口单出口的控制结构。此时,软件构架已经是系统开发中的 个明确概念。结构化程序中由语句构成模块,模块的聚集和嵌套又构成层层调 用的高层结构,整个构成结构化程序的构架。但是由于当时软件构架不是软件开 发的主要问题,也就没有开展深入的研究工作。 2 0 世纪8 0 年代初,面向对象开发技术逐渐兴起。其中,b o o c h 、c o a d y o u r d o n 、 o m t 和j a c o b s o n 的方法在面向对象软件开发届得到了广泛的认可。随着抽象数 据类型和面向对象技术的出现、对象的封装降低了模块间的耦合,为构件层次上 的软件复用提供了可能;此外类库的构造、分布式应用系统的设计等规模大、复 杂性高的系统都需要对软件构架进行研究。 2 0 世纪9 0 年代后,软件开发技术进入了基于构件的软件开发阶段。软件开 发的目标是软件具备很强的自适应性、互操作性、可扩展性和可重用性,软件开 发强调采用构件化技术和构架技术。此时、软件构架逐渐成为软件工程的重要研 究领域,并最终成为一门学科得到了业界的普遍认同。在基于构件和构架的软件 开发方法下,程序开发模式也相应地发生了根本变化。软件开发不再是“算法+ 数据结构”,而是“构件开发+ 基于构架的构件组装”。软件构架作为开发文档和中 间产品,开始出现在软件过程中。有研究人员认为,“未来的年代将是研究软件 构架的时代”。 从软件技术的发展过程可以看出,在各个时期,软件构架的问题实际上总是 存在的,但是它是随着软件系统的规模和复杂性的日益膨胀才逐渐表露,被人们 发现和研究的。从最初的“无构架”设计到今天的基于构架的软件开发,软件构架 技术仍存在诸多问题,如概念定义尚不统一、描述规范不能一致、无法提供动态 演化能力等,软件架构技术人有待于研究、发展和完善。 7 复旦大学硕士学位论文 自适应型动态软件构架模型的研究与设计 1 2 软件构架的定义 对于软件构架的定义,目前学术界尚未形成统一意见,不同学者有不同看法。 以下列举了一些具有代表性的定义: 1 ) b o o c h & r u m b a u g h & j a c o b s o n 定义:软件构架= 组织,元素,子系统, 风格) 。构架是一系列重要决策的集合,这些决策与以下内容相关:软件 的组织:由元素和子系统组成;元素:包括构成系统的结构元素和结构 元素间相互协作中表现出来的行为元素;子系统:由结构元素和行为元 素进一步组合构成;体系结构风格:引导这一软件组织方法。 2 ) b a s s 定义:软件构架是系统的一个或多个结构( s t r u c t u r e ) ,包括软件构 件( c o m p o n e n t ) 、构件的外部可见属性( p r o p e r t i e s ) 和构件之间的关系 ( r e l a t i o n s h i p s ) 。这个定义有以下含义:首先构架定义了构件,构架是描 述构件间如何相互交互,而略去构件自身的描述信息。其次明确指出系 统可以包含多个结构,但其中没有任何一个是可以被单独称为构架的。 最后指出了每一个软件系统都有一个构架,因为每个软件系统都是由若 干构件及其之间的关系构成的。 3 ) g a r l a n & s h a w 定义:软件构架= 构件,连接件,约束,。其中,构件 ( c o m p o n e n t ) 可以是一组代码也可以是一个独立的程序。它们或足结构 相关或是逻辑相关。构件相对独立,仅通过接口与外部相互作用,可作 为独立单元嵌入到不同应用系统中。连接件( c o n n e c t o r ) 可以是过程调 用、管道、远程过程调用等,用于表示构件之间的相互作用。它是构件 的粘合剂,把不同的构件连接起来构成构架的一部分。约束一般为构件 连接时的规则,或指明构件连接的势态和条件。 舢p e r r y w o l f 定义:软件构架= 元素,形式,准则) 。软件构架是一组 具有特定形式的体系结构元素( e l e m e n t s ) 。这组元素分为三类:处理元 素( p r o c e s s i n ge l e m e n t s ) 负责完成数据加工;数据元素( d a t a e l e m e n t s ) 作为被加工的信息;连接元素( c o n n e c t i n ge l e m e n t s ) 用于把构架的不同 部分组合连接到一起。软件构架形式( f o r m ) 由专有特性( p r o p e r t i e s ) 和关系( r e l a t i o n s h i p ) 组成,专有特性用于限制构架元素的选择,关系 用于限制构架元素组合的拓扑结构。而多个构架方案中选择合适的构架 方案往往基于一组准则( r a t i o n a l e ) 。 5 ) s o n i & n o r d & h o f m e i s t e r 定义:软件构架至少有四个不同的具体形态, 每一个形态都从不同的角度来描述系统。概念构架( c o n c e p t u a l a r c h i t e c t u r e ) 用主要设计元素和他们的相互关系来描述系统。模块互连 构架( m o d u l ei n t e r c o n n e c t i o na r c h i t e c t u r e ) 包含两个正交的结构:功能分 - 8 复旦大学硕士学位论文 自适出型动态软件构架模型的研究与设计 解和分层。执行构架( e x e c u t i o na r c h i t e c t u r e ) 描述了系统的动态结构。 代码构架( c o d ea r c h i t e c t u r e ) 描述了开发环境中的源程序、二迸制代码 和函数库等是怎样被组织的。 6 ) b o e h m 定义:软件构架= f 构件,连接件,约束,不同人员的需求,准 则 。其中准则能够说明由构件、连接件和约束所定义的系统在实现时是 如何满足系统不同入员需求的。 7 ) i e e e6 1 0 1 2 1 9 9 0 软件工程标准词汇中的定义:软件构架= f 构件,连 接件,环境,原理 。构架是以构件、构件之间的关系、构件与环境之间 的关系为内容的某一系统的基本组织结构以及指导上述内容设计与演化 的原理( p r i n c i p l e ) 。 本文中使用g a r l a n & s h a w 的定义:软件构架= 构件+ 连接件+ 约束。 下面罗列本文后面章节用到的一些其他概念定义1 2 】【3 】: 1 ) 构件( c o m p o n e n t ) :是一个独立发布的功能部分,可以通过它的接口访 问它的服务【4 l 。构件负责实现应用程序的行为,我们可以把它的内部结 构看作一个黑盒。从程序设计角度,构件可以看作是模块、类、对象或 者一个相关功能集合。对于构件,至少需要描述如下一些相关特性,如; 接口特性、运行特性、关联特性、动态特性。对构件内部的限制条件越 少,就越容易使用一些现成的构件。构件需要封装相应的一些复杂的功 能,保持其内部的状态信息,为了支持构架的动态演化,至少需要提供 一些动态链接、初始化的功能。构件之间不应该通过直接引用来交互, 而需要利用连接件。 2 ) 连接件( c o n n e c t o r ) :是规范构件间交互行为和约束关系的构件单元。构 架研究者对于连接件在构架模型中所处地位的分歧很大,不少人甚蛩怀 疑将连接件作为构架的首要模型元素的必要性,因此不少构架描述语言 只提供隐式连接件,如d a r w i n ,c h a m 等。对多种大型的现实系统构 架结构的研究与比较,显式连接件通过封装组件的大量有关内部通信和 位置信息,如:通信接受者的数目和身份、选择消息接受者的策略、通 信实现技术的选择、构件合成的构架限制等细节,能有效地避免大量的 通信零星的散乱在各种组件之间的混乱状态,从而大大增强系统的可移 植性、透明性、分布性和可扩展性,提供了支持软件构架动态改变与重 新配置能力。同时,连接件也是用来封装需求变更策略,使之独立与特 定应用的重要实体。 3 ) 端口( p o n ) :连接件与构件之间的交互端点称为端口。端口封装了很多 有关交互的细节,例如消息队列的维护等等。 - 9 - 复旦大学硕士学位论文 自适应型动态软件构架模型的研究与设计 4 ) 连接( 1 i n k ) :端口与端口之间的联系称为连接,连接封装了相连的两个 端口相应位置信息,为通信双方进行定位。实现连接需要两个方面的支 持:一是连接得以发生和维持的机制,一是连接必须正确、无二义、无 冲突。 5 ) 接口( i n t e r f a c e ) :描述了一系列端口的集合,表述了一个组件或者连接 件对外提供的服务或者请求的服务的端口集合。 6 ) 约束( c o n s t r a i n t ) :是指构件和连接件之间的某种拓扑结构。构件、端口、 连接件、连接等构架组成元素遵循的某种组成构架拓扑结构的规则集合, 即为约束。约束描述了构件之间,构件与连接件之间,以及连接件与连 接件之间的组成关系和必须满足的条件。构架的约束与该构架可理解性、 动态演化能力密切相关。 7 ) 风格( s t y l e ) :代表相关系统的产品族。一个构架风格定义了设计元素类 型和组成系统的规则。例子包括基于p i p e s a n d f i l t e r s 的数据流构架风 格,基于共享数据空间和知识资源的黑板构架风格和分层系统。一些构 架风格额外地描述了一个框架作为一套结构化的专门应用程序必须遵守 的形式。 1 3 使用软件构架的意义 软件构架是软件系统高级抽象,往往体现了系统开发中最早做出的决策。软 件架构是决定系统能否顺利实现的关键因素之一,不当的构架会给整个系统带来 灾难性的后果,这主要体现在以下方面【l l : 1 1 对于系统分析的意义:在系统分析阶段,软件构架发挥着巨大的作用, 一方面借助软件构架描述,可以使问题得以进一步抽象,使整个系统更 易于被系统分析设计人员把握,更清晰地认识系统,完善对系统的理解。 另一方面它能够帮助软件系统的各有关权益方( 用户、项目管理人、设 计开发和测试人员等) 形成统一认识,互相交流。 2 1 对软件开发的意义;软件构架代表了系统早期的设计决策,与开发、设 计、编码和运行维护相比,处理难度最大,对系统生命期的影响也最大。 软件构架是系统实现的基本约束,决定了整个软件开发过程中的基本框 架。软件架构对软件质量控制也有重要作用,使用软件架构的一些评估 技术( 如s a a m ) ,对软件架构加以分析,能够对软件的某些质量特性 加以预测。 3 ) 对软件复用的意义:复用是提高软件开发效率、保证软件质量的重要手 段。软件构架级的复用意味着构架的决策能在具有相似需求的多个系统 中发生影响,这比代码级的复用要有更大的好处。通过对构架的抽象可 1 0 复旦大学硕士学位论文 自适应型动态软件构架模型的研究与设计 以使设计者能够对一些实践证明有效的构架进行复用,从而提高设计效 率和可靠性。同时软件架构复用有利于形成完整的软件生产线。 4 1 对系统演化的意义:在软件系统的演化过程中,维护人员需要不断进行 调整、修改、增加新的功能或构件等工作,软件构架决定着系统构件的 划分和交互方式。一方面,在设计系统的构架之初,就应当充分考虑到 将来可能的系统演化;另一方面,在进行系统演化阶段的开发时,由于 构架充分地刻画了当前系统,清晰地描述了构件及其相互关系和整个系 统的框架,所以应当充分利用。软件构架承担了“保证最经常发生的变动 是最容易进行的”这一重担。 1 4 论文的组织结构 本文的第一章是引言部分,主要介绍软件构架研究的相关背景以及一些基本 概念定义。第二章是介绍动态构架模型的相关技术、概念如:构架动态演化的定 义、使构架具有动态演化能力的方法等,同时对现有的动态构架模型进行了介绍 与分析总结,并在此基础上阐述了研究f d s a m 的意义与应用价值。第三章主要 介绍了f d s a m 的总体设计、整体结构框架、基本运行流程使用的相关技术,同 时阐述了与其它支持构件开发的工具之间的接口连接,包括与基于构件的配置管 理工具和构件组装工具直接的联系。第四章则是对f d s a m 的三个关键技术:多 层次模型架构、基于事务的安全动态演化协议和自适应动态演化,逐个进行详细 设计,是论文的核心部分。第五章通过一个简化w e bp o r t a l 实例,阐述了f d s a m 的应用以及如何支持系统的动态演化、展示了f d s a m 在基于构架的软件开发过 程中扮演的重要角色。第六章是对全文研究进行总结并展望未来的研究方向。最 后足参考文献与致谢。 1 1 复旦大学硕士学位论文 自适应型动态软件构架模型的研究与设计 第二章动态软件构架模型的研究 2 1 软件构架的动态演化技术 软件构架是整个应用程序的基础,虽然是在应用早期设计的,但是在应用的 各个阶段都会随着需求的变化而变化,甚至可能发生在应用的运行阶段。根据上 面对构架的定义研究学者又引入了动态软件构架,动态软件构架( d y n a m i c a l s o f t w a r e a r c h i t e c t u r e ) 是指可以在运行时改变结构或者行为的软件构架,而这种 特性通常又被称为动态演化( r u n t i m ee v o l u t i o n ) 。基本的动态演化有构件和连接 件的增加、删除、替换和重连接等i 5 1 。 动态软件构架可以分为两类:适应型( a d a p t i v e ) 和自适应型( s e l f - a d a p t i v e ) , 适应型构架需要人工干预,根据环境的改变手工调整构架的组成和行为,如构件 动态升级,对于适应型构架一般需要构件和连接件是可适应的。自适应型构架通 过事先编写演化代码使构架能够对环境做出适应,自动进行演化,对于自适应型 构架,它的演化代码一般与构件的服务代码分离,可以增加构件的复用性。 动态软件构架的优势f 5 1 ,一是降低成本和风险,在一些以任务和安全为主要 因素的系统,如公共信息系统,使用动态软件构架,在运行时改变结构可以减少 由于改变带来的成本,同时也因为不需要离线而降低了风险:二是增加定制来扩 展构架的能力,很多使用了动态演化的系统都能够提供给用户即时改变系统与用 户之间交互功能的能力。正因为动态软件构架有其优势,如何使构架具有动态演 化能力成为研究热点,选取何种动态演化技术成为关键,以下列举了几类典型的 动态演化技术6 1 : 1 ) 基于硬件的技术:主要应用于软件动态升级服务,使用多个冗余硬件设 备,当主设备上的软件需要升级,则启动从设备代替主设备运行,主设 备停止运行,升级后恢复。 2 1 基于过程的技术:通过形式化的描述应用系统在整个运行过程中的状态, 建立系统的状态机模型,系统每一次的演化都可以对应于状态机模型的 一次状态迁移。它的优势是可以形式化的描述动态演化的过程,是一种 适用于程序语言级别的方法。 3 1 基于构件的技术:这种方法首先假设系统是由构件组成的,构件与构件 之间通过连接件相互通信。在这样的系统中通过使构件自身具有动态演 化能力,即构件不仅提供服务而且提供动态演化的方法或者接口。这种 技术的优势在于在具有动态能力的构件支持下,无需增加其他工作。 4 ) 基于构架描述语言的技术:构架描述语言是对构件组成系统的拓扑结构 1 2 复旦大学硕士学位论文 自适应型动态软件构架模型的研究与设计 进行描述,它不牵涉到任何构件自身信息。这种技术是通过对构架描述 语言增加动态描述部分,通过语言来定义构件和构件之间是如何互操作, 构件是如何被替换的等等,用这样的手段来达到动态演化。典型的构架 描述语言有c 2 、d y n a m i cw r i g h t ,d x a d l 等。 5 ) 基于模型的技术:这类方法是通过建立一个构架模型,并使用这个模型 来控制构件行为,控制构架的结构改变和行为演化。一般这类方法总是 会选择一个领域与领域建模方法结合来建立构架模型,典型的模型有 c h e m 、k - c o m p o n e n t s 等。 通过上面的介绍和当前软件开发方式的现状( 越来越多的应用系统都在逐步 使用构件化的开发方式) ,我们不难看出基于构件,基于构架描述语苦和基于模 型这三类动态演化技术能够适合于软件构架。在下面的章节中我们分别对这三种 方式作介绍和比较,同时阐述本文的研究动机和意义。 2 2 构件模型的研究 为了使软件演化能更方便,同时降低软件开发的成本,研究人员提出了一种 开放结构的模型称为基于构件的模型c b m ( c o m p o n e n tb a s e dm o d e l ) 1 7 ,因为 c b m 高度的功能封装性和灵活的通信接口,使得我们可以很方便的扩展新的功 能或者改变它的结构。c b m 有两个非常重要的特性: 1 ) 构件在抽象结构和实现上的一致性:在c b m 中,当我们设计了构件的 抽象结构以后,往往就可以马上获得它的实现,结构到实现的转化非常 方便快捷,反之亦然。这就使得构件结构上变化无论发生在构件的抽象 层还是实现层都能很容易得在另一层得到反映。 2 1 单个构件的功能扩展对系统中其他构件的影响相当少:因为构件具有高 度的功能封装性而且有设计良好的对外通信接口,这使得构件如何提供 服务和如何实现服务完全分离,一个构件的扩展对于系统中其他构件丽 言是透明的,其他构件不需要改变其原有的与之通信的接口。 2 2 1 现有的构件模型 c b m 的这两个特性使之成为新一代开发方法中的核心元素,也为软件的动 态演化提供了可能,同时c b m 也是在现在很多应用中使用较多的设计模型:最 成功的几个c b m 的实现有:e j b ,c o r b a 和c o m + ,它们都对分布式应用有 很好的支持。下面对这几个模型作简单的介绍和评价f 8 】: 1 1 e j b ( e n t e r p r i s ej a v e b e a n s ) e j b 不是一种“产品”,而是为开发和使用基于事务的分布式对象应用的服务 3 一复旦大学硬士学位论文 自适应型动态软件构架模型的研究与设计 器端构件而定义的一种技术规约。该规约能提供一个标准的、分布的、基于o o 的体系结构:能屏蔽复杂的系统级功能需求:能兼容c o r b a 标准;具有与非j a v a 应用之间的互操作能力。最新的e j b 规约2 1 版本中加入了对w e bs e r v i c e 的支 持【9 o 2 1c o r b a 构件模型( c o r b ac o m p o n e n tm o d e l ,简称c c m ) c c m 是一种用来构建和部署c o r b a 应用程序的服务器端构件模型,其设 计思想比较类似于e j b 。和e j b 一样,c c m 采用了流行且已经受检验的设计模 式,并标准化了使用方法,从而使得大量的代码生成以及系统功能的实现由容器 提供者而不是应用程序自己来完成。c c m 的体系结构主要包括以下几个部分: 抽象构件模型,构件实现框架( c o m p o n e n ti m p l e m e n t a t i o nf r a m e w o r k ,简称c i f ) , 构俐:的包装、组装和部署,构件容器框架和与e j b 的结合等。 3 1 c o m + ( c o m p o n e n to b j e c tm o d e l + ) c o m + 是n e t 构架中的一部分,是一种中间件技术的规约,其要点是提供建 立在操作系统上的、支持分布式企业级应用的“服务”。一种观点认为c o m + = c o m d c o m + m t s 。c o m 是微软提出的第一个构件模型,起源于o l e ( o b j e c t l i n k i n ga n de m b e d d i n g ) ,它定义了客户与构件之间操作的标准,包括规约与实 现两部分。规约部分定义了构件之间的通信机制,不依赖于任何特定的语言和操 作系统。实现部分即c o m 库,为c o m 规约的具体实现提供一些核心服务。d c o m ( d i s t r i b u t e dc o m ) 用网络协议来代替本地进程之间的通信,并针对分布式环境 提供了一些新的特性,例如位置透明、网络安全性、跨平台调用等。m t s ( m i c r o s o f t t r a n s a c t i o ns e r v e r ) 是为分布式企业应用提供了一种服务器端的构件运行和部署 环境。c o m + 技术为c b s d 提供了基础。它的核心是改进的c o m ,d c o m 和m t s 的集成,但是c o m + 增加了一些非常重要的构件服务,比如负载平衡、驻留内存 数据库、事件模型、队列服务等,它还提供了一个比m t s 更好的构件管理环境 c o m + e x p l o r e r ,用来设置c o m + 应用和c o m + 构件的属性信息。另外,c o m + 还支持所谓的申述式编程模型( d e c l a r a t i v ep r o g r a m m i n gm o d e l ) ,允许开发人员 以较通用的方式开发构件,而一些细节则留到部署时再确定。 从上面的介绍我们发现这些构件模型的一些共同特点,首先,功能代码或者 说业务逻辑都被很好的封装在构件实体中,其次,都支持分布式系统应用,最后, 它们都需要有一个容器或者说管理者来控制它们的行为。但是这些构件模型本身 不具备动态演化能力。 2 2 2 ,如何使构件成为动态构件 使用具有动态构件是使系统可以动态演化的方法之一( 前文已有介绍) ,本 1 4 复旦大学硕士学位论文 自适应型动态软件构架模型的研究与设计 节介绍几种是构件具有动态演化能力的方法【l o 】 1 ) 运行时查找表:通过在运行时生成一张表格,表格中的每一项是条件与 服务对,在系统运行时,构件通过对表格的查询,根据不同的条件动态 选择服务。缺点是需要牺牲额外空间和查找时间。 2 ) 运行时代码修改:需要构件能够再细分成为更小的模块,每个模块提供 一定的功能,构件在生成时不需要载入所有模块,可以在运行时动态地 连接,类似动态连接库( d y n a m i cl i b r a r yl o a d ) 技术。 3 ) 载入时代码生成:在生成一个构件实例时产生实际运行代码,通过在运 行时产生不同的构件实例来实现动态性。j v m 是一个典型的应用。 上述方法可以使构件具有动态演化能力,典型的代表是f r a c t a l 构件模型1 1 1 : 它是一种基于构件( c o m p o n e n t ) ,接口( i n t e r f a c e ) 和名字( n a m e ) 的模型。每 一个f r a c t a l 构件有两部分组成:内容( c o n t e n t ) 和控制器( c o n t r o l l e r ) 。内容是 组构件,它们的行为是由控制器来调控的。 但是动态构件也有很多不足:首先,破坏了构件的封装性,动态构件需要在 代码中插入支持动态演化的代码,而这些代码是与构件提供的服务完全无关;其 次,缺少对构件之间关系变化的支持,构件只能进行自身的实例替换,无法做到 构架结构变化如构件删除、增加等;最后,不利于构件复用,动念构件往往与运 行环境的耦合度较高,在不同的系统中需要不同的动态演化代码,这也增加了构 件丌发者的工作强度。 2 3 构架描述语言的研究 描述软件构架是研究软件构架的前提,为了支持构架的开发,形式化的建模 符号系统和可应用于构架规约的开发与分析工具是必需的。构架描述语言 ( a r c h i t e c t u r ed e s c r i p t i o nl a n g u a g e 简称a d l ) 以及与之相对应的工具集f 好解 决了这一问题。a d l 吸收了传统程序语言中语义严格、精确的特点,并针对软 件构架的整体性和抽象性定义和确定了适合于软件构架表达于描述的有关抽象 元素,从而能精确、无歧义地描述软件构架,更好的支持对软件构架求精、验证、 演化和分析。 2 3 1 现有构架描述语言的比较 人们已经提出了许多用于构架建模的a d l ,下面选取一些具有代表意义的 a d l ,对其进行对比分析: 1 ) a c m e d 2 :是一个通用的构架和构架族的构架描述语言,它把系统描述 成通过连接器实现交互关系的部件图,并把部件和连接器分解表示成子 1 5 复旦大学硕士学位论文 臼适成型动态软件构架楼型的研究与设计 系统。 2 ) a e s o p 0 3 1 :通过提供设计元素词汇集、配置规则集、良定义语义集等机 制提供了对构架风格的支持和描述,主要用于快速构建领域特定的构架 风格,为进一步的软件复用提供了相应支持。 3 ) d a r w i n t 4 v 提出将构件作为构件类型的一种实例,采用p i 算子来规格化 构件语义,构架主要描述高度分布的系统构架,以严格的形式化基础指 导。 4 ) r a p i d e 0 2 1 :是基于事件、事件偏序集( p o s e t s ) 、可执行的构架描述语 言,允许仿真构架设计,并且提供仿真工具来检查基于事件的组件行为 问交互。 5 ) u n i c o n 1 5 l :为构架设计提供一个高级别的编译器,支持异构构件和连接 器类型的整合,对于使用常见协议进行交互的已有构件能生成粘结代码 6 ) w r i g h t l 6 1 注重于对构件间的交互行为进行建模分析,对构件与连接器抽 象行为进行形式化的描述,将显式的、独立于实现的连接器类型用作交 互模式,对并发系统的动态行为进行建模和分析( 尤其是死锁分析) 2 3 2 动态构架描述语言 上面的一些a d l 多数都是对构架静态结构的描述,缺乏动态方面的描述, 足无法应用于构架动态演化的。为了解决这种不适用性,很多学者和研究机构提 出了一些动态构架描述语言( d y n a m i c a d l ) ,下面选取一些典型的d y n a m i c a d l 做出分析 1 ) c 2 s a d e l i v l :所描述的是一个被连接件连接的并发构件的层次网络结 构。所有构件之间的通信必须通过连接件进行异步消息交换,是一种基 于消息的层次构架描述。 2 ) d y n a m i cw r i g h t t l s l :在w r i g h t 语言的基础上增加了一个对配置器 ( c o n f i g u r a t o r ) 的描述,通过配置器中描述的动态演化的代码,来控制 整个构架的动态演化。 3 ) d x a d l 2 i :采用x m l 语法与s c h e m a ,通过层次化模型来描述构架,分 离了动态构架和静态构架部分,提高了构架描述的可扩展能力,解决了 领域局限性问题。同时,也降低了构架描述语占的开发与应用成本。 4 ) x s a d l 1 9 :采用x m l 语法描述构架,引入了状态和行为的描述,为构 架的自适应演化提供了基础。 以上的动态构架描述语言有一些共同的不足:首先,这些a d l 都仅仅从构 架结构的变化这一个方面来描述了构架的动态演化,即动态配置( d y n a m i c - 1 6 复旦大学硕士学位论文 自适应型动态软件构架模型的研究与设计 r e c o n f i g u r a t i o n ) ,对构架动态行为演化没有相应的描述:其次,无法对构架动态 演化中所产生的安全性和错误处理能力提供支持;最后,对分布式的应用和自适 应的构架演化的支持还不够。 2 4 软件构架建模技术的研究 2 4 1 软件构架建模的方法 软件构架建模技术即研究如何表示软件构架的方法,根据建模侧重点的不 同,可以将软件构架模型分为五种: 1 ) 结构模型:是最直观、摄普遍的建模方法。这种方法以构件、连接件和 其他概念来刻画结构,并力图通过结构来反映系统重要的语义内容,包 括系统的配置、约束、隐含的假设条件、风格、性质。 2 ) 框架模型:与结构模型类似,但侧重于整体的结构而不是对结构细节的 描述。框架模型主要以一些特殊的问题为目标建立只针对和适应该问题 的结构。 3 ) 动态模型:是对结构模型的补充,研究系统的“大粒度”的行为性质,例 如描述系统的重新配置或演化。动态可以指系统总体结构的配置、建立 或拆除通信通道和计算的过程。 4 ) 过程模型:是研究构造系统的步骤和过程,因而它的结构是遵循某些过 程脚本的结果。 5 ) 功能模型:它认为构架由一组功能构件按层次组成,下层为上层提供服 务,可以把它看作是一种特殊的框架模型。 2 4 2 动态构架模型的研究进展 建模的方法既可以从整体、从多个角度来描述构架的结构和行为,又可以通 过模型统一控制构件和构架的演化,是一种比较合理和可行的解决构架动态演化 的方法,是动态构架研究的热点之一,也是本文研究的核心。本节选取现有的典 型动念构架模型作分析。 1 ) c h e m ( 化学抽象机模型) 2 0 1 :提出构架是一种抽象化学自动机。通过 定义分子、溶液、膜以及溶液演化过程的转变规则,来描述构架。在c h a m 中,构架被定义为处理元素、数据元素和连接键。构架采用隐式规则描 述溶液和转换规则方面的拓扑结构。 2 ) k - c o m p o n e n t s t z l l :可以用来构建适应上下文( c o n t e x t a d a p t i v e ) 的一应 用系统,其中对构件的描述采用i d l 3 的子集称为k i d l ,构架有两个 层次,元模型层和基本模型层。元模型层描述配置管理器( c o n f i g u r a t i o n 一1 7 一复旦大学硕士学位论文 自适应型动态软件构架模型的彤f 究与设计 m a n a g e r ) 和适应契约( a d a p t a t i o nc o n t r a c t ) ,适应契约是通过a c d l ( a d a p t a t i o nc o n t r a c td e s c r i p t i o nl a n g u a g e ) 来描述的。两个层之间通过 适应事件( a d a p t a t i o ne v e n t ) 来通信。整个系统是基于事件来动态演化 的,是- - * d o 研究比较成熟的构架模型。 3 ) d y n a m i c t a d 2 2 :支持o r b ( o b j e c tr e q u e s tb r o k e r ) 的动态配置,它提 供了一类基本动态策略,可以发现和表示构件之间的联系和构件变化的 需求,动态演化代码可以用基本动态策略来表示。而且这些基本动态策 略的组合可以形成更多其它的动态策略。但是它缺乏对于自适应策略的 支持。 4 ) o p e n c o m 2 2 】:是基于一种轻量级的高效的类似m i c r o s o f tc o m 构件的构 架模型。它可以方便的维护构件之间的关系,通过对构件,接口和容器 的操控来达到动态演化的能力。而且灵活的动态配置能力同样支持第三 方的构件和连接件的动态配置。 5 ) a r c h j a v a 2 3 1 :是使用j a v a 语言实现的一种构架模型,它可以支持构架的 动态配置,但是这种动态配置必须是在设计时可以预见的那种。同时它 只能够应用于j a v a 构件组成的系统中,扩展能力较弱。 6 ) j w i r e 2 4 】:是基于e j b 构件的构架模型,提供异步通信的协议机制可以支 持分布式环境的动态演化,并且可以与c o b r a 构件模型进行通信支持, 扩展能力稍强于前者。 7 ) s e t a f 2 5 :是一个可以用来创建w e b 商店的原形构架模型,它可以定制 客户与系统交流的行为。它是基于多代理( m u l t i a g e n t ) 的构架并且使 用了m a s 技术,这种技术可以无缝连接系统中的多个代理,并且方便 于在多台计算机上配置不同代理。由j d k l 2 实现。 8 ) s i t a r 2 6 1 :是一个安全事务的构架模型,它的基本元素是功能( f u n c t i o n ) 与服务( s e r v i c e ) ,通过引入审计控制( a u d i tc o n t r 0 1 ) 和使用状念图在 每一次的演化之前对带来的影响做分析。它既是基于模块的 ( m o d e l b a s e d ) 又是基于测量的( m e a s u r e m e n t - b a s e d ) 构架模型,具有 一些的错误检测和恢复能力。 通过对上述现有动态构架模型的分析研究,总结出一些不足:首先,多数构 架模型关注的是构架结构的变化即构架重配置( a r c h i t e c t u r er e c o n f i g u r a t i o n ) 的 问题,对动念构件升级( d y n a m i cc o m p o n e n tu p d a t e ) 的应用比较多,而对构架 动态行

温馨提示

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

评论

0/150

提交评论