(计算机应用技术专业论文)神经构件模型和软件体系结构演化方法的研究.pdf_第1页
(计算机应用技术专业论文)神经构件模型和软件体系结构演化方法的研究.pdf_第2页
(计算机应用技术专业论文)神经构件模型和软件体系结构演化方法的研究.pdf_第3页
(计算机应用技术专业论文)神经构件模型和软件体系结构演化方法的研究.pdf_第4页
(计算机应用技术专业论文)神经构件模型和软件体系结构演化方法的研究.pdf_第5页
已阅读5页,还剩63页未读 继续免费阅读

(计算机应用技术专业论文)神经构件模型和软件体系结构演化方法的研究.pdf.pdf 免费下载

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

文档简介

大连理工大学硕士学位论文 摘要 软件演化指的是软件进行变化并达到所希望形态的过程,可分为静态演化和动态演 化两种类型。由于动态演化具有持续可用性的优点,已成为软件工程研究的热点。但动 态演化比静态演化更为复杂,技术上更难以处理。现代软件的复杂性决定了动态演化研 究应从宏观层面入手。为支持基于体系结构的动态演化,本文较系统地从构件、软件体 系结构框架、软件体系结构动态配置等方面逐步展开研究。 本文基于神经传导理论,提出了模拟神经元电信号传导的神经构件信息处理模型 n c i a m ,并根据该模型建立了神经构件。在神经构件中,某一构件与其他构件之间的 信息传导被模型化为模拟神经传导的抽象类型。构件自身计算功能等传统构件功能被模 型化为新的构件体;构件之间的交互点则被模型化为信息传导连接体。神经构件具有自 主分析传导的信息,并根据分析结果来进行构件自身行为和构件闯信息传导连接,可显 性表示信息传导的变更计划。计划行为被形式化描述,从而直接地以自组织自我管理的 形式达到动态演化的要求。 在神经构件基础上,继续对动态演化的软件体系结构进行研究。本文引用多a g e n t 系统设计思想,提出了基于神经构件的动态演化软件体系结构模型n d s a 。定义了该体 系结构模型的基本元素,阐述了模型的组成结构,并分别就局部演化和全局演化的演化 实现进行了设计和分析。该模型可支持神经构件间的连接改变、神经构件的增加、删除 以及体系结构拓扑结构的重新配置等等,能够很好地支持局部和全局的动态演化。在该 模型的基础上,从大粒度的宏观角度描述并分析了基于n d s a 模型的动态演化软件体系 结构框架。 最后为了使基于神经构件的动态演化软件体系结构能够更加完善更加高效地实施 动态演化,本文引入了反射理论提出了个反射配置模型,该模型可以从体系结构的高 度高效地迅速地辅助软件系统迸行演化。根据该模型建立的基于反射理论的动态配置系 统,可以实现比基于传统体系结构的演化行为更加具有开放性和动态适应性的动态演化 功能。 关键词:软件动态演化;神经传导;神经构件模型;n d s a 模型;反射配置模型 神经构件模型和软件体系结构演化方法的研究 r e s e a r c ho nn e u r a lc o m p o n e n tm o d e la n ds o f t w a r ea r c h i t e c t u r e d y n a m i c e v o l u t i o n a b s t r a c t 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 so fe v o l u t i o no fa c h i e v i n gt h ed e s i r e df o r mb yt h e s o f t w a r ec h a n g e s i ti n c l u d e ss t a t i ca n dd y n a m i ce v o l u t i o n s b e c a u s eo ft h ea d v a n t a g e so fa l l o n g o i n ga v a i l a b i l i t yt h ed y n a m i ce v o l u t i o no fs o f t w a r ee n g i n e e r i n gr e s e a r c hh a sb e c o m eah o t s p o t b u tt h ed y n a m i ce v o l u t i o ni sm o r ec o m p l e xa n dm o r ed i f f i c u l tt h a ns t a t i ce v o l u t i o nt o h a n d l ei nt e c h n o l o g y t h ec o m p l e x i t yo fm o d e ms o f t w a r ed e t e r m i n e st h er e s e a r c ho fd y n a m i c e v o l u t i o ns h o u l ds t a r tw i t ht h em a c r ol e v e l t os u p p o r ts a ( s o f t w a r ea r c h i t e c t u r e ) 一b a s e d d y n a m i ce v o l u t i o n , t h i sa r t i c l em a k e ss o m es y s t e m a t i cr e s e a r c ho nc o m p o n e n t 。s o f t w a r e a r c h i t e c t u r ef r a m e w o r ka n dd y n a m i cc o n f i g u r a t i o ne t c b a s e do nn e u r o nc o n d u c t i o nt h e o r y ,w em a k ean e u r a lc o m p o n e n ti n f o r m a t i o na n a l y s i s m o d e l ( n c i a m ) b yi m i t a t i n gt h ee l e c t r i c a ls i g n a lc o n d u c t i o no ft h en e u r o n , a n dm a k ea n e u r a lc o m p o n e n tm o d e lw i t hi t i nn e u r a lc o m p o n e n t 。i n f o r m a t i o nc o n d u c t i o nb e t w e e no n e p a r t i c u l a rc o m p o n e n ta n do t h e rc o m p o n e n t so f i sm o d e l e da sa l la b s t r a c tt y p eo ft h e s i m u l a t i o n so f n e r v ec o n d u c t i o n t h ec o m p o n e n t so t h e rt r a d i t i o n a lf e a t u r e sa r em o d e l e di n t o an e wc o m p o n e n t b o d y ;t h ep o i n to fi n t e r a c t i o nb e t w e e nt h ec o m p o n e n t sa r em o d e l e da s i n f o r m a t i o nt r a n s d u c t i o nl i n k e r s o nt h eb a s i so ft h en e u r a lc o m p o n e n tm o d e l w ec o n t i n u e d 廿l er e s e a r c ho i lt h es o f t w a r e a r c h i t e c t u r eo fd y n a m i ce v o l u t i o n u s i n gt h em u l t i a g e n ts y s t e md e s i g ni d e aw em a d ea n e u r a lc o m p o n e n t - b a s e dd 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 ln d s a ( n e u r o nc o m p o n e n t m o d e l - b a s e dd s a ) kd e f i n e dt h eb a s i ce l e m e n t so ft h em o d e la n de x p l a i n e dt h e e o m p o s i t i o no f t h em o d e ls t r u c t u r e a n dw ea n a l y z e d 也el o c a la n dg l o b a le v o l u t i o no ft h e m o d e l o nt h eb a s i so ft h em o d e l ,f r o mt h ev i e w o fl a r g e g r a i n e d , w ed e s c r i b e da n da n a l y z e d t h es o f t w a r ea r c h i t e c t u r ef r a m e w o r ko ft h ed y n a m i ce v o l u t i o nb a s e do nt h em o d e ln d s a u l t i m a t e l y ,i no r d e r t om a k es u r et h ed y n a m i ce v o l u t i o nb a s e do nn e u r a lc o m p o n e n t s o f t w a r ea r c h i t e c t u r ei sm o r ep e r f e c tm o r ee f ! f i c i e n ti m p l e m e n t a t i o no fd y n a m i ce v o l u t i o n , w e i n t r o d u c e dt h et h e o r yo far e f l e xc o n f i g u r a t i o nm o d e l a c c o r d i n gt ot h em o d e lw ee s t a b l i s h e d ad y n a m i cc o n f i g u r a t i o ns y s t e mb a s e do nt h em o d e l k e yw o r d s :d s a ;n e u r o nc o n d u c t i o n ;n e u r a lc o m p o n e n tm o d e l ;n d s a ; r e f l e c t i o nr e c o n f i g u r a t i o nm o d e l i i 大连理工大学学位论文独创性声明 作者郑重声明:所呈交的学位论文,是本人在导师的指导下进行研究 工作所取得的成果。尽我所知,除文中已经注明引用内容和致谢的地方外, 本论文不包含其他个人或集体己经发表的研究成果,也不包含其他已申请 学位或其他用途使用过的成果。与我一同工作的同志对本研究所做的贡献 均已在论文中做了明确的说明并表示了谢意。 若有不实之处,本人愿意承担相关法律责任。 学位论文题目:益经擅住搓型盘敦往篮丕箜擅渲化友洼鲍盈究 作者签名:垫熟! 瞳日期:垒址也月日 大连理工大学硕士学位论文 大连理工大学学位论文版权使用授权书 本人完全了解学校有关学位论文知识产权的规定,在校攻读学位期间 论文工作的知识产权属于大连理工大学,允许论文被查阅和借阅。学校有 权保留论文并向国家有关部门或机构送交论文的复印件和电子版,可以将 本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、 缩印、或扫描等复制手段保存和汇编本学位论文。 学位论文题目 作者签名 导师签名 控经抱鲑搓型狸熬往篮丞结堑演化左洼数赞究 垂整:! 垒日期:止年韭月j 显日 f :虱鎏日期:三垒五年j 兰_ 月型i _ 日 大连理工大学硕士学位论文 1 绪论 1 1 研究背景及意义 为适应计算环境和用户需求在系统运行期间的变化,满足软件系统进行动态演化的 需求,提出面向智能软件体系结构的神经构件模型,设计并实现了一种运行时刻的软件 体系结构元模型,将原先运行时刻不可见的体系结构设计信息具体化为显式的体系结构 实体,并与系统实现及系统规约之间保持因果关联。元模型的演化可通过神经反射实现 对运行系统的修改和对规约的更新,所有演化行为都在良定义的体系结构元模型的指导 下规范地进行,保证了演化前后系统的一致性、完整性和演化的可追溯性。 随着软件规模的增长,移动计算、普及计算和w e bs e r v i c e 等技术的迅速发展,软 件系统所面临的计算环境变得开放、多元和易变,用户需求的改变也日益加快。为适应 运行时刻计算环境中网络、设备、资源等的变化和用户需求的改变,在不中断系统运行的 情况下进行“在线”演化的需求日益增长。然而,由于“在线”演化也容易破坏系统的 完整性和一致性,这就造成了目前仍很少有应用系统实践“在线”演化的尴尬。为此, 一些研究者开始从软件体系结构( s a ) 尤其是动态软件体系结构( d s a ) 的角度寻求对 系统“在线”演化的支持。 软件演化指的是软件进行变化并达到所希望形态的过程,可分为静态演化和动态演 化两种类型【2 1 。静态演化是指软件在停机状态下的演化:动态演化是指软件在运行期间 的演化。由于涉及到状态迁移等问题,后者比前者从技术上更为难以处理。但动态演化 具有持续可用性的明显优点【3 】。对于执行关键任务的一些软件系统,通过停止、更新和 重启来实现维护和演化将导致不可接受的延迟、代价和危险。例如,容错系统发生错误 时,需要切换到备用冗余部分,确保服务可用。移动计算在环境改变时,需要相应调整 计算构件,适应环境变化。诸如交通控制软件、电信交换软件、i n t e r n e t 服务应用以及 高可用性的公共信息系统必须以每天2 4 小时的方式运行,但是又经常需要演化以适应 外部环境的变化和满足客户的更多需求,于是它们只能在不停机甚至质量不降低的前提 下进行扩展和升级。即使对于般的商业应用软件如果具有运行时修改特性,使得用户 不需要重新编译就可定制和扩充功能,将大大提高系统的自适应性和敏捷性,从而延长 生命周期,加强企业的竞争力。可见,软件的这种在运行时进行演化即动态演化的能力 日益重要,动态演化得到学术界和工业界的大力重视,成为软件工程研究的热点。 动态演化由一系列复杂的变化活动组成,包括动态更新、增加和删除软件系统的组 成部分,运行时重配置系统结构等。对动态演化的控制是软件开发者历来追求的目标。 神经构件模型和软件体系结构演化方法的研究 多年来,人们己研究了多种动态程序语言,试图通过这样的语言开发可动态演化的软件, 但程序语言层次上的动态演化机制仅局限于函数、类方法和对象等小粒度的替换,只支 持预设的有限变更。 现代软件的复杂性决定了动态演化研究应从宏观层面入手,这样可以避免过早地陷 入琐碎的细节中。软件体系结构( s o f t w a r ea r c h i t e c t u r e ) 从全局和整体的角度为系统提 供结构、行为和属性等信息,指定了系统的组织结构和拓扑结构,并且描述了系统需求 和构成系统的元素间的对应关系,己经成为软件开发过程中的核心【4 j 。近年来,许多研 究者关注在软件体系结构的指导下维护和演化系统,注意到在系统运行时刻显式地维护 体系结构信息的重要性【5 o l 。相较于其它的动态演化方法,基于体系结构的动态演化方 法从系统全局的角度刻画当前配置状态,有利于对系统级特征属性的监控和对关键约束 是否得以遵守的检查。但软件体系结构本身的发展只有1 0 多年的时间,把软件体系结 构应用到动态演化领域的研究工作,还只是一个开端,存在许多问题有待解决。因此, 本文从构件、软件体系结构框架模型、动态配置等方面系统地研究了基于软件体系结构 的动态演化技术。 1 2 动态演化要解决的问题 引起软件演化的原因是多方面的,如基础设施的改变、功能需求的增加、高性能算 法的发现、技术环境因素的变化等等。所以,对软件演化进行理解和控制显得比较复杂 而又困难。软件动态演化涉及到四个方面 2 1 :( 1 ) w h a t ,变更什么,变更的对象和粒 度大小以及变更的结果:( 2 ) w h e n ,变更的时序属性,什么时候变更,变更的频度和 历史;( 3 ) w h e r e ,变更发生的地点以及由谁触发变更;( 4 ) h o w ,如何变更,包括 变更的类型,过程和方法。其中的核心问题是第4 个方面。在软件动态演化的过程中, 应该具备一定的方法和机制来保证和维护应用的正确性,这包含如下几层意思: ( 1 ) 能够预先推导变更的结果及其影响范围。在发生软件变更之前,对变更之后 软件是否适应了需求? 变更后的软件是否符合应用约束? 软件的全局性属性如安全性、 可靠性是否受到影响? 影响的结果有多大? 这些都应该有合适的机制进行自动的预测 和评估,并决定是否进行软件演化。 ( 2 ) 具有灵活的演化策略定义和处理机制。综合考虑和协调动态演化的诸多因素, 给出动态配置的完整方案。不仅能表示和处理预设的演化,也能应对非预设的演化。 ( 3 ) 对于软件组成成员构件的替换,能够保证替换前后成员的外部行为的一致性。 因为软件系统的各部分构件相互协作和相互通信,软件的一个构件的功能执行可能需要 大连理工大学硕士学位论文 其他构件的配合来完成,每一个构件都对和它进行协作的构件有一个期望的交互方式和 行为约束。这意味着在替换构件时,不仅要使得它们的接口保持兼容,而且它们的可观 察的外部行为也要保持一致性。 具备控制变更过程的手段,以保持应用的完整性。动态演化的全过程都可以得到监 视和控制,保障演化完整进行。例如在变更过程中发生了错误,可以采取措施进行回滚, 撤消刚做的变更。实时、较准确地对变更前后状态进行切换的机制,以维持演化期间的 上下文一致性。当某构件执行到某一断点时,从系统配置上撤换下来,它保持一定的状 态信息。当该构件重新连接进入系统时需要从撤换时的断点继续开始执行。 1 。3 相关研究现状 1 3 1 传统的动态演化方法 在程序语言层次上,p e t e r s o n 等人i l l 】使用一个基于高阶的类型程序语言来进行运行 时变更。这个技术要求程序员预测程序中可能发生变化的部分,并把这部分以函数的形 式组织以封装变更。开发者把变化策略和变化范围也编写在源代码中,因此允许在运行 时对程序进行细粒度的控制。但是由于变化策略没有从执行计算的源代码中独立出来, 单独地更改应用行为变得困难,在大规模系统中管理变更成为很复杂的事情。p o l y l i t h 1 2 j 是一个基于软件总线的分布式程序环境,允许异构分布式应用系统的结构变化。在 p o l y l i t h 中,结构重配置可发生在指定的运行时刻,但局限于应用源代码层次上。d e r r a 程序环境f 1 3 】支持事件触发的重配置机制,缺陷是仅支持预设的动态演化。 g o r l i c k 等人【1 4 】表达了一个基于数据流的方法w e a v e s 。w e a v e s 是由并发执行的工具 片断( t o o l 嘶e m ) 构成的网络,工具片断之间以数据对象为中介进行通信。一个工具片 断是一个小的软件构件,它按照一个步骤顺序,执行一个单一的、良定义的功能。工具 片断消耗对象作为输入,产生对象作为输出。通过附加到“队列”上的“端口 ,它把 一个对象转换成一个不同的对象。队列把不同工具片断间的通信按照顺序缓存和同步起 来,工具片断通过端口连接到队列上。每一个工具片断作为一个独立的线程共享内存。 对象在流动中所经过的端口和队列都是被动的,只有工具片断是主动的,它从端口接收 对象,调用对象所实现的方法,进行该工具特定的计算,并把对象传递下去。这种机制 使得在不扰乱对象流的前提下可以进行运行时重配置,用户使用一个交互式的图形工具 可视化地直接重配置w e a v e 。但是,w e a v e 当前并不提供任何机制进行运行时的一致性 检查,也没有显式表达变更策略的方式。 k r a m e r 和m a g e e 3 提了一个结构化的分布式系统动态演化方法。在这个方法中, 一个配置由使用双向通信链接互连的处理节点构成。当系统运行期间变更发生时,配置 神经构件模型和软件体系结构演化方法的研究 管理器强迫受变更直接影响的节点以及其邻接节点进入“静止”状态。在“静止 状态, 节点不能发起通信以确保变更期间受变更直接影响的节点的运行状态不变。变更策略以 一种声明式语言定义,重配置管理器负责解释和执行变更策略。但是这种方法也不解决 演化过程中行为观察一致性问题。 1 3 2 基于体系结构的动态演化方法 软件体系结构概念的产生是试图在软件需求与软件设计之间架起一座桥梁,着重解 决软件系统的结构和需求向实现平坦地过渡的问题,软件体系结构已经作为一个明确的 文档和中间产品存在于软件开发过程t 4 j 。可见,软件体系结构技术的产生源于软件开 发的需求,原是一个供软件开发人员使用的设计概念和技术。由于软件体系结构清晰地 描述了构件及其相互关系和整个系统的框架,将软件开发中的软件体系结构应用于动态 演化也成为一种考虑。软件体系结构研究的主要成果表现为体系结构描述语言( a d l ) 。 目前已提出了许多a d l ,用这些a d l 书写的体系结构为系统的实现提供了良好的坚实 的基础。软件体系结构对动态演化的支持,首先体现在把动态配置功能集成在a d l 中, 即动态a d l 的研究,如d 椭f 1 5 】,r a p i d e 语言1 6 1 和d y n a m i t i cw r i g h t t l 7 】等。 动态a d l 的思路主要是在a d l 中专门设计用于预设演化的策略表示机制。例如 d a r w i n 语言运用演算给出体系结构的语义,提供延迟实例化( l a z yi n s t a n t i a t i o n ) 和 直接动态实例化( d i r e c td y n a m i ci n s t a n t i a t i o n ) 两种技术支持动态体系结构建模,允许 事先规划好的运行时的构件复制、删除和重新绑定;r a p i d e 基于偏序事件集( p a r t i a l l y o r d e r e de v e n ts e t s ) 对构件的计算行为和交互行为进行建模,允许在w h e r e 语句中,通 过l i n k 和u n l i n k 操作符重新建立结构关联;d y n a m i cw r i g h t 使用标签事件( t a g g e de v e n t s ) 技术,提供了运用c s p 对动态体系结构建模的方法。这些语言的动态管理机制中,都要 求体系结构运行时的变化必须事先可知。 c 2 是一种基于构件和消息的体系结构风格,为体系结构的演化提供了特别的支持。 c 2 的动态管理机制对体系结构运行时的变化不加限制,专门提供了体系结构变更语言 a m l ( a r c h i t e c t u r em o d i f i c a t i o nl a n g u a g e ) 。在a m l 中定义了一组在运行时可插入、 删除和重新关联体系结构元素的操作,如a d dc o m p o n e n t ,w e l d 等。但c 2 没有严密的形 式化基础,不能根据系统的计算行为和状态决定是否实行体系结构动态变化,以确保系 统完整地演化。 软件体系结构对动态演化的支持,也体现为以体系结构为核心的应用模型和软件框 架的研究。例如,j d o w l i n g 等人设计的k c o m p o n e n t 框架元模型通过提供体系结构元 模型和适配契约( a d a p t a t i o nc o n t r a c t s ) 来支持系统动态重配置【l 引。适配契约显式地表达 一4 一 大连理工大学硕士学位论文 适配逻辑,而不将其固化于程序语言或支撑平台之中,从而使得适配逻辑可编程和动态 地修改。k c o m p o n e n t 元模型的缺陷是不能严格和全面地表达体系结构的行为语义和结 构语义。w a l t e rc a z z o l a 1 9 提出由拓扑元对象和策略元对象形成体系结构反射元模型, 但也仅支持预设的演化。 国内北京大学开发的p k u a s 系统 8 1 采取了基于运行时软件体系结构( 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 ,简称r s a ) 的软件维护与演化方法。通过r s a ,系统的运行状态 与行为以体系结构的形式展现,且操纵该体系结构视图能导致运行系统进行相应改变, 这种因果关联通过反射式软件中间件实现。他们通过扩展传统的体系结构描述语言 a b c a d l 描述r s a ,并使之具备继承设计阶段体系结构所富含语义的天然能力。但由 于a b c a d l 缺乏构件行为和交互的形式化描述,没有解决构件替换时的可观察行为的 一致性问题。为了让应用系统能够灵活地动态演化以适应底层因特网计算环境和用户需 求的变化,南京大学也提出了一种动态协同架构1 7 】。该架构引入内置的r s a 对象来解耦 系统中的各个构件,并通过该对象以体系结构的视角来重解释构件之间的引用和交互。 这样就把体系结构这一抽象概念具体化为可直接操控的对象,从而可以利用面向对象程 序设计语言的继承和多态等整套机制,导出一种面向体系结构的动态演化技术。但这种 内置r s a 增加了应用系统开发的复杂性,也缺乏严格的语义定义,不支持行为分析和 一致性检测。 c a r l o s e c u e s t a 等人【6 】将基于体系结构的软件动态性分为三个级别:最低级别称为 交互动态性,仅仅要求固定结构里的动态数据交流;第二级别允许结构的修改,即构件 和连接件实例的创建、增加和删除,被称之为结构动态性;第三级别称为体系动态性, 允许软件体系结构的基本构造( i n f r a s t r u c t u r e ) 的变动,即结构可以被重定义,如新的 构件类型的定义。以这个标准衡量,目前基于体系结构的动态演化研究一般仅支持发生 在第二个层次上的动态性。 1 4 本文工作 运行时刻体系结构信息传导是进行软件动态演化的重要依据和驱动因素。本文工作 的基本出发点就是:运行时刻体系结构内传导信息的改变可用来触发和驱动系统自身的 动态调整。具体来说,为全面支持体系结构上的动态性,本文从构件、软件体系结构框 架、动态配置等方面逐步展开研究。 ( 1 ) 构件方面 本文的目标首先就是设计一种不仅可用于软件构造,而且支持对软件运行时刻的体 系结构中,可以用信息传导来触发和驱动系统动态调整的构件。提出了一种基于软件体 神经构件模型和软件体系结构演化方法的研究 系结构的神经构件理论,并定义了基于神经元模型的一种信息传导模型。在此基础上设 计了该构件模型的形式化建模。该构件具有人体神经元类似的智能,与传统构件相比, 在信息传导和构件间协作方面具有更适应动态演化的作用,特别适用于网络环境下大 型、复杂、开放式的软件系统体系结构的建立。 ( 2 ) 软件体系结构框架方面 本文的第二个研究内容是基于神经构件模型的软件体系结构框架。第三章所阐述的 神经构件在功能上封装了自我组织自我管理的信息传导功能,该构件比传统构件具有更 强的功能和更高的灵活性,将软件演化的基础和重要表征体现在体系结构的主要组成部 分构件上,因此传统体系结构框架已经不再适用于神经构件模型。本文寻找一个具 有自组织、自我管理、自我决策等功能的新的软件体系结构框架。 本文引用多a g e n t 系统设计思想,提出了基于神经构件的动态演化软件体系结构模 型n d s a 。定义了该体系结构模型的基本元素,阐述了模型的组成结构,并分别就局部 演化和全局演化的演化实现进行了分析。该模型可支持神经构件间的连接改变、神经构 件的增加、删除以及体系结构拓扑结构的重新配置等等,能够很好地支持局部和全局演 化。 ( 3 ) 动态配置方面 建立了上述基于神经构件的软件体系结构框架,从基础上提供了体系结构在线演化 的基本要求,为了更好的实现该动态演化体系结构的演化性,本节将对软件体系结构的 粘合剂配置进行研究和讨论。 为提高软件的构造性,更好地支持动态演化,本文用建模的方法对动态配置系统及 其机理进行细致的分析和研究,以发现动态配置的本质、明确动态配置中诸要素之间的 关系和运行规律,从而为本文指出研究的突破口。本文发现:动态配置的过程,在本质 上就是一个反射过程;动态配置系统在本质上就是一个反射系统;动态配置系统模型在 本质上就是一个特征化的反射系统模型。根据反射理论模型,定义了一个反射动态配置 模型。 一6 一 大连理工大学硕士学位论文 2 软件演化和软件体系结构 2 1 软件演化技术 2 1 1 软件的演化性和构造性 构造性和演化性是软件的两个基本特性【l5 1 。客观世界本身是有结构的,软件是一个 知识性的产品,所以软件应该具有更加严谨的结构性。要把客观事物的活动用软件表达 出来,就必须把客观活动的结构性提炼出来。和其它客观事物一样,软件系统也具有演 变性,并在不断的演化中促使技术不断发展。同样,技术的发展会反作用于系统,促进 系统的演化。 如何使软件模型具有更强的表达能力,如何使软件系统更能适应动态变化的环境, 在一定意义上来讲,都紧紧围绕了软件的本质特征一构造性和演化性。一般来说,演化 性高的软件其设计具有良好的构造性、更强有力的模型表示和更高的计算抽象层次。 汇编语言直接使用指令作为程序单元,表达处理逻辑的主要机制是顺序和转移。显 然,这一抽象层次是比较低的,软件难以变动和演化。结构化编程语言使用变量、标识 符等概念作为语言的基本构造,并使用3 种基本控制结构来表达软件模型的计算逻辑, 实现了模块化的数据抽象和过程抽象,并使开发的软件具有一定的构造性和演化性。面 向对象程序设计语言从现实世界中客观存在的事物( 即对象) 出发来构造软件系统,提 高了人们表达客观世界的抽象层次,使开发的软件具有更好的构造性和演化性。目前, 人们更加关注软件复用和演化问题,构件比对象粒度更大、更易于复用和演化的基本单 元一构件,并研究以构件为基础的软件构造方法,更好地凸现软件的演化特性。 软件体系结构近年来已经成为软件开发过程中的核心制品,起着主导作用。其研究 和实践旨在将一个系统的体系结构显式化,以在高抽象层次处理诸如全局组织和控制结 构、功能到计算元素的分配、计算元素间的高层交互等设计i 口- j 题1 2 0 。它从系统的总体结 构入手,将系统分解为构件和构件之间的交互关系,可以在高层抽象上指导和验证构件 组装过程,提供了一种自项向下、基于构件的软件开发方法,从而为构件组装提供了有 力的支持,并使软件的构造性和演化性进一步提高。 2 1 2 静态演化 软件演化可分为静态演化和动态演化两种1 2 1 。软件静态演化是指发生在应用程序停 止时的软件修改和变更,意即一般意义的软件维护和升级。静态演化好处是没有状态迁 神经构件模型和软件体系结构演化方法的研究 移或活动线程的问题要解决,缺陷是停止应用程序意味着停止它所提供的服务,也即暂 时失效。 在软件交付之后,静态演化( 软件维护) 就成为软件变更的一个常规过程。变更可 以是一种更正代码错误的简单变更,也可以是更正设计错误的较大范围的变更,还可以 是对描述错误进行修正或提供新需求这样的重大改进。有三种不同的软件维护:改正性维 护、适应性维护和完善性维护。维护过程一般包括变更分析、版本规划、系统实现和向 客户交付系统等活动。 在面向对象技术中,使用子类型方法来扩展程序,它适合于软件静态演化和重用代 码。子类型化一个类意味着保留父类同样的参数和方法并尽可能地增加新的参数和方 法。重载( 在子类中重定义一个方法) ,并结合多态性作为主要的演化机制。实际上, 建立类的新版本,最简单的机制是创建它的子类,然后重载需要变更的方法,最后,使 用多态性调用新创建的方法。在基于构件的软件技术中,构件采取接口和实现相分离技 术,构件之间只能通过接口进行通信,这使得具有兼容接口的不同构件实现可以相互取 代,从而成为软件静态演化的一条途径。 2 1 3 动态演化 动态演化是指软件在运行期间的演化1 2 。在许多重要的应用领域中,例如金融、电 力、电信及空中交通管制等,系统的持续可用性是一个关键性的要求,运行时刻的系统 演化可减少因关机和重新启动而带来的损失和风险。此外,越来越多的其他类型的应用 软件也提出了运行时刻演化的要求,在不必对应用软件进行重新编译和加载的前提下, 为最终用户提供系统定制和扩展的能力。 动态演化可分为两种类型:预设的和非预设的。在w e b 环境中,软件应用常常需 要处理多种类型的信息,因此它们常被设计为可以动态下载并安装插件以处理当前所面 临的新类型的信息;而分布式w e b 应用也常常需要增减内部处理节点的数目以适应多 变的负载。这些动态改变都是软件设计者能够预先设想到的,可实现为系统的固有功能。 另有一些必须对系统配置进行修改和调整的情况是直到系统投入运行以后才发现的,这 就要求系统能够处理在原始设计中没有完全预料到的新需求。这种情况下一般需要关闭 整个系统,重新开发、重新装入并重新启动系统。然而,为了进行局部的修改而关闭整 个系统在某些情况下是不允许的( 例如生命维持系统) 或者代价太高。精心设计的动态 演化技术可以在不关闭整个系统的前提下修改系统的结构配置,并尽量使未受影响的部 分继续工作以提高系统的可用度。 大连理工大学硕士学位论文 动态演化比静态演化更为复杂。为支持软件的动态演化性,人们也已在语言、机制 和环境等方面做了大量工作。在程序语言的层次上,引进各种机制以支持软件动态演化, 例如动态装载技术允许增加代码到己运行的程序中,延迟绑定是在运行时而不是编译时 决定类和对象的绑定。 通过标准化运行级构件的规约,依靠构件运行平台( 中间件平台) 提供的基础设施, 使软件在构件层次上的动态演化成为可能。中间件中具有的如命名服务、反射技术和动 态适配机制等允许为运行态构件的动态替换和升级提供支撑,推动了软件的动态演化发 展【2 1 ,2 2 】。命名服务就是给构件实例提供一个名称,以便客户通过这些名称来获取构件实 例。对工业标准构件e j b 和c o r b a 构件等的引用都可以通过中间件平台的命名服务进 行。同一构件标识的可以被映射到多个构件实例,从而根据具体情境可以对某一名字的 构件引用导向到不同的构件实例。反射技术是系统的一种自描述( s e l f - r e p r e s e n t a t i o n ) 和自推理的技术,它提供了关于自身行为的表示,这种表示可以被检查和调整,且与它 所描述的系统行为是因果相联( c a u s a l l ye o r m e c t e d ) 的。因果相联,意味着对自表示的 改动将立即反映在系统的实际状态和行为中,反之亦然。将反射性引入中间件能够以可 控的方式开放平台内部的实现,从而提高中间件的定制能力和运行时的适应能力。动态 适配机制中比较著名的是c o r b a 提供的动态接口服务:动态调用接口d i i 和动态骨架 接口d s i 。前者支持动态客户请求调用,而后者支持将请求动态指派( d i s p a t c h ) 给构 件。因此,软件构件化技术使得软件具有良好的构造性,软件演化的粒度更大。中间件 技术则为基于构件的软件动态演化提供了坚实的基础设施和方便的操作界面。 然而,正如绪论中所说,软件动态演化技术还存在一系列的问题没有得到根本解决。 例如如何预先推导变更的结果及其影响范围,如何在进行构件替换的时候保证替换前后 的外部行为的一致性,如何设计灵活的演化计划和处理机制,如何实时、准确地对变更 前后状态进行切换等。这些问题的存在,使得为进行动态演化而增加的代价和危险可能 超过其带来的好处。 2 2 软件体系结构 软件体系结构作为软件工程中的一个新兴研究领域,是随着描述大型、复杂系统结 构的需要和开发人员及计算机科学家在大型软件系统的研制过程中对软件系统理解的 逐步深入而发展起来的【4 】。它与软件工程技术的发展和计算机发展的需要有着密切的关 系。软件体系结构一般指的是系统的组织结构、它们之间的关联关系以及支配系统设计 的原则和方针:一个系统的软件体系结构包括构成系统计算单元的构件、规范构件间交 互行为的连接件、以及构件和连接件如何结合在一起的配置组成。 一9 一 神经构件模型和软件体系结构演化方法的研究 构件( c o m p o n e n t ) 是体系结构的基本要素之一。一般认为,构件是指具有一定功 能、可明确辨识的软件单位,并且具备以下特点:语义完整、语法正确、有可重用价值。 这就意味着,在结构上,构件是语义描述、通信接口和实现代码的复合体,是一个计算 和数据存储单元。也就是说,构件是计算与状态存在的场所。更具体地,可以把构件视 为用于实现某种计算逻辑的相关对象的集合,这些对象或是结构相关或是逻辑相关。在 体系结构中,构件可以有不同的粒度。一个构件可以小到只有一个过程,也可以大到包 含一个应用程序。它可以包括函数、例程、对象、二进制对象、类库、数据包等。 从抽象程度来看,尽管面向对象技术以类为封装单位达到了类级的代码重用,但这 样的重用粒度还太小,仍不足以解决异构互操作和效率更高的重用。构件将抽象的程度 提到一个更高的层次,它是对一组类的组合进行封装,并代表完成一个或多个功能的特 定服务,也为用户提供了多个接口。构件之间是相对独立的。构件隐藏其具体实现,只 通过接口提供服务。如果不用指定的接口与之通信,则外界不会对它的运行造成任何影 响。因此,构件可以作为独立单元被使用于不同的体系结构、不同的软件系统中,实现 构件的重用。因此构件的定制和规范化十分重要。构件的使用与它的开发也是独立的。 连接件( 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 3 基于体系结构的软件演化 软件演化的复杂性决定了软件演化研究首先应从宏观层面入手,这样可以避免过早 地陷入软件演化研究的复杂细节中。体系结构对于系统演化的意义体现为:( i ) 将一 个系统的体系结构显式化,使得软件的可构造性得到提高,从而易于软件演化;( 2 ) 在 系统开发阶段,体系结构的设计有助于开发人员充分考虑到将来可能的系统演化;( 3 ) 由于体系结构充分地刻画了当前系统,清晰地描述了构件及其相互关系和整个系统的框 架,在系统演化阶段,可以充分利用这些信息。 在静态演化阶段,对软件的任何扩充和修改都需要在体系结构的指导下进行,以维 持整体设计的合理性和正确性以及性能的可分析性,并为维护升级的复杂性和代价分析 提供依据。以现有体系结构为基础,把握需要进行的系统变动,在系统范围内综合考虑, 有助于确定系统维护的最优方案,更好地控制软件质量和维护成本。软件为主的系统总 是存在着“利用软件作为增加或修改系统总体功能的工具的倾向。重要的是要决定何 时进行改动,确定哪种改动风险最小,评估改动的后果,仲裁改动的顺序及优先级。所 有这些都需要深入地洞察系统各部分的关系、相互依存关系、性能及行为特性。而在软 件体系结构这一级进行讨论,就能提供这种观察力。更重要的是软件体系结构可以把可 能发生的变动分为3 类:局部的、非局部的和体系结构级的。局部的是指只要修改单个 构件本身。非局部的是指要修改几个构件,但不影响基础体系结构的变动。而体系结构 级是指会影响各部分的相互关系,甚至要改动整个系统。显然,局部改动应是最经常发 生的,也是最容易进行的。软件体系结构承担了“保证最经常发生的变动是最容易进行 的 这一重担。 近年来,研究者们注意到在系统运行时刻显式地维护体系结构信息的重要性。其中 的关键原因是,现在越来越多的系统需要能够响应开放环境和需求的动态变化而对自身 进行动态调整,而体系结构模型可以从系统全局的角度刻画当前配置状态,有利于对系 统级特征属性的监控和对关键约束是否得以遵守的检查。 神经构件模型和软件体系结构演化方法的研究 如何使在体系结构层面表达的动态调整在具体系统中得以实施,一般的思路是使得 软件体系结构在

温馨提示

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

评论

0/150

提交评论