




已阅读5页,还剩50页未读, 继续免费阅读
(计算机软件与理论专业论文)基于构件的自组织软件体系结构研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中文摘要 软件体系结构是软件工程领域中发展迅速的一个研究领域。软件体系结构是指 系统中构件、连接件和它们之间的连接和配置等,是对软件系统的一个高层次的描 述。根据软件体系结构在运行时的演化方式,可以分为静态软件体系结构和动态软 件体系结构。一般的软件系统可以使用静态体系结构进行描述,但是对那些在运行 时能够动态地随用户需求和环境的变化而变化的软件系统,如自组织软件系统,静 态软件体系结构由于缺乏表示动态适应的机制,很难对这类系统进行描述和分析。 因此,本文对具有动态自组织软件体系结构进行了研究,并做了以下工作: 1 ) 在分析了目前自组织软件体系结构研究现状的基础上,针对自组织软件体 系结构中,构件元素管理、自组织变化策略以及自组织约束问题,采用分层的思想 提出了一个具有三层结构的自组织软件体系结构模型,论述了该模型中构件管理 层、变化管理层和约束管理层的主要功能。同时对模型中的构件管理、变化管理和 约束管理的实现问题进行了详细探讨,给出了变化的监测方法、基于元组的事件表 示、变化策略表示、动作表示以及它们之间的匹配方法、自组织过程中的重构算法 和约束规则检测方法。 2 ) 采用e c l i p s e 工具和插件技术等实现了变化监测、重构算法及约束检测,并 基于提出的三层模型设计和实现了一个图像处理模拟系统,模拟系统在运行时可以 根据用户需求变化进行重构,验证了该模型的可行性。 关键词:自组织软件;软件体系结构;重构;约束 a b s t r a c t s o f t w a r ea r c h i t e c t u r ei sar a p i d l yd e v e l o p i n gr e s e a r c hf i e l di ns o f t w a r e e n g i n e e r i n g s o f t w a r e a r c h i t e c t u r er e f e r st ot h e s y s t e mc o m p o n e n t s , c o n n e c t o r sa n dc o n n e c t i o n sb e t w e e nt h e ma n dt h e c o n f i g u r a t i o n ,i t i s h i g h l e v e ld e s c r i p t i o nf o rs o f t w a r es y s t e m s o f t w a r ea r c h i t e c t u r eb a s e do n t h ee v o l v i n gw a yi nt h er u n - t i m e ,c a nb ed i v i d e di n t os t a t i cs o f t w a r e a r c h i t e c t u r ea n d 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 e t h eg e n e r a ls o f t w a r e s y s t e m sc a nb ed e s c r i b e db yt h es t a t i ca r c h i t e c t u r e ,b u tf o rt h o s es o f t w a r e s y s t e m s ( s u c h a ss e l f - o r g a n i z i n gs o f t w a r es y s t e m s ) w h oc a nd y n a m i c a l l y c h a n g ei nt h er u n - t i m ea c c o r d i n gt ou s e r sd e m a n da n dt h ee n v i r o n m e n t c h a n g i n g ,i ti sd i f f i c u l tt od e s c r i b ea n da n a l y s i ss u c hs y s t e m s ,b e c a u s es t a t i c s o f t w a r ea r c h i t e c t u r ei sl a c ko fd y n a m i c a l l ya d a p t i v em e c h a n i s m s ot h i s p a p e rr e s e a r c h e so nt h es o f t w a r ea r c h i t e c t u r ew i t hd y n a m i cs e l f - o r g a n i z i n g , a n dd o e st h ef o l l o w i n gw o r k : 1 ) b a s e do nt h ea n a l y s i so ft h ec u r r e n ts e l f - o r g a n i z i n gs o f t w a r e a r c h i t e c t u r er e s e a r c h ,f o rc o m p o n e n te l e m e n t sm a n a g e m e n t ,s e l f - o r g a n i z i n g c h a n g i n gs t r a t e g ya n ds e l f - o r g a n i z i n gc o n s t r a i n t si ns e l f - o r g a n i z i n gs o f t w a r e t h ea r c h i t e c t u r e ,t h ep a p e rp r o p o s e sat h r e e t i e rs t r u c t u r a ls e l f - o r g a n i z a t i o n s o f t w a r ea r c h i t e c t u r em o d e la n dd e s c r i b e st h em a i nf u n c t io n so fc o m p o n e n t m a n a g e m e n t ,c h a n g em a n a g e m e n t ,c o n s t r a i n tm a n a g e m e n t a tt h e s a m e t i m e ,t h ep a p e rd i s c u s s e st h ei m p l e m e n t a t i o no ft h ec o m p o n e n tm a n a g e m e n t , c h a n g em a n a g e m e n ta n dc o n s t r a i n tm a n a g e m e n ti nd e t a i l ,a n dp r o v i d e st h e m o n i t o r i n gm e t h o d so fc h a n g e s ,t h ed e s c r i p t i o n s o fe v e n t s ,c h a n g i n g s t r a t e g ya n da c t i o nb a s e do nt u p l e s a sw e l la sm a t c h i n gb e t w e e nt h e m , s e l f - o r g a n i z i n gr e c o n f i g u r a t i o na l g o r i t h ma n dt h em e t h o do fc o n s t r a i n t s d e t e c t i o n 2 ) t h ep a p e ri m p l e m e n t sm o n i t o r i n g ,r e c o n f i g u r a t i o na l g o r i t h ma n dt h e c o n s t r a i n t sd e t e c t i o n ,a n dd e s i g n sa n di m p l e m e n t sas i m u l a t i o ns y s t e mf o r i m a g ep r o c e s s i n gw i t hf i l t e ra n dp i p e l i n ea r c h i t e c t u r es t y l eu s i n ge c l i p s e 1 i i t o o l sa n dp l u g i nt e c h n o l o g ya n ds oo n ,a c c o r d i n gt ot h ea b o v e m e n t i o n e d m o d e l ,a n dt h es y s t e mc a nb ec a r r i e do u tt h er e c o n f i g u r a t i o ni nt h er u n t i m e i na c c o r d a n c ew i t hc h a n g e so fu s e r sd e m a n d t h em o d e li sp r o v e dt ob e f e a s i b l e k e y w o r d s : s e l f - o r g a n i z i n g s o f t w a r e ; s o f t w a r e a r c h i t e c t u r e ; r e c o n f i g u r a t i o n ;c o n s t r a i n t s i v 声明尸州 本人郑重声明:所呈交的学位论文,是本人在指导教师的指导下, 独立进行研究所取得的成果。除文中已经注明引用的内容外,本论文 不包含其他个人或集体已经发表或撰写过的科研成果。对本文的研究 做出重要贡献的个人和集体,均已在文中以明确方式标明。本声明的 法律责任由本人承担。 作者签名: 垄童名 日期: 型z 幺缦 关于学位论文使用权的说明 本人完全了解太原科技大学有关保管、使用学位论文的规定,其 中包括:学校有权保管、并向有关部门送交学位论文的原件、复印 件与电子版;学校可以采用影印、缩印或其它复制手段复制并保存 学位论文;学校可允许学位论文被查阅或借阅;学校可以学术交 流为目的,复制赠送和交换学位论文;学校可以公布学位论文的全 部或部分内容( 保密学位论文在解密后遵守此规定) 。 作者签名: 垄壅窒 日期: 埤幺缓 导师签名: 日肌邋:垒丝 第一章绪论 第一章绪论弟一早三百下匕 1 1 研究背景 近年来,计算技术及企业业务的不断发展,企业应用常常面临这样的问题:软 件开发运行后不久,随着外部环境的变化、用户需求的调整和技术的进步,系统很 快便不能满足用户的要求。随着需求变更越来越频繁,如何找到一种开发模式,使 得所开发的软件能够适应需求的快速变化以满足用户个性化的需要,己成为软件研 究人员奋斗的目标。 软件不能适应需求变更,对于需求变化相对滞后的原因是:传统的软件过程模 型大多数是静态的、被动的、机械的,要求软件工程人员在描述软件过程时预期所 有可能发生的所有情况,并且显示地定义这些问题的解决方案。而当软件过程所处 的环境发生变化时,软件过程却无法自适应地对这些变更做出相应的调整【l 】。 软件系统体系结构在很大程度上决定了软件开发的成败,成为当前软件工程领 域的一个研究热点。软件体系结构从高层描述了构件、连接件和它们之间的连接及 配置。根据软件体系结构在运行时的演化方式,可以分为静态软件体系结构和动态 软件体系结构【2 】。随着软件开发的发展、用户需求的提高和系统适应性变化的增加, 这需要软件系统能够动态可配置。而可动态重配置的软件系统有时也称为具有动态 体系结构的软件系统【3 j 。 动态重配置可分为两种类型:预设的和非预设的。在开放环境中,软件在运行 过程中常常需要处理多种类型的信息,因此它们设计为可以动态下载并安装插件以 处理所面临的新类型的信息,这些动态改变都是软件设计者可以预先设想到的。但 有一些必须对系统配置进行修改和调整的情况是直到系统投入运行以后才发现的, 这时系统必须能够处理在原始设计中没有完全预料到的新需求。在这种情况下一般 需要关闭整个系统,重新开发,重新装入并重新启动系统。然而,在某些情况下为 了进行局部的修改而关闭整个系统是不允许的( 例如生命维持系统) 或者代价太高。 这种要求可以在不关闭整个系统的前提下修改系统的结构配置,并尽量使未受影响 的部分继续正常运行以提高系统的可用性。换句话说,也就是由于环境和用户需求 的可变性,而对系统提出了更高的要求具有自适应性。所谓自适应性就是要求 应用软件系统在运行过程中,能够监测到用户需求及运行环境的变化,并根据这种 变化对系统本身做出相应的调整,并且这种变化的监测和系统自身的调整应该是一 基于构件的自组织软件体系结构研究 个自动完成的过程,一方面不会影响系统本身的正常运行,另一方面尽量减少外界 的干预。 自组织软件系统具有的自我适应性、动态性以及开放性的特点满足了这种需 求,因此受到了业界的关注。自组织软件体系结构也成为了自组织软件系统研究的 核心问题之一。 1 2 研究现状 随着软件技术的发展呈现出动态性的特点,动态软件体系结构也已成为软件体 系结构研究中最为重要的方向之一。自1 9 9 4 年召开了首届软件体系结构国际研讨会 以来,软件体系结构研究领域取得了很多成果,但在应用方面,软件体系结构仍然 不是很成熟。动态体系结构由于其自身的动态性和复杂性更是如此。目前,对动态 体系结构的研究主要有三个方面:语言、模型和平台。 动态体系结构描述语言方面的研究目前主要是在体系结构描述语言中专门添加 用于演化的策略,这些策略是预先设定的。如在d a r w i n 语言【4 】中,允许运行时的构件 复制、删除和重绑定:d y n a m i cw f i g h t i 吾言5 1 采用了标签事件的技术;r a p i d e 语言【6 】 则是允许在w h e r e 语句中重新建立关联。但是这些语言的动态演化性要求体系结构在 运行时的变化都是事先预知的,并没有达到真正的动态性。 在模型方面,j d o w l i n g 等人设计tk c o m p o n e n t 元模型【_ 7 1 。在k c o m p o n e n t 元模 型中,通过一个具有类型的连接图来表示应用系统的软件体系结构,其中的图节点 表示构件接口,类型标签表示构件,有向边表示构件之间的连接。这个连接图和运 行系统之间建立因果连接由一个反射机制来实现的,然而它主要是靠静态代码的映 射,缺乏灵活性。心c h s t u d i o 【8 1 是一种支持c 2 体系结构的动态修改的工具。图1 1 表 示a r c h s t u d i o 的概念视图。a r c h s t u d i o 有三个工具作为体系结构更改的源:a r g o , a r c h s h e l l 和e x t e n s i o nw i z a r d 。a r g o 提供了一个图形化的体系结构表示,通过它可以 方便地对体系结构模型进行操作。a r c h s h e l l 采用一种文本的方式,利用命令行界面 来指明运行时的更改,命令包括删除构件和连接件,体系结构重新配置及将体系结 构以文本方式显示出来。e x t e n s i o nw i z a r d 工具用来将更改发布给用户。但是 a r c h s t u d i o 采用的软件体系结构仅仅是设计阶段的制品,无法刻画真实系统的运行状 态和行为,并且它仅限于处理遵循c 2 体系结构风格的软件动态修改,变化的合理性 与j 下确性也难以确保。 2 第一章绪论 s o u r c e zo f a r c h l t e c t u r a ! c h a n g e c h a n g e s 、i l n p h c l n ya f f e c t 、,z m p l e m e n t a n o n 匿旧一 图1 1a r c h s t u d i o 的概念视图 f i g u r e1 - 1t h ec o n c e p tv i e wo fa r c h s t u d i o 北京大学的p k u a s 系统【9 】是基于体系结构的,和j 2 e e 兼容的一个反射构件操作 平台。p k u a s 采用构件化的平台内部体系结构,并引入运行时软件体系结构( r u n t i m e s o f t w a r ea r c h i t e c t u r e ) 作为全局视图,用以实现反射体系对系统整体的表示和控制。 它对反射的实现主要通过元模型、元协议和元数据。p k u a s 采用扩展传统体系结构 描述语言a b c a d l 描述运行时体系结构,使之具备能够继承设计阶段体系结构所含 语义能力。但由于a b c 佾d l 缺乏构件行为和交互的形式化描述,p k u a s 没有解决构 件替换时的可观察行为的一致性问题。 南京大学马晓星等提出了一种面向服务的动态协同架构o j ,引入内置的运行时 体系结构对象来解耦系统中的各个服务构件,并通过该对象,从体系结构的视角来 重新解释服务构件之间的引用和交互。把体系结构从抽象的概念具体化为能够直接 操作的对象。这样就可以利用面向对象程序设计语言的继承和多态等机制,实现面 向体系结构的系统动态演化。其所开发的支撑平台a r t e m i s a r c 为具有动态演化能力 的面向服务应用系统的开发、运行和监控提供了一套集成环境。 自组织软件体系结构作为一种动态的软件体系结构,和上述研究的目标是一致 的,都是为了满足日益增长的软件动态适应性。它是在1 9 9 6 年英国的j m a g e e ,a n d j 艮锄e r 【1 1 】首次提出的,但只对它做了一定的描述;最具有代表性的是2 0 0 2 年由英国 黑 基于构件的自组织软件体系结构研究 自, o l o a n n i sg e o r g i a d i s 等人为处理分布式系统复杂性提出的自组织体系结构。它使用 了一种基于约束i ;勺a l l o y 模型语言【1 3 】对自组织体系结构进行描述,采用了a d l 中的基 于图表的观点,并通过三种方法扩展了此观点:组件的属性、组件的局部规约和交 叉共存的体系结构风格即开放式体系结构,利用a l l o y 约束分析器【1 4 】提供对体系结构 进行分析。描述了一种根据体系结构风格构建和维护系统的分布式算法,使用了一 个分布式的容错系统【1 4 】作为平台实现其构建算法。但是它使用的a l l o y 语言具有的 简单性和一般性在描述体系结构约束时造成了一定的障碍,尤其是在描述细节方面 会显得冗余和脆弱。并且它只对结构约束进行了描述,没有对行为约束进行阐述。 1 3 本文主要工作 本文在分析了目前动态体系结构及自组织软件体系结构研究现状的基础上,从 软件的构件对象管理、软件体系的驱动因素管理及软件自组织的约束管理方面进行 了综合研究。首先针对自组织软件体系结构中,构件元素管理、自组织变化策略以 及自组织约束问题,提出了一种具有三层结构的自组织软件体系结构模型,论述了 构件元素、系统的自组织变化策略及结构约束和行为约束;其次,对实现构件管理、 变化管理和约束管理的关键方法和技术进行了阐述,并给出了自组织重构算法、基 于元组的对象表示和匹配方法等;最后,使用e c l i p s e - f 具和插件技术等实现了重构 算法,并根据上述模型,设计和实现了一个图像处理模拟系统,并实现了系统运行 时可以根据需求进行后期重构,验证了该模型的可行性。 1 4 论文组织结构 本文主要提出了一个三层的自组织软件体系结构模型,并验证了其实现的可行 性。本文共分为五章: 在第二章介绍了自组织系统和体系结构的相关背景,在自组织系统方面主要介 绍了自组织系统的定义、分类等;在体系结构方面,主要介绍了软件体系结构的一 般概念,动态软件体系结构及适应性软件体系结构相关知识。 第三章对本文提出的自组织软件体系结构模型进行了描述,并对其各层的实现 机理进行了详细的分析与探讨。 第四章主要针对在此模型的基础上,以管道过滤器风格作为系统的体系结构来 构建了一个图像处理模拟系统,并实现了根据需求变化系统可以进行后期的演化。 第五章对本文进行总结,并对一步工作进行展望。 4 第二章自纽织与动态软f , :体系结构 第二章自组织与动态软件体系结构 2 1 自组织软件系统 2 1 1 自系统的分类 所谓自系统是系统根据外部变化能够自我做出调整,以适应这种变化。它其中 包含了一些相关的概念。这些概念相互交叉、包容和相互联系。如图2 1 所示。 图2 - 1 自系统的分类 f i g u r e2 - 1s e l f - s y s t e mc l a s s i f i c a t i o n s e l f - a d a p t i v e t ”1 是指软件系统具有对其运行环境变化做出动态反应能力和根据 需求自行调整其行为以提供和提高系统功能与性能;s e l f - c o n f i g u r i n g t l 6 】是指软件系 统能够在运行中完成自我配置;s e l f - o p t i m i z i n g 是指软件系统能够监控和优化系统 资源;s e l f - e v o l v i n g t l 7 1 是指软件系统具有进化能力;s e l f - r e p a i r i n g f l 8 1 是指软件系统在 运行过程中能够自动发现系统故障和可能的失败,并进行修复。s e l f - o r g a n i s i n g l l 2 1 是指软件系统中构件能够自动配置它们之间的连接,并遵循系统体系结构设计的约 束规则。这些概念是从不同的侧面描述了体系结构,在研究系统体系结构和实际应 用过程中往往重组它们各自的属性,以提供一个在运行时重构的情况下总是有效的 系统。 2 1 2 自组织软件系统 下面是来自不同学科对自组织的不同研究与理解【1 9 】: 1 ) 群体智能。来源于对昆虫行为的研究,白蚁筑巢理论阐述了白蚁通过把信 基于构件的自组织软件体系结构研究 息投放到环境中去间接完成任务,而在此过程中没有任何的集中控制。在 这里的自组织是系统内部的行为事件引起的。 2 ) 熵值减少。来源于热力学研究,当对开放系统旋加外界压力时,开放系统 在外界压力的作用下呈现自组织行为,减少了它们的熵值。在这里的自组 织是由于对系统使用了外界压力。 3 )自繁殖。来源于生物学研究,自繁殖是一个能够通过一种组织而产生其本 身,它可以应用到封闭系统中,封闭系统中的自治构件通过产生系统构件 来自维护系统。如生命系统( 细胞或者器官) 。在这里的自组织是通过自 繁殖来自维护的。 在上述几种情况,自组织在不同的条件下,实现机制也不相同。但是所有的这 些情况,都阐述了一个基本的概念,即自组织是当环境发生变化时,能够自发的产 生一个新的组织去适应这种变化。 把这种自组织能力应用到软件系统中,也就形成了自组织软件系统。g e o r g i a d i s 等人旧认为:“自组织软件系统是指,在它当中的构件能够以遵循整体的体系结构 规约方式自动构建它们之间的交互。 也就是说,具有自组织的软件系统是系统在 构建或后期变化阶段,要求在人类干预最小化的情况下能够达到一个可接受的状态 【1 2 1 。所谓的可接受状态不一定是一个稳定的状态,而只是一个遵循系统全局规约( 如 安全性、有效性等) 的状态。 2 2 动态软件体系结构 2 2 1 软件体系结构的基本概念 软件体系结构是随着描述大型、复杂系统结构的需要和开发人员在大型软件系 统的研制过程中对软件系统理解逐步深入发展起来的。软件体系结构是当前软件工 程领域的一个研究热点,是大型软件开发中必须解决的核心技术。随着软件规模和 复杂程度不断扩大和增加,软件开发的成败在很大程度上取决于软件体系结构的设 计。大量的软件工程实践也证明了一个成功的软件系统往往都有一个好的软件体系 结构。 软件体系结构一般指的是系统的组织结构、它们之间的关联关系以及支配系统 设计的原则和方针。一个系统的软件体系结构包括构成系统计算单元的构件、规范 构件间交互行为的连接件以及构件和连接件如何结合在一起的配置组成。 构件( c o m p o n e n t ) 是指计算和数据存储的单元,可以从接1 5 1 、类型、语义、约束 6 第二章白乡r 织与动态软件体系结构 等方面对它进行刻画。构件的粒度可大可小,可以小到只有一个过程,也可以大到 包含一个应用程序。 连接件( c o n n e c t o r ) 是用来建立构件间的交互以及支配这些交互规则的体系结 构构造模块。它也可以从接口、类型、语义、约束等方面进行刻画。常见的连接件 有管道( p i p e ) 、通信协议或通信机制等。 体系结构配置( c o n f i g u r a t i o n ) 描述体系结构的构件和连接件的连接关系和拓扑 要求。体系结构配置提供了约束来确定构件是否正确连接、接口是否匹配、连接件 的通信是否正确,并说明实现要求行为的组合语义。 2 2 2 软件体系结构的研究现状 下面我们从软件体系结构的描述语言、体系结构风格两方面来描述软件体系结 构的研究现状。 a d l ( 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 ) 提供了一种形式化机制来描述软件体系 结构,这种形式化机制主要通过提供语法和语义描述来模拟构件、连接件和配置。 已经提出的体系结构描述语言包括了通用和特定应用领域两类。女i a e s o p 支持结构风 格的使用;c 2 使用消息风格支持用户界面系统的描述等;a c m e i 2 1 】是一个通用的 软件体系结构和体系结构族的描述语言。通过连接件实现交互关系的部件的图来描 述系统,并支持把构件和连接件分解为子系统,支持元素族和类型的描述。 但是大多数a d l s 只描述系统的静态结构,不支持对体系结构动态性的描述,目 前常见的几种支持动态描述的语言主要有d a r w i n ,r a p i d e 矛i d y n a m i cw r i g h t 等。动态 a d l 的思路主要是在a d l 中专门设计用于预设演化的策略表示机制。如在d a r w i n 语 言 4 1 中,允许运行时的构件复制、删除和重绑定;d y n a m i cw r i g h t i 吾言【5 】采用了标签 事件的技术;r a p i d e 语言【6 】贝0 是允许在、v h e r e 语句中重新建立关联。 体系结构风格通常根据抽象元素( 构件和连接件) 以及它们的拓扑结构( 关系 和属性) 进行描述,是一类具有许多共同特征的软件体系结构的共同描述。根据s h a w 和g a r l a n 的定义【2 2 】 软件体系结构= 构件,连接件,约束 所以,软件体系结构可以用来表示体系结构风格,也可以看作是某种软件体系 结构风格的具体实例。 体系结构风格的分类有多种,其中最典型的是m a r y 矛i g a r l a n 根据信息交互的不 同类型将风格分为数据流系统、调用返回系统、独立构件、虚拟机、中央数据库( 仓 库) 系绀2 3 1 。其中,数据流系统包括顺序批处理和管道过滤器风格;调用返回系统 7 基丁构件的白组织软件体系结构研究 包括主程序子调用、面向对象系统、分层系统;独立构件包括通信进程和基于事件 的隐式调用;虚拟机包括解释器和基于规则的系统;仓库风格包括数据库、超文本 系统和黑板等。除了这些分类外,还有另外一些:固定术语派生而来的体系结构风 格,如c 2 ;特定领域体系结构风格,如过程控制、模拟器;特定结构体系结构风格, 如分布式处理等。而且随着软件开发技术的发展,新的风格也在不断涌现,如正在 兴起的面向智能体( a g e n t o r i e n t e d ) 。 在这罩我们主要介绍一下管道过滤器风格。管道过滤器风格最早出现在u n i x 系 统中,是一种数据流系统。它是由分别称为过滤器的构件和管道的连接件组成的体 系结构。过滤器有一组输入端口和一组输出端口,是数据加工处理的功能模块。管 道负责过滤器之间的连接。管道过滤器风格如图2 2 所示。 管道 图2 2 管道过滤器风格 f i g u r e2 - 2p i p ea n df i l t e rs t y l e 过滤器的功能是从输入端口的集合中读取数据,并对数据进行n - r 处理,完成 增量计算,再向输出端口集合输出数据。在管道过滤器风格中,特别重要的是过 滤器必须是独立的实体,它不能与其它的过滤器共享数据,而且一个过滤器不 知道它上游和下游的标识。仅需要对输入管道和输入数据流进行的限制。它保 证在管道的输出数据流有相应的内容。一个管道过滤器系统输出的正确性并 不依赖于过滤器进行增量计算过程的顺序。 图2 2 仅仅是管道过滤器风格的一般形式。若对管道过滤器风格进行一些限制, 可以有多种形式的管道过滤器子风格。如果限制存放在管道中的数据量,则被称为 有界管道。如果每个过滤器作为单一实体处理它所有的输入数据,此时的体系结构 已经退化为顺序批处理系统。如果将此风格的拓扑结构限制为过滤器的线性序列, 则被称为管线。 8 第一二章自组织与动态软r ;:体系结构 2 2 3 动态软件体系结构 大量的软件工程实践证明了体系结构设计在很大程度上决定了系统成败,尤其 是对于那些大型系统,良好的体系结构设计能够有效地克服开发过程中不可见性、 多样性和易变性等困难。如果选择不合适的体系结构可能导致灾难性的后果。软件 体系结构从高层次的、抽象层次描述了软件的整体架构,便于我们更好的理解系统 的设计原则,并可以对选择某一体系结构做出合理解释。 系统的总体结构在一般情况下一旦被设计好之后,系统在运行时,它的体系结 构是不变的。许多软件体系结构研究假定系统的体系结构是静态的,在系统运行期 间,系统总体结构就不再变化【2 4 】。许多体系结构模型标记和工具,j z l l w r i g h t ,u n i c o n 就是基于这一假定。但随着近年来软件开发的发展对系统的动态性、稳定性、可维 护性、适应性等方面的要求日趋紧迫。尤其是系统的适应性要求愈来愈明显。软件 系统需要适应性,主要来自以下几个方面【2 5 】: 1 ) 用户需求。软件系统的用户需要在不同的环境中有不同的处理和性能表现。 如无人驾驶飞机能够在敌方有防备和无防备情况的情况下,进行不同的处理 和相互的协作【2 6 1 。这就需要系统在持续正常运行的情况下,自动加载相应的 计算构件来完成任务。 2 )开发人员的设计要求。对于大型复杂软件系统,由于受到各种软硬件和网络 资源的限制。需要在运行时,针对不同的任务动态地加载和删除构件、连接 件。以便有效地利用系统资源。 3 ) 软件维护的需要。从软件系统的长期观点来看,所开发的软件系统应当能够 适应于将来变化的软硬件环境,如操作系统的升级与更新,用户在使用过程 中功能升级和功能扩充。软件设计应充分考虑到软件的可维护性、可扩充性。 这属于软件系统的非功能需求b 。 上述三种变化来源也可以表达为下面三种情况: 1 ) 用户的需求随时会发生变化。这属于上层系统变化; 2 ) 系统运行环境发生变化。主要是硬件的变化和网络环境的变化,这相对于上 层系统变化而言属于底层系统变化; 3 ) 系统的技术性变化。这主要是系统的技术升级等。 在各种需求中,系统在功能方面的适应性不仅要求系统能够在不同的软硬件环 境稳定地运行。而且还需要在不同的运行环境中能够调整自身的状态,达到最佳服 务功能。例如网格服务器能够在大量的客户请求中保持高的吞吐量。在当前的软件 0 基丁构件的自组织软件体系结构研究 需求中,分布式系统( d i s t r i b u t e ds y s t e m ) 、开放系统( o p e ns y s t e m ) ,网格计算( g r i d c o m p u t a t i o n ) 等应用系统都需要运行时具有动态适应性。这些系统的体系结构在运行 期间可以根据需要进行变化。因此,这些系统的体系结构不能用静态的体系结构准 确的建模和分析。比如一个需要长时间运行的重要的软件系统,若是关闭或重新启 动该系统需要很高的代价和风险。这需要精确的方法或机制来允许系统在执行期进 行扩展和演化。 p e y m a no r i e z y 认为软件体系结构可能发生变化的四个时期【2 8 1 : 1 )设计时:这种修改变化是在体系结构模型和相关代码在被编译前做出的。此 时只需要替代或修改抽象的体系结构模型,这些修改相对容易,也容易理解。 2 ) 预执行时:修改变化发生在执行之前,编译之后。由于这些应用程序并未执 行,修改时可以不考虑应用程序的状态,这些修改需要应用系统的体系结构 模型包含其中( 如在二进制可执行代码中嵌入) ,还需要应用程序添加和删除 组件的机制。 3 ) 受约束的运行时:修改只发生在某些特定约束满足时,以保证当应用系统发 生改变时要处于“安全”的状态。 4 ) 运行时:程序的状态或体系结构的拓扑结构在运行时不能满足要求时发生的 改变。包括改变的操作有:添加构件、删除构件、升级替换构件、改变体系 结构的拓扑结构。修改方法是增加或删除构件间的连接、替换处理元素构件 的映射、查询体系结构元素的性质( 如获取版本信息) 、查询当前体系结构的 拓扑结构。 如上面所述,引起软件体系结构变化的原因是多方面的。所以,对软件后期的 重配置进行理解和控制显得比较困难。软件重配置涉及四个方面: 1 ) w h a t ,变更什么,变更的对象和粒度大小以及变更的结果; 2 ) w h e n ,变更的时序属性,什么时候变更,变更的频度和历史; 3 ) w h e r e ,变更发生的地点以及由谁触发变更; 4 ) h o w ,如何变更,包括变更的类型、过程及方法。 其中最核心的问题是第四个方面。在软件动态重配置过程中,应该具备一定的 方法和机制来保证和维护软件系统的正确性,这包含如下几层含义: 1 ) 可以预先推动变化的结构及其影响的范围。在发生软件变化前,对“变化之 后软件是否满足了需求? 变化后的软件是否符合应用约束条件? 软件的全 局性属性如安全性、可靠性等是否受到了影响? 如果有,影响结果多大? ” 1 0 第二章自组织与动态软件体系结构 这些问题都应该有合适的机制进行自动预测和评估,并决定是否进行动态重 配置。 2 ) 具有灵活的变化策略定义和处理机制。不仅能表示和处理预设的重配置,也 能处理非预设的变化。 3 ) 对软件系统组成成员的替换,能够保证替换前后成员的外部行为的一致性。 因为软件系统的各部分都是相互协作和相互通信的,其中的一个成员的功能 可能需要其他成员的配合来完成,所以每一个成员都对和它进行协作的成员 有一个期望的交互方式和行为约束。换句话说,就是在替换软件成员时,不 仅要使得它们的接口保持兼容,而且它们的可观察的外部行为也应该保持 致性。 4 ) 具备控制配置过程的手段,保持应用的完整性。动态重配置的整个过程都应 该可以得到控制,保证重配置完整进行。例如在动态重配置过程中发生了错 误,可以采取措施进行回滚,撤销刚做出的任何变化。 5 ) 实时、较准确地对变化前后状态进行迁移的机制,以维持变化期间的上下文 一致性。当软件执行到某一断点时,可以从系统配置中撤换下来,它保持有 一定的状态信息。当该构件重新连接进入系统时需要从撤换时的断点继续开 始执行。 一般的动态重配置过程模型f 2 9 】如图2 3 所示。根据系统的设i :- i - d e s i g n i ,实现和部 署了应用系统后,即可得到相应系统配置信息c o n f i g u r a t i o ni n f o r m a t i o n i ,通过动态修 改,系统从当前的配置c o n f i g u r a t i o ni n f o r m a t i o n i 增量式的在线演化到一个新的配置 c o n f i g u r a t i o ni n f o r m a t i o n i + 1 。 基于构件的白组织软件体系结构研究 图2 - 3 动态重配置过程 f i g u r e2 - 3d y n a m i cr e c o n f i g u r a t i o np r o c e s s 动态配置策略描述了实现动态配置意图的具体步骤。动态配置策略必须能够保 证系统在动态修改期间和动态修改后处于正常的运行状态。在动态配置实施的过程 中,系统中的某些构件和连接可能会受到影响而无法正常工作。但是对于整个系统 来说,除了它在性能上有所降低外,它的整体行为仍然是要正确或者是符合预期的。 这也就是说在动态修改中系统一定要处于正常运行状态。 动态重配置的实施必须保证:动态配置意图最终被用到了运行的软件系统上; 应用软件系统仍可以正常运行;动态修改的约束条件得到满足。一个动态修改可能 需要多种修改操作。例如一个网上订购系统的订单处理构件要正确升级,在升级前 需要验证:a 己有构件的版本比升级的构件要低。b 确保对原有构件有依赖的构件不 会被影响。c 检查新构件所依赖的构件已经存在和可用。如果b 或c 失败了,其它修改 操作需要再替换为原有的构件,使得修改操作是一个原子操作。即如果其中之一的 操作失败了,整个操作集都要被撤销,从而避免系统出现不稳定的状态,保证了系 统j 下常有效的运行。动态修改约束是用来表明哪些部分可以被修改的机制,确保系 统在允许范围内的修改,降低体系结构在运行时的改变给整个系统的稳定运行带来 风险。 动态体系结构着重描述了系统在运行时的变化,包括添加构件、删除构件、升 1 2 第二章白组织与动态软件体系结构 级替换构件等。越来越多的机构和个人在动态体系结构演化及其约束验证方面开展 工作并取得良好成果。 软件体系结构对动态重配置及其约束,首先体现在动态 拘a d l f l , j 研究。体系结 构描述语言a c m e 使用一阶谓词逻辑作为约束描述语言,还引入函数表示体系结构 的特定特征,在给出约束描述后,在a r m a n i 原型系统中实现了一个基于深度优先算 法的体系结构检查器【2 l 】。其他一些动态体系结构描述语言,女 1 w r i g h t 引,d a r w i n 4 】 等,均给出了约束描述和约束检查算法。这些方法在完善性、直观性、应用复杂性 等方面不同程度地存在不足之处。例如a c m e 限制类型的表示,使得结构类型元素 是一个有限集合,从而解决一阶谓词逻辑的不可判定性问题;w r i g h t 中对状态机进行 穷尽搜索,因此在时间和空间上存在限制;d a r w i n 提供的编译器尚不完善,有些违 反约束的情况无法检查出来。 软件体系结构对动态重配置及其约束,还体现为以体系结构为核心的应用模型 和软件架构研究。j d o w l i n g 等人设计了k c o m p o n e n t s ;模型1 7 j 。k c o m p o n e n t 元模型 是通过提供体系结构元模型和适配契约( a d a p t a t i o nc o m r a t s ) 来支持系统的动态重配 置。适配契约显式地表达适配逻辑。软件体系结构由一个具有类型的连接图来表示, 其中的图节点表示构件接口,类型标签表示构件,有向边则表示构件之间的连接。 这个连接图和运行系统之间建立因果连接由一个反射机制来实现的,然而它主要是 靠静态代码的映射,缺乏灵活性。 a r c h s t u d i o 8 】是一种支持c 2 体系结构的动态修改的工具。它有三个工具作为体系 结构更改的源:a r g o 、a r c h s h e l l 和e x t e n s i o nw i z a r d 。a r g o 提供了一个图形化的体系 结构表示,通过它可以方便地对体系结构模型进行操作。a r c h s h e l l 采用一种文本的 方式,利用命令行界面来指明运行时的更改,命令包括删除构件和连接件,体系结 构重新配置及将体系结构以文本方式显示出来。e x t e n s i o nw i z a r d 工具用来将更改发 布给用户。但是a r c h s t u d i o 采用的软件体系结构仅仅是设计阶段的制品,无法刻画真 实系统的运行状态和行为,并且它仅限于处理遵循c 2 体系结构风格的软件动态修改, 变化的合理性与正确性也难以确保。 国内北京大学开发的p k u a s 系统【9 】是基于运行时( r u n t i m es o f t w a r ea r c h i t e c t u r e , 简称r s a ) 体系结构和j 2 e e 兼容的一个反射构件操作平台。p k u a s 采用构件化的平 台内部体系结构,并引入运行时软件体系结构作为全局视图,用以实现反射体系对 系统整体的表示和控制。它对反射的实现主要通过元模型、元协议和元数据。p k u a s 采用扩展传统体系结构描述语言a b c a d l 描述运行时体系结构,使之具备能够继承 基丁| 构件的自组织软件体系结构研究 设计阶段体系结构所含语义能力。但由于a b c a d l 缺乏构件行为和交互的形式化描 述,p k u a s 没有解决构件替换时的可观察行为的一致性问题。 为了能够让应用系统以灵活的适应底层因特网计算环境和用户需求的变化,南 京大学马晓星等提出了- - 幂e e 面向服务的动态协同架构l lo j ,引入内置的运行时体系结 构对象来解耦系统中的各个服务构件,并通过该对象,从体系结构的视角来重新解 释服务构件之间的引用和交互。把体系结构从抽象的概念具体化为能够直接操作的 对象。这样就可以利用面向对象程序设计语言的继承和多态等机制,实现面向体系 结构的系统动态演化。并且以此开发了
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 缝纫工国庆节后复工安全考核试卷含答案
- 油脂及脂肪酸加氢操作工中秋节后复工安全考核试卷含答案
- 车辆定位抵押合同(标准版)
- 客户服务管理员中秋节后复工安全考核试卷含答案
- 2025年人工智能小镇项目规划申请报告
- 烟机钳工中秋节后复工安全考核试卷含答案
- 锁具修理工国庆节后复工安全考核试卷含答案
- 电器附件装配工国庆节后复工安全考核试卷含答案
- 机械设计课程作业指导资料
- 二手房屋合同范本7篇
- 贷款中介签服务合同模板(3篇)
- 急性宫外孕课件
- 贵阳市2026届高三年级摸底考试物理试卷(含答案)
- 美发编发基础知识培训课件
- 同期线损培训课件
- 反诈知识竞赛试题及答案
- 钢筋加工棚租赁合同范本
- 2025年电梯检验员资格考试历年真题及答案试题试卷(含解析)
- 眼整形课件教学课件
- 公司法务知识培训会课件
- 2025年药企QA人员岗位职责培训考核试题及答案
评论
0/150
提交评论