(计算机软件与理论专业论文)面向构件的软件系统动态配置技术的研究.pdf_第1页
(计算机软件与理论专业论文)面向构件的软件系统动态配置技术的研究.pdf_第2页
(计算机软件与理论专业论文)面向构件的软件系统动态配置技术的研究.pdf_第3页
(计算机软件与理论专业论文)面向构件的软件系统动态配置技术的研究.pdf_第4页
(计算机软件与理论专业论文)面向构件的软件系统动态配置技术的研究.pdf_第5页
已阅读5页,还剩55页未读 继续免费阅读

(计算机软件与理论专业论文)面向构件的软件系统动态配置技术的研究.pdf.pdf 免费下载

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

文档简介

摘要 量皇曼曼曼曼曼鼍i ;iii;i_;i 一一i ;i 皇曼鼍曼曼曼曼皇皇曼曼曼曼鼍曼量曼曼皇皇曼曼曼曼 摘要 随着系统可用性需求的不断提高,越来越多的软件系统需要执行一些连续运 行的关键任务,因此这类系统必须在7 2 4 的工作模式下运行,提供不间断的 服务。如果通过传统方式对这类系统进行升级,则会导致不可接受的损失和难以 预测的危险,因此这类系统应该在运行期间完成动态升级,而动态配置技术为系 统的动态升级提供了有力的支持。支持动态配置的系统能够在不重新编译且不重 新启动整个系统的前提下,在系统运行过程中改变自身组成,调整自身结构,以 适应需求的变化。鉴于动态配置所解决的问题,对动态配置的相关问题进行研究 有着重要的意义。 本文研究面向构件的软件动态配置技术,基于反射原理设计了一个动态配置 模型,定义了动态配置模型中构件、接口、系统架构和配置请求的描述方式,并 根据动态配置模型设计并实现了一个面向构件的动态配置中间件。针对基于构件 开发的应用系统,软件开发者利用动态配置中间件能够在系统运行期间根据用户 的配置请求完成系统的动态升级,实现系统的在线演化。任何满足动态配置模型 中设计规范的软件构件都可以参与到软件动态配置过程中。 动态配置中间件为应用系统中的软件构件提供了构件代理,为构件之间的通 信提供了通信总线,能够根据用户提供的配置请求完成构件的添加、删除和替换, 以及构件连接的建立和撤销。在满足系统一致性的前提下,根据不同的动态配置 意图,本文设计并实现了添加构件、删除构件、替换构件、添加连接和删除连接 五种动态配置算法。 本文利用基于构件的软件开发方法和动态配置模型中的设计规范对一个空 间数据库集成系统进行重构,并将动态配置中间件应用到重构之后的空间数据库 集成系统中,实际检验了动态配置中间件的应用效果。最后对系统进行功能测试 和性能测试,测试结果表明动态配置中间件达到了设计要求,能够有效地完成软 件系统的动态配置,具有明显的实用价值。 关键词动态配置;系统一致性;构件 a b s t r a c t a b s t r a c t w i t ht h ei n c r e a s i n gr e q u i r e m e n to fs y s t e ma v a i l a b i l i t y , m o r ea n dm o r es y s t e m s n e e dt oe x e c u t es o m ec r i t i c a lm i s s i o n st h a ta r ec o n t i n u o u sr u n n i n g ,t h u st h i sk i n do f s y s t e mm u s tr u n2 4 7a n dp r o v i d ei n c e s s a n ts e r v i c e i ft h e s es y s t e m sa r eu p d a t e di n t r a d i t i o n a lw a y , t h e r ew i l lb es o m es e r i o u sc o n s e q u e n c e s ,i n c l u d i n gu n a c c e p t a b l el o s s a n du n p r e d i c t a b l ed a n g e r ,s od y n a m i cu p d a t ei s n e c e s s a r yf o rt h e s es y s t e m s a sa s o l u t i o n ,d y n a m i cc o n f i g u r a t i o nm a k e so n l i n ee v o l u t i o np o s s i b l e i no r d e rt oa d a p tt o t h er e q u i r e m e n tc h a n g e s ,s y s t e mt h a ta l l o w sd y n a m i cc o n f i g u r a t i o nc a nm o d i f yt h e c o m p o s i t i o na n da d j u s tt h ea r c h i t e c t u r ew i t h o u tr e c o m p i l ea n dr e b o o ta tr u n t i m e t h i sd i s s e r t a t i o n f o c u s e so nt h ed y n a m i c c o n f i g u r a t i o nt e c h n o l o g y o f c o m p o n e n t - o r i e n t e ds o f t w a r es y s t e m o nt h eb a s i so fr e f l e c t i o nt h e o r y , w ed e s i g na d y n a m i cc o n f i g u r a t i o nm o d e l ,i nw h i c ht h ed e s c r i p t i o nm e t h o d so ft h ec o m p o n e n t , i n t e r f a c e ,s y s t e ma r c h i t e c t u r e ,a n dc o n f i g u r a t i o nr e q u e s ta r ed e f i n e d i nt h el i g h to ft h e d y n a m i cc o n f i g u r a t i o nm o d e l ,w ed e s i g na n di m p l e m e n tad y n a m i cc o n f i g u r a t i o n m i d d l e w a r e t h ec o m p o n e n t o r i e n t e ds o f t w a r es y s t e mc a l lb eu p d a t e da tr u n t i m eb y u s i n gt h em i d d l e w a r e t h es o f t w a r ec o m p o n e n t sc a nb ec o n f i g u r e dd y n a m i c a l l y 硒 l o n ga si ts a t i s f i e st h ec o n t r a c t so fd y n a m i cc o n f i g u r a t i o nm o d e l t h e d y n a m i cc o n f i g u r a t i o n m i d d l e w a r e p r o v i d e sp r o x i e s f o rs o f t w a r e c o m p o n e n t s a n dab u sf o r i n t e r - c o m p o n e n tc o m m u n i c a t i o n a c c o r d i n g t o c o n f i g u r a t i o nr e q u e s t ,t h ed y n a m i cc o n f i g u r a t i o nm i d d l e w a r ec a l lc r e a t e ,r e m o v ea n d r e p l a c et h ec o m p o n e n t ,a n di ta l s oc a nc r e a t ea n dr e m o v et l l ec o n n e c t i o nb e t w e e n c o m p o n e n t s f o rd i f f e r e n tc o n f i g u r a t i o np u r p o s e s ,w ed e s i g na n di m p l e m e n tas e r i e s o fd y n a m i cc o n f i g u r a t i o na l g o r i t h m st h a tm a i n t a i nt h es y s t e mc o n s i s t e n c y , i n c l u d i n g c o m p o n e n tc r e a t i o n ,c o m p o n e n tr e m o v a l ,c o m p o n e n tr e p l a c e m e n t ,c o n n e c t i o n c r e a t i o na n dc o n n e c t i o nr e m o v a l b a s e do nt h em e t h o do fc o m p o n e n 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 ta n dt h e c o n t r a c t so ft h ed y n a m i cc o n f i g u r a t i o nm o d e l ,w ea p p l yt h ed y n a m i cc o n f i g u r a t i o n m i d d l e w a r et oas p a c ed a t a b a s ei n t e g r a t i o ns y s t e mt h a th a sb e e nr e f a c t o r e d t h e f u n c t i o nt e s ta n dp e r f o r m a n c et e s ts h o wt h a tt h ed y n a m i cc o n f i g u r a t i o nm i d d l e w a r e c a np e r f o r me f f e c t i v e l ya n de f f i c i e n t l yi ns o f t w a r eo n l i n ee v o l u t i o n ,a n dp r o v et h e r e s e a r c h sp r a c t i c a lv a l u e k e y w o r d sd y n a m i cc o n f i g u r a t i o n ,s y s t e mc o n s i s t e n c y , c o m p o n e n t 独创性声明 本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研 究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他 人已经发表或撰写过的研究成果,也不包含为获得北京工业大学或其它教育机构 的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均 已在论文中作了明确的说明并表示了谢意。 签名:兰i 篮 日期:塑乒血 关于论文使用授权的说明 本人完全了解北京工业大学有关保留、使用学位论文的规定,即:学校有权 保留送交论文的复印件,允许论文被查阅和借阅:学校可以公布论文的全部或部 分内容,可以采用影印、缩印或其他复制手段保存论文。 ( 保密的论文在解密后应遵守此规定) 签名: 星超 导师签名: 日期:牡 一 竽 业 ,琴 第1 章绪论 1 1 课题背景 第1 章绪论 1 1 1 基于构件的软件开发 作为缓解软件危机【1 】的一种重要手段,软件复用1 2 1 技术应运而生,人们希望通 过复用的思想解决开发成本、开发效率等问题。二十世纪九十年代,面向对象技 术【j 逐渐超越了传统的面向过程开发方法,成为软件开发的主流模式,其封装、 继承等特点被认为是实现复用的基础。但是从抽象层次上看,面向对象只能满足 代码一级的复用,或者说是类级的复用,这种复用的粒度太小,不能满足人们 对复用日益增长的需求。 基于构件的软件开发1 4 5 】很好的解决了关于复用粒度的问题,将复用粒度提高 到了一个新的层次。不同于面向对象技术,构件是对一组类和方法进行封装,封 装后的构件能够提供特定功能的服务,并为用户提供使用这些功能的接口。构件 隐藏了内部的具体实现,访问构件只需获取其接口即可。此外还可以将几个功能 相关的构件组装成一个粒度更大的构件,提供更强大的功能。由于基于构件的软 件开发具有上述特点,这种开发模式已经取代了面向对象技术成为当前软件开发 的主流模式。 与传统的软件开发方法相比,基于构件的软件开发方法在完成系统的概要设 计后,并不立即开始进行详细设计,而是确定系统哪些部分可由构件组装而成, 这些构件可能是在不同的时间、由不同的人员开发,并且具有不同的用途,因此 可以认为基于构件的软件开发引导软件开发的重点从应用系统开发转变为应用 系统集成,系统开发人员面临的决策也转变为:是否存在满足某种需求的构件, 是否存在满足某种需求的内部开发的可复用构件,可用构件的接口与体系结构的 设计是否匹配等。 对于那些满足需求的可用构件,通常需要进行构件鉴定、构件适配和构件组 装。构件鉴定是指通过接口以及其它约束判断构件是否能够在新系统中复用,通 常由发现和评估两个阶段组成;构件适配是指通过白盒、灰盒或黑盒的方式对构 件进行修改或配置,以防止被复用的构件不符合目标系统的需求,从而导致构件 无法正常工作:构件组装是指通过某些良好定义的基础设施将构件组装成目标系 统。 北京工业大学工学硕士学位论文 1 1 2 动态配置思想的产生 随着基于构件的软件开发理论不断成熟以及软件规模的不断增大,出现了一 些需要执行关键任务的系统,例如天气预报系统、卫星定位系统。在这些大规模 的系统中,存在着一些关键任务,这些任务需要长期不问断的运行,因此系统必 须在7x2 4 的模式下工作。这类系统如果通过传统的停止、更新、再启动的方 式进行升级,无论从经济还是安全的角度考虑,都将会导致不可接受的损失和难 以预测的危险,因此人们希望能够在不重新启动、不重新编译整个系统,甚至在 不降低系统运行质量的前提下,在系统运行期间完成升级工作,实现系统的动态 配置【6 。 系统的动态配置是指系统在运行过程中改变自身组成,调整自身结构,以适 应需求的变化【8 】。从软件体系结构【9 l 的角度看,系统是由一系列构件按照某种规 则连接组成的应用,因此系统的动态配置指的是系统在运行过程中动态增加、删 除、更新系统的各个组成部分,其中系统的组成部分包括构件本身和构件之间的 连接。动态配置的目标是使系统能够在运行时刻以最小的代价安全的从一种状态 演化到另一种状态,因此动态配置要以满足系统一致性为前提,确保在实施动态 配置的过程中,系统始终能够正常工作。 动态配置技术的研究始于二十世纪七十年代【1 们。最初动态配置是针对进程或 对象进行的,但是由于进程之间以及对象之间的耦合过于紧密,并且涉及编译器 和操作系统等底层细节,因此动态配置实现复杂,正确性不易保证,功能有限, 而且性能较低。进入二十世纪九十年代之后,随着基于构件的软件开发方法的出 现,动态配置的对象也由进程或对象转变为构件。由于构件在更高层次上支持了 软件复用技术,极大降低了构件之间的耦合程度,为动态配置的实现提供了良好 支持。 动态配置的实现模式分为编程模式和进化模式【1 ”。在编程模式中,系统配置 更改的时机和方式在系统设计的初始阶段可以预知,并被编码到系统的实现中, 在系统运行期间只需要在满足条件的情况下根据设定好的配置策略进行动态配 置。在进化模式中,系统配置更改时机和方式在系统设计的初始阶段无法预知, 无法被编码到系统的实现中,因此是一种纯粹的在线演化行为。与编程模式相比, 进化模式实现起来更加复杂,但同时它也提供了更大的灵活性,具有更强的动态 配置能力,适用于更广泛的应用场景。本文所提到的动态配置模式都指的是进化 模式。 2 第1 章绪论 1 2 研究内容 本文主要研究了动态配置技术的相关问题,在对动态配置技术的相关内容进 行深入研究后,完成了以下主要工作: 1 基于反射原理设计了一个动态配置模型,并依据动态配置模型实现了一个动 态配置中间件。 2 定义了动态配置模型中构件、接口、系统架构和配置请求的描述方法,以及 构件的通信方式。 3 在对系统一致性概念进行总结后,设计并实现了一组满足系统一致性的动态 配置算法。 4 利用基于构件的软件开发方法,对一个空间数据库集成系统进行重构,并将 动态配置中间件应用到重构之后的空间数据库集成系统中,检测了动态配置 中间件的应用效果。 1 3 课题来源 本课题来源于北京市自然科学基金项目( 4 0 5 2 0 0 6 ) :面向空间数据集成的 统一数据查询语言的研究。 1 4 论文结构 绪论部分主要介绍了课题的背景知识,拟解决的问题,研究的目的和意义, 以及本文的主要工作。 第二章主要介绍了动态配置技术的相关知识。通过描述动态配置和静态配置 的过程,对两种配置方式进行比较:介绍了当前动态配置的各个研究方向:总结 了动态配置需要遵守的原则;列举了一些重要的国内外相关工作,并对各项工作 进行分析。 第三章介绍了本文设计的动态配置模型。首先简要介绍了动态配置模型设计 的理论依据:反射理论:然后重点介绍了动态配置模型以及动态配置模型中各部 分的设计;最后介绍了动态配置模型中的构件,包括构件的动态配置接口,构件 的描述方法,构件的通信方式以及接口的描述方法。 第四章介绍了本文设计并实现的动态配置中间件。首先介绍了动态配置中间 件的体系结构以及动态配置中间件内各模块的功能;然后描述了对动态配置中间 件的工作流程( 初始化流程和配置流程) 。并给出了系统架构和配置请求的描述 方式。 3 北京工业大学工学硕十学位论文 第五章介绍了本文设计并实现的五种满足系统一致性的动态配置算法。首先 对系统一致性这一重要概念进行说明;然后对动态配置中间件支持的五种动态配 置算法( 添加构件、删除构件、替换构件、添加连接、删除连接) 逐一进行描述, 并对算法的正确性进行分析。 第六章介绍了一个应用案例。首先介绍了案例背景:空间数据库集成系统; 然后利用空间数据库集成系统对动态配置中间件进行功能测试和性能测试,并对 测试结果进行分析,实际检验了动态配置中间件的应用效果。 结论部分对本文所做的工作进行了总结,再次指出工作的意义,并提出了工 作进一步的研究方向。 4 第2 章动态配置技术 曼皇曼曼曼! 鼍詈皇曼鼍鼍n l ni 鼍曼曼曼曼皇曼曼曼曼曼曼曼曼皇! 曼皇曼曼! 曼曼! 皇 第2 章动态配置技术 2 1 动态配置技术概述 系统配置分为动态配置和静态配置【1 2 1 。从软件体系结构的角度看,系统由构 件组成,因此无论采用哪种配置方式,都需要有架构描述说明来描述构成系统的 构件以及构件之间的连接关系,架构描述说明可以采用某种体系结构描述语言进 行描述,也可以采用自定义的描述方式进行描述。此外还需要有一个构件库,保 存着所有可用的构件,系统可以根据需求从构件库中选取构件。最后还需要有一 个加载器,用于将选取的构件加载到系统中。 2 1 1 静态配置 系统的静态配置【13 】如图2 1 所示。构建程序通过解析架构描述说明,从构件 库中选取构件,并通过加载器将构件加载到系统中,然后创建构件之间的连接, 整个过程在系统启动阶段完成,因此上述过程也称为系统初始化。 图2 - 1 静态酉己置 f i g u r e2 - 1s t a t i cc o n f i g u r a t i o n 如果对只支持静态配置的系统进行升级,则需要停止运行整个系统,修改配 置描述说明的内容,然后重新启动系统并重复执行整个初始化流程,这种升级过 程可以形象的描述为停止、更新、再启动。从上述说明中不难看出,这种系统不 支持系统的在线演化。 5 南 北京工业大学t 学硕士学位论文 2 1 2 动态配置 支持动态配置的系统不但能够完成上一节介绍的初始化流程,还能够统在系 统运行期间进行动态配置,利用增量式的方法完成系统的在线演化。系统的动态 配置【1 3 】如图2 2 所示。 i i i l 广广二= 二、厂 系统i := := ;爿 操作系统 : 爿 系统i + l i 图2 2 动态配置 f i g u r e2 - 2d y n a m i cc o n f i g u r a t i o n 图2 2 中左边一列表示当前系统的架构描述说明和当前的应用系统,架构描 述说明描述了当前应用系统的架构,两者是对应的;右边一列表示配置之后系统 的架构描述说明和配置之后的应用系统,配置之后的架构描述说明描述了配置之 后应用系统的架构,两者也是对应的。动态配置过程由一个配置变更触发,配置 变更是对系统如何进行动态配置的描述,也就是对动态配置意图的描述,这个动 态配置意图可以是一个基本的动态配置意图,也可以是一个复杂的动态配置意 图,复杂动态配置意图是由基本动态配置意图组合得到的。如果配置变更通过了 合法性检查,则证明该配置变更不会破坏系统一致性,配置管理器就会监控应用 系统并在适当的时机根据配置变更中的配置意图调用操作系统的接口,对当前正 在运行的应用系统进行动态配置。配置完成后,系统从一个状态演化到下一个状 态,而对应的架构描述说明也会做出相应的改变,从而能够正确刻画配置之后的 应用系统。 从上述动态配置过程的描述中不难看出,支持动态配置的系统能够在不重新 编译且不重新启动整个系统的条件下,完成系统的升级工作,并且始终保证架构 描述说明是对当前系统的正确描述,当其中任何一方发生改变时,另一方也必须 做出相应的变化。此外动态配置的完成离不开上层编程语言和底层操作系统的支 持。 6 第2 章动态配置技术 2 1 3 动态配置的优越性 通过比较两种配置方案不难看出,动态配置之所以优于静态配置,是因为支 持动态配置的系统可以在配置管理器的调度下,在不停机的条件下进行系统的在 线演化,完成升级工作【1 4 l 。对于某些系统( 例如病情监控系统、灾难预警系统) 来说,停止运行或重新启动整个系统会造成难以估量甚至无法弥补的损失,因此 动态配置对于可用性要求非常高,尤其是在7x2 4 模式下工作的系统有着重要 的意义。 2 2 动态配置分类 自从人们认识到系统动态配置的重要性之后,对于系统动态配置的研究已经 成为软件体系结构领域的一个热门的研究方向,国内外开展的相关工作从不同角 度对这一问题进行了研究。动态配置研究的分类如图2 3 所示。 善竺! ! ! 叁! 三三;孓 l 非形式化方法ii 形式化方法l 恢复型方法ii 避免型方法 i ,竺堕了孓 ,匕二,_ = = ! l 一 图2 - 3 动态配置分类 f i g u r e2 - 3d y n a m i cc o n f i g u r a t i o nc l a s s i f i c a t i o n 动态配置方法按照研究方向可以分为形式化方法和非形式化方法。 形式化方法的研究重点在于对系统结构、语义、约束的形式化描述和形式化 验证,包括动态配置意图自身是否合法、动态配置对于系统一致性是否产生影响、 动态配置后系统的实际状态与期望状态是否吻合。形式化方法的研究成果主要体 现在一些支持描述软件动态模型的软件体结构描述语言,例如伦敦帝国学院开发 d a r w i n 语言【1 5 1 、卡内基梅隆大学开发的d y n a m i cw r i g h t 语言【1 6 1 、斯坦福大学开 发的r a p i d e 语割1 7 1 。这类软件体系结构描述语言不仅能够描述系统的结构信息, 还支持通过c s # 1 8 1 、万演算【1 9 1 等方式描述系统的行为语义,实现对系统无二义 性的描述。 非形式化方法主要从工程的角度出发,研究动态配置的关键技术和动态配置 7 北京工业大学工学硕士学位论文 算法,最终的目的是实现一个通用的动态配置模型,对于按照规范开发的应用系 统,利用动态配置模型可以实现系统的动态配置。由于x m l 2 0 】半结构化等特点, 使其具有天然的易用性、灵活性、可扩展性,能够准确的对需求进行描述,因此 非形式化方法大多采用x m l 描述系统体系结构及配置变更。描述的手段既可以 通过基于x m l 的体系结构描述语言【2 1 l ,也可以根据需求采用自定义的方式进行 描述【2 2 1 。 非形式化方法按照系统一致性的维护策略可以分为恢复型方法和避免型方 法。 恢复型方法的原则是并不事先阻止有可能破坏系统一致性的操作执行,而是 通过设定一系列的检查点,在动态配置过程中,在每个检查点检测系统一致性是 否被破坏。如果执行结束后系统一致性没有被破坏,那么动态配置平台和应用系 统就继续工作;如果执行过程中在某个检查点检测到系统一致性被破坏,那么动 态配置平台会调用相应的回滚程序,将配置过程回滚到上一个检查点,并从该检 查点继续执行【z 3 】。恢复性方法的研究主要围绕系统容错和恢复机制展开,但是恢 复型方法实现起来难度较大,许多细节问题没有明确的解决方案,因此实际应用 极少。 避免型方法的原则是在设计动态配置算法时以保证系统一致性为前提,也就 是说在动态配置操作执行之前,应用系统已经进入配置安全状态,在该状态下执 行相关的配置操作,能够确保系统一致性始终得到满足。对于不同的动态配置操 作,对应的配置安全状态可能也不同,因此在执行实际的配置操作前,必须确保 相应的配置安全状态已经到达,这些都应该由动态配置算法保证。避免型方法的 研究主要围绕动态配置算法展开,与恢复型方法相比,避免型方法实现起来的可 行性更高。 避免型方法按照避免方式可以分为等待型方法和驱动型方法。 等待型方法是系统一致性解决方案中一种简单但低效的方法。等待型方法完 全凭借应用系统自身运行到某种配置安全状态,在接收到配置请求后,动态配置 平台每隔一段时间检测应用系统是否到达了配置安全状态,如果检测到配置安全 状态已经到达,则执行相应的配置操作,因此等待型方法简单易行。但是等待型 方法过于依赖于应用系统本身,而忽视了动态配置模型的作用,如果应用系统在 运行过程中无法满足到达安全配置状态的条件,那么配置操作永远不可能发生, 因此等待型方法效率低下。 驱动型方法则是在接到配置请求之后,驱动系统到达某种配置安全状态,因 此驱动型方法能够保证配置安全状态在有限时间内可达,充分发挥了动态配置模 型的功能。驱动型方法的执行过程分为以下三个步骤:首先驱动系统到达配置安 全状态,然后执行配置操作,最后解除系统的配置安全状态,使系统恢复运行。 8 第2 章动态配置技术 一般情况下,驱动型方法是以冻结某个构件或某些构件的正常运行为代价来完成 动态配置,但保证其他与本次动态配置无关的部分继续正常运行,在配置结束后 解冻被冻结的构件,使其恢复正常运行。在介绍国内外的相关工作中都是研究驱 动型方法的相关工作,本文所描述的动态配置模型及动态配置算法也是采用该方 法进行设计的。 2 3 动态配置原则 在设计动态配置模型时,需要遵守一些原则。在对动态配置理论深入学习之 后,本文进行了如下总结: 1 动态配置的粒度应该是体系结构级别的 对于基于构件开发的应用系统,在下层讨论动态配置太过拘泥于细节,粒度 太小,很难实现,因此动态配置的对象应该是构件,应该在体系结构的层次上讨 论动态配置的相关问题。 2 动态配置的描述应该是声明型的 动态配置的细节由动态配置平台负责,而非用户本身,因此在描述动态配置 时只需要描述动态配置的意图,而不需要描述动态配置的执行方式。动态配置的 描述应该尽量贴近自然语言,而非程序设计语言。当前大多数对于动态配置的描 述都采用x m l 方式,采用这种方式既能够便于用户理解,又能够通过x m l 解析 器进行解析。 3 。动态配置的模型应该具有普适性 在介绍动态配置方法的分类中曾经提到,非形式化方法研究的最终目标是实 现一个动态配置模型,这个动态配置模型要尽量通用,具有普适性。因此在设计 动态配置模型之初要抽取出一般应用系统对动态配置的需求,在较高层次上分析 问题,设计模型,实现算法,使得动态配置模型能够独立于具体的应用,而不是 为某一个应用专门开发一个模型。但是绝对的通用很难实现,因此需要制定一些 规范,只要应用系统按照规范开发,就能够通过动态配置模型完成系统的动态配 置。 4 动态配置的过程应该始终保证系统一致性 如果对配置操作不加以控制,则会破坏系统的一致性,造成不可预知的后果, 影响系统的正常运行。为了避免这种情况发生,必须保证系统一致性在动态配置 前后始终得到满足。系统一致性是衡量动态配置模型是否合理、动态配置算法是 否正确的标准。只有始终严格保证系统一致性,系统才能在动态配置过程中始终 处于正常运行状态。关于系统一致性的更多细节,在动态配置算法一章中有详细 介绍。 9 北京工业大学工学硕士学位论文 5 动态配置的过程应该最小化对应用系统的影响 动态配置可以保证不以重新启动或重新编译整个系统为代价进行系统升级。 为了最小化动态配置对系统的影响,动态配置平台在接到动态配置请求后,首先 应该确定一个最小集,也就是与本次动态配置相关的部分,在配置过程中只有属 于最小集中的部分暂时无法使用,而对于应用系统中的其它部分,由于不受本次 动态配置的影响,仍然能够在配置过程中正常工作。 6 动态配置的过程应该最大化对用户的透明性 这里所说的用户可以理解为构件开发人员。对于构件开发人员来说,应该更 多关心构件的业务逻辑,也就是构件提供的功能,而不应该为了让构件支持动态 配置而做过多额外的工作,编写复杂的与动态配置相关的代码。但是构件在开发 过程中只有完全满足设计的规范,才能得到动态配置模型的支持,因此无法做到 对构件开发人员的完全透明,这就是该原则中只是强调最大化用户透明性的原 因。 2 4 国内外相关工作 2 4 1k r a m e r 和m a g e e 的相关工作 作者【2 t 2 6 1 对事务、配置、一致性都给出了自己的定义:事务是由一个构件发 起、两个构件参与的交互,交互的次数可能不止一次,并且能在有限的时间内完 成:配置是修改系统体系结构的操作:一致性包括构件状态的变化和不能违反的 全局约束。 构件已经开启和接受事务的状态称为主动状态;构件当前没有参与到任何已 经开始的事务并且将来也不会开启新事务,但是能够接受将来由其他构件开启的 事务的状态称为被动状态。当构件处于被动状态时仍然能够接受事务,但是不能 开启任何新事务,因此被动状态是对构件进行配置的必要非充分条件。构件主动 状态和被动状态之间的状态转移如图2 4 所示。 r e m o v e a c t i v a t e 图2 _ 4 状态转移图【2 4 l f i g u r e2 - 4s t a t et r a n s i t i o nd i a g r a m s 2 4 1 0 第2 章动态配置技术 由于被动状态不能满足构件进行配置所需的条件,作者提出了一种静止状态 理论:构件当前没有参与任何事务并且将来也不会参与任何事务的状态称为静止 状态。构件要想达到静止状态不仅依赖于自身,还依赖于与其相关的构件。构件 处于静止状态必须满足三个条件:构件当前没有参与任何已经开始的事务;构件 将来不会开启新事务;任何需要该构件参与的事务在当前和将来都不会被开启, 即构件将来也不会参与任何事务。 在执行动态配置时,最重要的一点是要保留应用系统的状态信息,保证系统 的一致性状态。为了达到这个目标,配置管理器应该提供一个驱动系统到达能够 实施动态配置状态的接口,并且配置管理器还能够检测这种状态到达的信息,而 且这个接口必须通用,不能依赖于某个具体的应用。应用系统需要提取出足够的 信息,使得配置管理器执行动态配置后利用这些信息能够将应用系统恢复到先前 的状态。 要保证动态配置能够发生,必须满足以下三个条件:首先要求构件的被动状 态是可达的,构件能够在有限时间内到达被动状态:其次要求属于被动集合中的 构件都能达到被动状态,构件的被动集合由构件本身和能够发起让该构件参与事 务的所有构件组成;最后要求构件的静止状态是可达的,只要构件被动集合中的 所有构件都能在有限时间内进入被动状态,那么该构件就一定能在有限时间内进 入静止状态。 2 4 2m o a z a m i g o u d a r z i 的相关工作 作者【1 1 , 2 7 1 着重研究识别构件当前状态的方法,使动态配置操作能够在恰当的 时机进行,不破坏系统的一致性状态,为此作者将各种配置请求逐一进行分析, 阐述了构件如何能够满足各种配置请求对应的安全状态。此外作者将构件之间的 一次交互定义为一个事务,认为在事务开始之前和事务结束之后系统都应该处于 一致性状态。 图2 - 5 状态转移图【2 7 1 f i g u r e2 - 5s t a t et r a n s i t i o nd i a g r a m s 2 7 1 北京工业大学工学硕士学位论文 根据作者定义的动态配置规则,首先要保证构件在动态配置期间不能参与到 任何事务中,另外还需要通过某种机制驱动构件进入安全配置状态。构件在安全 配置状态期间,不会参与任何事务,并且在动态配置工作结束前,构件始终处于 安全配置状态,因此构件在整个配置过程中都不会参与任何事务。最后还应该保 证构件能够在有限时间内到达安全配置状态,从而使配置操作在有限时间内完 成。 为了让构件满足动态配置的上述要求,作者提出了构件阻塞状态的概念。如 果能够阻塞构件的执行,并且在配置完成之后解除阻塞( 状态转移如图2 5 所 示) ,那么就一定满足构件没有参与任何事务,并且在动态配置工作结束前也不 会参与任何事务的要求,因此作者将构件如何到达安全状态这一问题归结为如何 实现构件阻塞状态的问题。作者认为只要能够在恰当的时机和有限的时间内将阻 塞状态施加于受配置影响的构件,那么就能够通过阻塞来确保系统在动态配置期 间的一致性。 2 4 3a l m e i d a 的相关工作 作者【2 8 , 2 9 通过一个中间件专门负责管理构件之间的引用关系,维护构件之间 的参照完整性,解决由于动态配置造成的引用无效内容的问题,中间件所做的工 作对于构件来说是透明的,构件本身不关心参照完整性。此外为了解决接口兼容 性i - j 题,设计上必须满足l i s k o v 替换原则【3 0 】,新版本构件必须实现老版本构件 所支持的接口,或者实现老板本构件所支持接口的子接口。 作者认为构件开发人员需要做一些额外的工作来保证状态一致性。构件要提 供能够访问其状态的方法,使用者通过调用这些方法能够查询或修改构件在运行 时刻的状态信息。这些状态信息可以是构件所有状态信息的子集,构件开发人员 可以决定将构件的哪些信息暴露出来,哪些信息隐藏起来。作者认为虽然这种解 决方案会破坏面向对象的封装性,但是考虑到动态配置的需求,这一点是无法避 免的。 作者将构件分为主动构件和被动构件,这与j e f f 方法中的构件状态大同小异。 通过获取构件在运行时的状态信息以及冻结系统中与配置操作相关的构件,来驱 动构件到达安全配置状态,一旦检测到构件已经达到安全配置状态就实施动态配 置。所谓安全配置状态是指所有受牵连的构件当前都没有参与任何交互,并且在 配置结束之前也不会参与任何交互。为了达到这种状态,要等待当前发生的请求 结束,阻塞后来到达的请求开始。 1 2 第2 章动态配置技术 2 5 本章小结 本章通过比较动态配置与静态配置,阐述了动态配置的优越性。通过对动态 配置的研究进行分类可知,大多数关于动态配置的研究采用的是驱动型方法,在 介绍国内外研究现状时,也将重点放在通过驱动型方法解决动态配置的研究。另 外对动态配置的原则进行了归纳总结。需要说明的是,本文对动态配置的研究采 用的也是驱动型方法。 1 3 第3 章动态配置模型 3 1 反射理论 第3 章动态配置模型 反射的概念起源于物理学,表示波遇到媒质分界面而部分仍在原物质中传播 的现象。后来法国思想家笛卡尔拓展了反射的含义,认为反射表示机体接受刺激 与反应间的必然因果关系。此后,反射在生理学领域、心理学领域以及逻辑学领 域都得到了广泛的应用。 在计算机领域,反射的概念最早起源于二十世纪八十年代,史密斯博士在他 的博士毕业论文中指出:如果一个计算过程包括一个能够修改外部世界的表示的 过程,那么这个计算过程被构造出来后就能够去推理外部世界;既然上面所说的 成立,那么如果一个计算过程包括一个能够修改其自身操作和结构的表示的过 程,那么这个计算过程在被构造出来后一定能够推理其自身【3 ”。通过上面的定义 可知,史密斯博士所强调的是:通过反射,一个程序可以访问、推理和修改其自 身的表示。 梅兹博士在前人工作的基础上系统地阐述了计算反射和反射系统的概念,给 出了一组定义【3 2 j :反射性是指计算系统推理并操作自身的能力;计算反射简称反 射,是指计算系统在运行过程中对自身进行的计算和控制行为;反射系统则是一 个特殊的计算系统,是以自身为目标系统的元系统。 最初反射理论被应用在编程语言中,特别是l i s p 语言p 3 】最先引入了反射的 概念,后来一些面向对象语言也将反射作为特性之一,其中最广为人知的是j a v a 反射1 3 4 1 。随着人们对反射的研究逐渐深入,反射的应用变得更加广泛,包括窗1 3 系统、操作系统、分布式系统在内的许多系统在设计时都应用了反射的思想。由 于反射在许多领域内都有所应用,为了区别其它领域的反射,人们也将编程语言 中的反射称为计算反射。 3 1 1 反射简介 简言之,反射是系统一种推理自身的能力。如果一个系统具有反射能力,那 么这个系统定能够自描述和自控制,也就是说,这个系统提供了某种机制能够 对自身的行为进行描述和检测,能够根据自身的状态,调整或修改自身的结构, 并且对于自表示的改动能够立即反映到系统的实际状态和行为中去,反之,对于 系统的实际状态和行为的改动也能体现在自表示中,因此系统的实际状态和行为 与自表示总是互相对应的。 反射的目的是提供一种有针对性且可控的方式,对下层进行访问,以实现对 1 5 北京工业大学工学硕十学位论文 系统的检查和调整【3 5 】。首先,反射可以用来检查一个系统的内部行为,通过对下 层的实现进行适当的暴露,可以直接通过实现一个检测模块来检测系统的行为: 其次,反射也可以用来改变一个系统的内部行为,既可以修改系统已有的特性, 也可以添加系统没有的新特性,还可以删除系统已有的特性。 梅兹博士通过对反射的种类进行归纳,指出反射可以从三个不同角度进行分 类【3 2 】:根据反射的使用方式不同,可以分为过程型反射和声明型反射,两者的区 别在于系统的自表示是通过用户程序的逻辑表现出来还是通过系统行为状态的 描述表现出来;根据反射的使用环境不同,可以分为解释型反射和编译型反射, 两者的区别在于反射信息是否通过解释进程的自然特性表现出来;根据反射控制 的方面不同,可以分为结构型反射和行为型反射,结构型反射是指语言对正在执 行的程序和它的抽象数据类型进行完全具体化的能力,行为型反射是指提供了对 语义和当前执行程序的数据进行完全具体化的能力。 反射系统在逻辑上是一个分层结构,这种分层结构也称为反射塔【3 聊。在反射 塔中,每一层中的内容相对其它层都是独立的,对下层的检查和调整可以透明的 进行,并且由于不同层关注系统的不同方面,通过将职责委派给不同层,利用反 射就可以很容易的扩展一个计算系统。此外根据实际需求可以调整反射的粒度, 反射粒度越小职责划分越清晰,灵活性越强,但上层设计也越复杂。 3 1 2 反射中间件 将反射技术应用到中间件技术【3 刀的研究在二十世纪八十年代才刚刚起步,但 如今已经引起了国内外学者的广泛关注,很快成为下一代中间件技术的研究热点 之一。反射中间件 3 8 , 3 9 将反射系统的反射特性融入到中间件中,根据外部应用、 系统环境及系统内部运行需求的变化,通过对系统自身特定成分的具体化和反 射,实现系统的动态配置。在反射中间件中,反射的内涵与最初相比也发生了较 大的变化,不再突出自身的智能推理能力,而主要集中于如何完成对自身结构和 行为的调整。 反射系统最显著的特点是它的分层结构。通常情况下,反射系统由两层组成: 一个基层和一个元层 4 0 , 3 8 。基层由所有的基层实体构成,这些基层实体与应用系 统的功能相关,负责执行应用系统的业务逻辑,是观测和调整的目标。元层由所 有的元层实体构成,这些元层实体与策略和机制相关,负责管理应用系统的资源, 控制应用系统的交互,是观测和调整的执行者。一个反射中间件的模型如图3 1 所示。 1 6 第3 章动态配置模型 元层 基层 一 一 ? ? ! 。| : 具体化t 丁n 反射 具体化ff。t 反射 7 。- ;一 :、:j 因 果 相 连 图3 - 1 反射中间件模型 f i g u r e3 - 1r e f l e c t i o nm i d d l e w a r em o d e l 通过图3 1 的描述可知,基层与元层之间是因果相连的,也就是说,基层实 体状态或行为的变化会导致元层实体做出相应的变化,而元层实体状态或行为的 变化也会导致基层实体做出相应的变化。实际上,元层实体定义了基层实体可以 观测和调整的内容及相关的操作,针对元层实体进行的观测和调整都将转换为对 基层实体的访问与操作,这个过程称为元层实体对基层实体的反射。只要保证层 与层之间的因果关联,一个反射系统的元层可以进一步细分,从而形成一个具有 一个基层和多个元层的反射塔。 在反射系统中,每一次反射计算都经过计算流上升和计算流下降两个步骤。 当基层对象执行某个行为时,计算流由基层产生,该行为首先被元层捕获,同时 计算流上升到元层,然后元层进行相应的操作,也就是执行元计算,当元层允许 基层对象执行时,计算流又回到基层,这两个步骤也称为计算上移操作和计算下 移操作。 3 1 3 反射模型与动态配置模型的关系 在对反射原理和动态配置原理进行分析后不难发现,动态配置模型与反射模

温馨提示

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

评论

0/150

提交评论