




已阅读5页,还剩50页未读, 继续免费阅读
(计算机软件与理论专业论文)基于构件的开发平台研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 摘要 基于构件的开发( c o m p o n e n t b a s e dd e v e l o p m e n t ,简称c b d ) 或基于构件的软件工 程( c o m p o n e i 血b a s e ds o f t w a r ee i 画n e e r i n g ,简称c b s e ) 是一种软件开发新范型。它是 在一定构件模型的支持下,复用构件库中的一个或多个软件构件,通过组含手段高效 率、高质量地构造应用软件系统的过程,被认为是最具潜力的软件工程发展方向之一。 通过对主流构件模型的分析,结合目前国内外的开发现状,将构件模型改造 成i o c f i n v e r s i o no fc o n t r o l ,控制反转) 模式,即将接口和实现的对应延迟到组装阶段。这 样虽然会增加运行支撑框架的开发难度,但可以达到最大程度的框架重用和显著的提高 开发效率。目前的构件运行平台的研究主要集中在静态结构上,静态结构缺乏表示动态 更新的机制。通过对j v m ( j a v av i r t u a lm a c h j n e ,j a v a 虚拟机) 的底层c l a s s l o a ( 1 e r ( 类装 载程序1 的分析,改造c 1 a s 8 l o a d e r 可以实现运行时的动态更新。本文基于以r 现状,提 出了可以支持在线更新的构件运行支撑平台的设计思想。为增强平台的命力,平台采 用类似e c l i p s e 的插件架构,并改造现有的单总线方式为层次总线方式。构件之间通过构 件模块总线通讯,插件之间通过插件模块总线通讯。捅件和构件之间的通讯通过平台总 线来协调。 关键词:动态更新,层次总线,构件模型,插件架构 a b s t r a c t a b s t r a c t c o m p o n e n t b a s e dd e v e l o p m e n to rc o m p o n e n t - b a s e ds o f t w a r ee n g i n e e r i n gi sa n e v l 【i n d o f p a t t e r n s o f s o f t w a r e d e v d o p m e n t u n d e r t h es u p p o r t i n g o f s o m ek i n d s o f c o m p o n e m o d e l s ,i ti se h 套c t i v et oc o n s t r u c ts y s t e m sb yc o m b i n i n go n eo rm o r ec o l p o n e i l t si nt h c o m p o n e n t d a t a b a s e ,a n dt h es y s t e m s 盯eh i g hq u a l i t y i ti sc o n s i d e r e do n eo ft h em o s p o t e n t i a ld i r e c t i o 璐o fs o f t w a r ee n g i n e e r i n g t h r o u g ht h ea n a l y s i st ot h em a i n s t r e 砌o fc o m p o n e n t m o d e l s ,t h ep a p c rr e f o r mt h c o m p o n e n tm o d e lt ot h ei o c ( i n v e r s i o no fc o n t r 0 1 ) p a t t e r nu n d e rt h ec u r r e n tc o n d m o 】 o fs o f t w a r ed e v e l o p i n g t h en e wp a t t e md e l a yt h ec o n n e c t i o no ft h ei n t e r f a c 髑a t h er e a l i z a t i o n st ot h ec o 璐t r u c t i o ns t a g e i tm a yi n c r e a s et h ed i f f i c u l t yo ft h ed e s 碴 o ft h er u n t i m ep l a t f o r m h o w e v e r ,i tc a na c h i e v et h em o s tr e u s eo ft h ep l a t f o r ma n i h i g h l yi m p r o v et h er a t eo ft h es o f t w a r ed e v e k p i n gt h ep r e s e n tr e s e a r d l e so fc o m p o n e n r u n t i m ep l a t f o r mm a i n l yc o n c e n t r a t e so nt h es t a t i cs t r u c t u r e st h es t a t i cs t r u c t u r e sd n o ts u p p o r tr u n t i m eu p d a t e i ti sp 0 8 s i b kt ot r a 璐f o r mt h ec 1 8 s s l o a d e ro fj v m ( j a v v i r t u a lm a c h i n e ) t os u p p o r tt h er u n t i m eu p d a t et h r o u g ht h ea n a l y s i st ot h et 】v mi n s i 【l e t h ep a p e rp r o p o s e dap l a t f o r mt os u p p o r tr u n t i m ec o m p o n e n tu p d a t e i i lo r d e rt s t r e n g t h e nt h ev i t a l i t yo ft h ep l a t f o r m ,i ta d o p t st h ep l u g i na r c h i t e c t u r ea st h ee c l i p 8 矗锄e w o r k ,a n dr e f o r n 嵋t h eo n 争l a y e rb l l st om i d t i l 伦r e db u s e s i nt h ep l a t f o r m ,t h c o m p o n e n t sc o m m u n i c a t ew i t h e a c ho t h e rt h r o u g ht h ec o m p o n e n tb u so ft h e ( o i n p o i l c i c o n t a i n e r a n dt h ep l u 分i i l sc o m m u n i c a t e dw i t hp l u g i nb u so ft h ep l l l g i nc o i l t a i l l e 】 t h ec o m p o n e t sc o m m u n i c a t e 而t hp l u 乎i i l st h r o u g ht h ep l a t f o r mb 璐o ft l l ei ) l a t f o r r c o n t a i n e r k e y w o r d s : r u n t i m eu p d a t e ,m u l t i l a y e r e db l l s ,c o m p o n e n tm o d e l ,p 1 l l g i na r c h i t e ( t u r e 独创性( 或创新性) 声明 y 85 9 0 7 2 本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研究成 果。尽我所知,除了文中特别加以标注和致谢中所罗列的内容以外,论文中不包 含其他人已经发表或撰写过的研究成果;也不包含为获得西安电子科技大学或其 它教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的 任何贡献均已在论文中做了明确的说明并表示了谢意。 申请学位论文与资料若有不实之处,本人承担一切相关责任。 本人签名:j 擗 日期 关于论文使用授权的说明 本人完全了解西安电子科技大学有关保留和使用学位论文的规定,即:研究生 在校攻读学位期间论文工作的知识产权单位属西安电子科技大学。本人保证毕业 离校后,发表论文或使用论文工作成果时署名单位仍然为西安电子科技大学。学 校有权保留送交论文的复印件,允许查阅和借阅论文;学校可以公布论文的全部 或部分内容,可以允许采用影印、缩印或其它复制手段保存论文。( 保密的论文在 解密后遵守此规定) 本学位论文属于保密在一年解密后适用本授权书。 本人签名: 塞挲1 越华日期 导师签名: 2 箍之日期尘! ! ! :幺 第一章绪论 第一章绪论 1 1 研究背景 随着计算机制造业突飞猛进的发展。硬件技术及硬件性能的提高速艘总是快于软 件,软件开发的速度一直远远落后于硬件的速度。 软件的应用领域也发生了变化,模式从单机模式、c s 模式直到现在的网络计算。 特别是网络计算带领软件产业进入了一个新的时代,以电子商务为代表的技术潮流正将 大到企业计算、小到个人数字代理的各种应用,在世界范围内联结起来,软件制造业正 面临着一些新的课题,如复杂的分布环境、灵活的应用模式、广泛的包容性等,传统的 软件设计思想已远远不够。 在这种背景下,软件构件技术应运而生并逐渐迅速发展。不同于而向对象技术强调 对个体的抽象,构件更推广了对象封装的内涵,侧重于复杂系统中组成部分的协调关 系,强调实体在环境中的存在形式,并形成了一个专门的技术领域。而解决诸如此类问 题的最佳方法是采用软件复用的方法和构件化进行软件开发。 1 1 1 传统方法 传统方法所开发的应用软件往往是一个独立的整体性系统l ,q 。在绎过需求分析 和设计后开发出的软件其各种功能和特性用固定的方式联系在一起。一个应用软件程 序作为一个整体,在发布之前就集成了广泛的使用特性。其中的许多特性1 i 能独立地被 删除、升级或替代。对于其他应用程序而言,即使是使用同一种编程语占,在同一台机 器上运行也很难利片j 该程序的数据和功能。不同的应用程序之间几乎被完全的隔离 开。 复杂软件的设计和实现仍然非常昂贵,并且容易出现错误。许多的努力年u 消耗都集 中丁相同的设计概念和代码构件的重复开发。而硬件结构的多样化、操作系统的纷繁复 杂和通信平台的多种多样使的从零开始来设计正确、可移植、高效而低代价的应用系统 变得非常困难。 1 1 2 基于构件的开发 2 0 世纪9 0 年代软件开发技术的一个重要进展就是软件构件化 3 ,4 】。这是由于现在 的系统规模越来越大,一个系统要求完成的功能很多,因此软件复用和集成具有非唰寻 常的意义。构件模型是新一代软件开发的标志。为了提高软件生产力、不草率地开发应 用程序,开发人员应尽可能利用可复用的软件构件。组装构造新的应用系统。 开发和使用可复用的构件是从面向对象的技术发展而来的重要技术,通过构件达到 全面应用对象技术与概念,成为开发出高效、低成本应用程序的重要实现途径。当今软 件开发技术的主流是软件构件技术。 2 基于构件的开发平台研究 软构件给软件开发带来的优点如同硬件元件工业中的集成电路所带来的是类似的。 集成电路的出现,把硬件工程师们从琐碎的工作中解脱出来,使他们能集中精力于更复 杂的设计上。这就造成了前人未曾想到过的,如微波炉、笔记本电脑、宇宙飞船等设备 的出现。软构件技术的提出也使软件工程师们从琐碎的工作中能够解脱出来,可以集中 精力于更复杂和更方便实用的软件t 程设计上。 1 1 3对新开发技术的要求 旧的软件设计方法己不能适应环境的发展。既然c p u 如此便宜快捷,网络无处不 在,将处理能力分散到最适合的地方是非常自然的要求。因此,强烈需要一种新的软件 开发模式,它必须具有分布式计算、客户服务器结构,模块化和构件化1 5 6 j 的特点。 具体来说要求: 提供一套手段,能够寻找定位和使用其他应用程序或操作系统的服务( 以一种对于 服务的来源透明的方式) 和服务提供者有效的交互通信,并且以版本兼容的方式实 现服务提供程序的扩展和更新; 在操作系统和应用程序服务体系中使用面向对象的概念,从而更好地适应各种而 向对象的开发工具。通过更强的模块化来克服软件高度复杂带来的维护困难,更 加有效的利用已有的解决方案,设计构造更加自持( s e m s u f i i c i e n t ) 的软件部件; 通过客户服务器的计算结构,利用越来越大的桌面设备,网络服务器等资源 使用分布式计算,在与用户和应用程序保持单一的界面接口的同时,突破地址空 间限制,充分利用网络服务器环境,而不需要考虑空间分布、机器结构和实现环境 的影响。 1 1 4国内外研究现状 m c l l r o y 在1 9 6 8 年提交n a t o 【7 】软件工程会议的论文大量生产的软件构件中,首 次提出了“软件组装生产线”的思想。软件产品线【8 19 1 是一组具有公共的系统需求集 的软件系统,这些需求是针对一类特定的商业行为或任务的,或者可以说是一组共享 公共的设计和标准( 或构件) 的产品族。产品线软件开发的特点是在开发过程中使用 公共的软件构件( a s s e t s ) ,包括产品线构架( 甜c l l i t e c t u r e s ) 、构件( c o m p o n e n t s ) 和过程模 型( p r o c e 鹋m o d d ) 。产品线方法集中体现了一种大规模、大粒度的软件复用实践。美国 军方与政府资助的项目中,己建立了若干构件库系统,如c a r d s 、a s s e t 、d s r s 等。 山d a r p a 发起,由美国军方、s e i 和m i t r e 支持的s r a r s 项目在此基础上考虑了开放 体系结构的构件库之间共享资源和无缝互操作的问题,并于1 9 9 2 年提交了a l o a f ( a s s e t l i b r a r yo p e na r c h i t e c t u r en a m e w o r k ,开放体系结构的构件库框架) v e r s i o n l 2 版本。这 一报告体现了s t a r s 对可复用构件库系统的认识,给出了一个构件库框架的参考模型, 第一章绪论 3 并就此实现了a l o a f 规约作为该参考模型的实例,由此证明以公共元模型为基础,在 构件库之间交换信息和创建易于移植的复用工具是可能的和必要的。 国内早在2 0 世纪九十年代初,中国科学院的杨芙清院士就提出了构件化软件体系的 设想。构件软件的理论和实际工程己被人们普遍关注。在理论上,北京大学、中科院软 件所、吉林大学、南京大学、复旦大学、中山大学等单位,均发表了不少有价值的学术论 文。在实际工程上,青鸟公司、中软公司、华科电脑公司、特宝科公司、天中公训等均采 用基于构件技术开发应用软件,积累了不少经验,获取极好的效益。上海普元的e o s 系 统是目前比较成功的商业构件开发和组装平台。 1 2 课题的来源及研究意义 本课题来源于实习期间作的项目一一浩方计费系统的开发。浩方计费系统要求满 足5 0 万人同时在线的计费压力,必须较好的完成计费功能,还要和以前的的系统很好的 集成。系统采用模块化的设计思路来完成,每个模块完成单一的功能,比如操作数据席, 处理用户信息,处理会话等。该设计思想和基于构件的开发已经很接近。在此基础上, 查阅大量与构件相关的资料,包括构件的开发,描述,检索和组装等。通过综合资料,决 定研究构件的组装和运行支撑平台,并将平台命名为s t o r i n p l a t f o r n l 。 s t o r m p l a t f o r m 平台设计的重要目标之一是可以大幅度降低构件的开发难度,以提 高构件的开发效率和提高构件开发人员的积极性。平台需要提供比较多的管理功能支 持,如构件管理、装载和在线更新功能等。同时,平台还要易于扩展,可以、止开发者增加 新的管理和监控功能,增强平台的生命力。 1 3 本文研究内容和章节安排 平台第二章介绍构件的相关知识和构件模型,同时还介绍基十构件的软什工程的 相关的知识和模型;第三章介绍动态更新相关知识,包括动态更新的基本原则、步骤 和j a v a 平台底层支持动态加载的类装载程序( c l a s 8 l o a d e r ) ;第四章介绍平台架构相关知 识,包括e c l i p s e 平台的插件架构、h i v e m i n d 的架构和软总线知识:第五章是论文的重点, 是平台的实现部分。包括平台的设计思想,改造的构件模型、c l a s s l o a j d e r 模型和在线更 新模型等关键技术,还详细介绍平台的构件( c o m p o n e n t ) 模块和插件( p l u g i n ) 模块并介 绍平台的启动相关技术;第六章是平台的功能和性能测试部分;第七章对论文作总结。 基于构件的开发平台研究 第二章构件和基于构件的软件工程 软件构件技术( s o r w a r ec o m p o n e n tt e c h n o l o 盯) 是支持基于构件的软件复用的核心 技术。基于构件的软件开发是当前软件开发的发展趋势,利用构件组装成为一个系统与 从头到尾写代码“写”成一个系统相比,它的高效率是可想而知的。 2 1 构件定义 1 眦1 g r a h a t r 给出的构件定义如下:构件( c o m p o n e n t ) 是指一个对象( 接 j 规范或二进 制代码) ,它被用于复用,接口被明确定义。本文认为构件的定义应该分为狭义的和广义 的。狭义的定义认为:构件是由c o m + ( c o m p o n e n to b i e c tm o d e l ) 1 1 q ,e j b f e m e r p r i s e j a v ab e 蚴) 【1 1 ,1 2 j ,c o r b a ( c o m m o no b j e c tr e q u e s tb r o k e ra r c h i t e c t u r e ) 提供的二进 制代码单元。而广义的定义则较少关注它的具体组成的二进制代码、类或者包。 可复用构件应具备的属性: 有用性:构件必须提供有用的功能 可用性:构件必须易于理解和使用 质量:构件必须能正确工作; 适应性:构件应该应用在不同语境中装配 移植性;构件应能在不同的运行平台上工作。 2 2 构件特点 从上面的定义可以得出,构件需具有以下几个特点【1 目 自描述:构件必须能够识别其属性、存取方法和事件,这些信息可以使开发环境将 第三方软件构件无缝地结合起来: 可定制:允许提供一个典型的图形方式【14 】环境,软件构件的属性只能通过控制面 板来设置; 可集成:构件必须可以被编程语言直接控制。构件也可以和脚本语言或者与从代 码级访问构件的环境连接【1 5 】,这个特点使得构件可以在非可视化开发项目中使 用: 第二章构件和基于构件的软件工程 连接机制。构件必须能产生事件或者具有让程序员从语义上实现相瓦连接的其它 机制。这意味着程序员可以很容易地向按钮添加代码,点击按钮就可以影响其他 构件的动作。 采用构件软件不需要重新编译,也不需要源代码,而且不局限于某一种编程语占。该过 程叫做二进制复用( b i n 盯yr e u s e ) ,因为它是建立在接口而不是源代码级别的复j 扫之上 的。虽然软件构件必须遵守一致的接口,但是它们的内部实现是完全自动的。因此,可 以用过程语言和砸向对象语言创建构件。 构件可以用一个四元组来表示: 构件:= ( 构件标识符,构件说明,构件体,接口) 把构件说明和构件体分开的原因是考虑到同一个构件说明可以由不同的程序设计语言 来实现,即使同一个构件可以有多个不同语言实现的构件体,构件的接口才i 仅要提供外 部物理实现接口,而且还要提供一个外部逻辑接口,外部逻辑接口是给用户提供一个非 形式化的该构件的功能描述,这样更能方便用户了解和使用构件。构件说明就是对构件 功能深入、明确的刻画,这将有利于构件的复用,而构件功能的描述,就是通过构件的 外部逻辑接口提供给用户的。构件的逻辑设计须在构件设计规范下进行,利用规范所提 供的构件定义语言( c d l ) 和构件操作语言( c o l ) 来进行逻辑设计。构件体的设计和接口 设计是分开的,这样可以使构件有不同的语言实现版本。随着构件规范的标准化,今后 构件的设计开发将由构件制造商来完成,这样不但减少了用户开发系统的周期,同时还 会提高系统的质量和可靠性。 2 3 构件模型 随着构件技术的不断发展,构件复用者想要在浩如烟海的构件库中查询到自己需要 的构件,的确不是一件容易的事,而构件复用者成功识别某构件正是符合自己的需求构 件的方法是通过构件描述语言( c d l ) 。 构件模型定义了构件的本质属性,规定了构件接口的结构以及构件与软什体系 结构、构件与构件之间的交互机制。构件模型通常还提供创建和实现构件的指导原 则。c b s d ( c o m p o n e n tb a s e ds o f 呻a r ed e v e l o p m e n t 基于构件的软件开发) 工具可以识 别和组装来自不同开发者的符合同一构件模型的构件。一个被所有构件生产者和构件复 用者所接受的构件模型实际上起到了构件标准化的作用。在学术界和产业界己经出现了 多种构件模型,其中3 c 模型是学术界普遍认同的一个具有指导性作用的构件模型。该模 型从概念( c o n c e p t ) 、内容( c o n t e n t ) 和语境( c o n t e x t ) 三个小同方面来描述构件f ”】: 概念是关于“构件做什么”的抽象描述,可以通过概念去理解构件的功能。概念包 括接口规约和语义描述两个部分; 内容是概念的具体实现。描述构件如何完成概念所刻画的功能 6基于构件的开发平台研究 语境是构件和外围环境在概念级和内容级上的关系。语境刻画构件的应用环境, 为构件的选用和适应性修& 提供指导: c o m + ,j a v a 和c o r b a 构件模型三足鼎立构成了实现级构件模型工业标准的竞 争与互操作并存的格局。现有的构件模型一般认为构件由构件接口( 对应于3 c 模型中的 概念和概念级语境) 和构件内容两部分组成。构件接口就是为成功复用该软件实体而需 要提供给外界的所有信息,包括构件向外提供和请求的服务、构件的自述信息和定制 信息、构件的初始化、实例化和永久化方法以及构件对目标复用环境的依赖和构件组 装信息等。构件内容就是用于直接复用的软件实体,它可以具有源代码、二进制码、文 档、分析模型和脚本等不同的物理形态,并遵从一定的格式标准。c o r b ai d l ,c o m + o d l 和i d l 等接口描述( 或定义) 语言都能够描述构件接口的语法,并且具备编译和浏览 工具的支持;但是现有的接口描述语言在描述构件接口语义和构件间复杂的交互协议方 面缺乏进一步韵支持。 2 4基于构件的开发的软件工程 基于构件的软件工程( c o m p o n e n t b a s e ds o r w a r ee n 百n e e r i n g ,简称c b s e ) m 或 基于构件的开发( c o m p o n e t b a 8 e dd e v e l o p m e n t ,简称c b d ) 是一种软件开发新范型, 它是在一定构件模型的支持下,复用构件库中的一个或多个软件构件,通过组合手段高 效率、高质量地构造应用软件系统的过程1 1 目。由于以分布式对象为基础的构件实现技 术日趋成熟,c b d 己经成为现今软件复用实践的研究热点,被认为是最具潜力的软件工 程发展方向之一。 c b s e c b d 遵循“购买而不创建( b u y ,d o n tb u i l d ) ”的开发哲学1 1 9 】,让人们从“一 切从头开始”( b u i l df r o ms c m t c h ) 的程序编制转向软件组装。基于构件的开发任务包括 创建、检索和评价、适配( a d a p t a t i o n ) 、组装、测试和验证、配置和部署( d e p l o y m e n t ) 、 维护和演进,以及遗产系统( 1 e g a c y ) 的再工程等主要活动,它们与传统的生命周期中的 方法不尽相同。 构件技术与面向对象技术紧密相关。构件和对象都是对现实世界的抽象描述,通过 接口封装了可复用的代码实现。不同的是,在复用策略上,对象是通过继承实现复用, 而构件是通过合成实现复用:其次在概念层面上,对象是描述客观世界实体( i d e n t 姆) , 构件提供客观世界服务( 8 e w i c e ) 【2 q ;在技术手段上,构件通过对象技术而实现,对象按 规定经过适当的接口包装( w r a p ) 之后成为构件,一个构件通常是多个对象的集合体。 当今,构件技术已经成为计算环境的基本组成之一,众多中间件产品和开发工具提 供了对不同构件模型的实现支持,特别在分布式、企业级应用软件系统中,无不把软件 的构件化作为解决维护、扩展和升级的唯一途径。然而,虽然业己存在了大量的c b d 概 念、方法和工具,软件业并未完全迁移至o c b d 软件开发范型,一个主要原因是缺少一套 成熟的c b d 开发方法学,至今尚未完全解决的包括有如下关键问题: 第二章构件和基于构件的软件工程 7 有切实可行的构件描述方法和技术。在构件概念框架基础上,为构件开发者建立 相互交流的特殊语言,例如u m l 的图形化描述技术和c o 砌强i d l 的文本描述技 术,理想的描述技术可以提供系统的一致性约束和正确性验证; 建立一个完善的c b d 概念框架,用数学方法定义构件相关概念的形式化模型,既 要尽可能的简单,又要足以描述己有的构件基本概念和开发技术; 为c b d 的开发流程建立一个合理的过程模型,特别要研究如何为扮演不同角色的 开发者分配相应的任务,例如软件体系结构设计师负责软件构架设计的详细职责 和结果验收标准; 有支持描述技术和过程模型的辅助开发工具,至少需要具备开发构件、实现应用 系统和生成文档的工具。理想的开发工具还包括关键系统特征的验证工具。 上述问题和前面介绍的软件复用目的和任务紧密相关,必须从软件复用的认彭 高度分 析c b d 方法中存在的问题,重点是使用知识表示方法和演化计算方法解决构件的语义 模型盼。a 1 和自动过程问题,包括c b d 原理和技术中的构件模型、构件体系结构和 描述语言和基于构件的开发过程等几方面内容。 2 4 1c b s e c b d 研究方向 当今c b s e c b d 的研究方向主要有以下几个: 基于构件软件工程方法的概念模型过程模型; 构件模型:研究构件的本质特征及构件问的关系: 构件获取;有目的的构件生产和从已有系统中挖掘提取构件; 构件描述语言:以构件模型为基础,解决构件的精确描述、理解及组装问题 构件库( 构件分类与检索) :研究构件分类策略、组织模式及检索策略建立构件库 系统,支持构件的有效管理; 构件集成组装:在构件模型的基础上研究构件组装机制,包括源代码级的组装和 基于构件对象互操作性的运行级组装: 标准化:构件模型的标准化和构件库系统的标准化 构件系统的安全性问题和时效( r e a l t i m e ) 问题。 8 基于构件的开发平台研究 2 4 2 基于构件的软件开发过程模型 基于构件的软件工程的过程模型强调并行的轨迹,其中领域工程和基于构件的开发 是并发地进行的。领域工程完成一系列工作,以建立一组可以被其他软件工程师复用的 软件构件,然后这些软件构件被越过分隔领域工程和基于构件的开发的“边界”传送。 它的刻画必须是:不仅标识候选的构件,而且认证每个构件接口合适性、适应性修改构 件以消除体系结构不匹配、组装构件到选择的体系结构风格中以及当系统需求变化时更 新构件。 图2 1 :基于构件的软件开发过程模型 图2 1 所示给出了一个典型的过程模型,它显然适应c b s e 。领域工程创建应用领域的 模型,该模型被用作在软件工程流中分析用户需求的基础。隶属的软件体系结构为应用 的设计提供了输入。最后,在可复用构件已经被购买、从现存库中选出或构造好后( 作为 领域工程的一部分) ,它们可以被从事基于构件开发的软件工程师使用。它很直观的描 述了开发流程,给出了开发中的重点问题一一软件体系结构设计和构件的组装等。 2 5 本章小结 本章首先简要的介绍了构件的定义,特点和模型。接着,介绍了基于构件的开发的 软件工程的研究方向,同时重点描述了基于构件的软件开发过程模型。 第三章平台动态更新9 第三章平台动态更新 3 1动态加载概述 运行的时候动态的装载和更新部分功能模块,在c c + + 中,可以很容易的利川动 态链接库w i n 3 2a p i 来实现。l o a d l i b r a r y 和n e e l i b r a r y 提供了在运行时刻加载新的功 能模块和释放内存空间的功能。需要被更新的功能模块被封装在动态连接库里,主程序 利用l o a d l i b r a r :l r 函数装载该动态链接库,然后调用其中的功能模块。需要更新某功能 模块的时候,首先终止运行该功能模块,利用n e e l i b r a 盯函数卸载现有的动态链接库, 通过网络或者是其他通讯端口将新的动态链接库文件发送到指定目录下,然后利用再次 利用l o a d l i b r a r v 函数装载新的动态链接库并调用其中的新功能模块。 在动态链接库技术中,l o a d l i b r a r y 函数负责加载功能模块,n e e l i b r a r y 函数负责 卸载功能模块。新的功能模块与旧的功能模块同名,新的动态链接库文件也与l u 的动态 链接库文件同名。当需要更新某个功能模块的时候,使用新的动态链接库文件替换旧的 动态链接库文件,被旧的功能模块所占用的内存空间也同时被释放。 3 2动态更新方法 平台的设计目标之一是可以实现构件的在线更新,执行构件动态更新时候需要的注 意到的问题和操作如下: 3 2 1动态更新操作 构件的更新操作包括: 添加新的构件:在系统运行时添加新的构件,不可假定系统正处丁此构件的初始 状态,构件必须检测系统的状态,并执行必要的操作来同步系统的内部状态; 升级或替换己存在的构件:系统的某一构件能够被另外的具有更好性能的构件替 换,需升级或替换的构件状态要转移到新的构件上,在变化过程中,两个构件小能 同时被激活,这个替换需要通过相同的接口: 删除不必要的构件:系统不再使用某一个构件时,这个构件将被删除,这种删除包 括临时删除和永久删除。每个具体的应用中有合适的条件管理构件的移除。例如, 当一个构件中的任何一个功能仍在系统执行进程的堆栈,系统的运行环境就会禁 止构件移除; 更新某一己存在的构件之前,还需要做一些验证工作比如构件的版本信息,即新的构件 的版本不能比要更新的版本低。 1 0 基于构件的开发平台研究 3 2 2动态更新方法 对于运行系统的动态更新问题,有以下几种更新方法 动态链接:动态链接允许动态更替对象,但不要求从对象中获取任何功能。这种方 法主要适用于不具有持久状态的对象: 静态状态转换:适用于具有持久状态的对象。这种状态转换有一些步骤:首先一个 程序状态被保存,此程序停止运行,然后用新的版本取代旧版本的对象,旧版本先 前的状态转移到新版本上。如果该程序不能被停止,例如它是系统的核心部分,那 就要用到下面的方法: 动态状态转换:利用状态转换函数,可以把一个运行系统的状态转换到新的版本 而且这个函数能够被自动生成。 3 2 3 一致性和正确性 系统动态更新后,更新前系统中正在执行的实例如何成功的转换到更新后的系统中 继续执行,并保证转换后的执行过程在更新后不出现错误,这种特性称为一致性。 更新后的系统仍满足稳定性要求,并且按照更新后的系统重新开始执行的实例不会 出错,更新前正在执行的实例转换到更新后的系统中也能保证一致。这种特性称为正确 性。为保证系统的一致性和正确性,系统要满足以下特性: 语法完整性:要保证发生更新后系统结构描述中语法的完整性,让设计者通过语 法检测来发现更新后系统结构中存在的一些错误; 数据的连贯性:删除一个构件,可能导致后续构件的输入数据不连贯。系统可以通 过增加某种机制来提供后续构件的输入数据,或者删除那些输入数据不连贯的后 续构件; 语义的正确性:语义正确性可以保证系统结构发生变化后,系统仍能正确的执行。 如果简单地将原系统中刚执行过的进程转换到更新后的系统中的相应进程执行, 可能会导致错误,因此更新时要保证系统语义正确性: 失败的原子性:如果系统的一个更新执行失败或者取消时,该更新不能继续执行, 为了保证系统正确性,必须撤销这个更新所执行的一切服务,并恢复该更新对数 据所做的修改,以保证更新失败的原子性; 保证数据的正确性:为了恢复更新修改的数据,因此每次更新数据都要保存数据 日志。 第三章平台动态更新 3 2 4更新执行步骤 按照c b d 模型的结构,对系统进行更新,一般来说,有以下几个步骤 1 检测更新的范围:在更新执行之前,首先要判断是局部更新还是全局更新,局部更 新作用于需更新构件的内部而不影响系统的其他部分,全局更新影响系统的其他 部分,全局更新需要发送请求到更高的抽象层; 2 更新准备工作:如果更新发生在应用层,构件配置器等待参与的进程( 或线程) 发出 信号,以表明它们己处于可安全执行更新的状态;如果更新发生在配置层,就需要 等待连接件中断通信和其他构件配置器已完成它们的更新:如果更新发生在体系 结构层,就直接执行; 3 执行更新。执行更新,并告知更新发起者更新的结果。 4 存储更新。将构件或体系结构所作的更新存储到构件或体系结构描述巾。 3 3j v m 中c l a s s l o a d e r 概述 在j a v a 中,类库加载器c 1 a s s l o a d e 靖b 够用来实现类似于c + + 中的l o a d l i b r a r y ( 装载 类库1 的功能。它是一个负责加载类库的抽象类。它接受一个类库的名称井试图定位和 生成包含有改类库定义的数据。 但j a a 并不提供一个类似于类库卸载器( c l a s s u n l o a d e r ) 的功能,能够把已经装载 的功能模块从内存里面清除掉。目前的虚拟机,大都使用了j i t ( j u s t i n t i m e 及时编 译) 技术,也就是说一个功能模块只有在它第一次被使用的时候才被编译。经过编译的 可执行代码被放到内存里面,用一个h a s h r l l a b k 做索引,其关键字为与之相对应的类库 名。由于没有模块卸载功能,在运行时亥0 已经被装载的功能模块是一直存在的。当某功 能模块实际上已经被更新( 即c l a s s 文件被替换为同名的新文件) 并需要被重新加载的时 候,虚拟机并不会试图装载新的功能模块而直接调用旧的功能模块。如果试| 墨i 利1 i j _ i j 户 自定义的类库加载器强行装载新的功能模块,则会因为新的功能模块与i f _ i 的功能模块同 名而导致虚拟机抛出链接错误:l i n k a g ee r r o r :d u p l i c a t ec l a s sd e 6 n i t i o n 。 要实现平台的动态更新功能,就需要了解平台的( ? l a s s l o a d e r 。 3 3 1c l a s s l o a d e r 层次结构 当j v m 启动时,会形成由三个类加载器( b o o t s t r a pc l a s s l o a d e r 、e x t e n s i o nc 1 a s 8 一 1 2 基于构件的开发平台研究 l o a d e r 和s y s t e mc 1 a s s l o a d e r ) 组成的初始类加载器层次结构 b o o t s t r a pc l a 8 s l o a d e r e x t e s i o nc l a 8 s l o a d e r s y 8 t e mc l a 8 8 l o a d e r 图3 1 :j 啪c l a s s l o a d e r 层次结构 b o o t s t r 印c l a 龉l o a d e r 一引导( 也称为原始) 类加载器,它负责加载j a v a 的核心类。 在s u n 的j v m 中,在执行j a v a 的命令中使用一x b o o t c l a s s p a t h 选项或使用一d 选项指定 s u n t b 0 0 t c l a p a t h 系统属性值可以指定附加的类。这个加载器的是非常特殊的,它实 际上不是 j a v a 1 a n g c l a s s l o a d e r 的子类,是用c + + 编写的,由j v m 自身实现的。我们在j a v a 中看不 到它,是n u l i 。它用来加载核心类库,j v m 启动的时候就自动加载。 e x t e n s i o nc 1 a s s l o a d e r1 2 目一扩展类加载器,它负责加载j r e 的扩展目录 ( j a 、,a j 0 m e j r e l i b e x t 或者由j a v a “t d i r s 系统属性指定的) 中j a r 的类包。这 为引入除j 帆核心类以外的新功能提供了一个标准机制。因为默认的扩展目录对 所有从同一个j r e 中启动的j v m 都是通用的,所以放入这个目录的j a r 类包对所有 的j v m 和s y s t e mc l a s s l o a d e r 都是可见的。在这个实例上调用方法g e t p a r e n t ( ) 总是返回 空值n l l l l ,因为引导加载器b o o t s t r a pc 1 8 s s l o a d e r 不是一个真正的c l a s s l o a d e r 实例。 s y 8 t e mc l 哪l o a d e r 一系统( 也称为应用) 类加载器,它负责在j v m 被启动时,加载来 自在命令j a 中的一c l a s s p a t h 或者j a v a c l a s s p a t h 系统属性或者c l a s s p a t h 操作系统属 性所指定的j a r 类包和类路径。总能通过静态方法c l a s s l o a d e r g e t s y s t e m c l a s s l o a d e r ( ) 找到该类加载器。如果没有特别指定,则用户自定义的任何类加载器都将该类加载器作 为它的父加载器。 3 3 2c l 越s l o a d e r 加载类 j v m 中的c l 8 l o a d e r 加载类用的是全盘负责委托机制。所谓全盘负责,即是当 一个c l a 蹈l o a d e r 加载一个c 1 a s s 的时候,这个c l a s s 所依赖的和引用的所有c l a s s 也由这 个c l 嘲l o a d e r 负责载入,除非是显式的使用另外一个c l a s s l o a d e r 载入:委托机制则是 先让p a r e n t ( 父) 类加载器( 而不是s u p e rc l a s s ,它与p a r e n tc l a s s l o a d e r 类不是继承关 系,p 缸e n tc l a l o a d e r 需要被指定) 寻找,只有在p e n t 找不到的时候才从自己的类路 径中去寻找。此外类加载还采用了c a c h e 机制,如果c a c h e 中保存了这个c l a s s 就直接返 回它,如果没有才从文件中读取和转换成c 1 8 s s ,并存入c a c h e ,这就是为什么我们修改 了c 1 但是必须重新启动j v m 才能生效的原因。 每个c l a s s l o a d e r 加载c 1 a s s 的过程| 2 6 】是: 第三章平台动态更新 1 3 ( 1 ) 检测此c l a s s 是否载入过( 即在c a c l l e 中是否有此c l a s s ) ,如果有到8 ,如果没有到2 ( 2 ) 如果p a r e n t c l a 8 s l o a d e r 不存在( 没有p a r e n t ,那p a r e n t定是b o o t 8 t r a pc l a s s l o a d e r 了) t 到4 ( 3 ) 请求p a r e n tc l a s s l o a d e r 载入,如果成功到8 ,不成功到5 ( 4 ) 请求j v m 从b 0 0 t s t 。印c l a s s l o a d e r 中载入,如果成功到8 ( 5 ) 寻找c l a s 8 文件( 从与此d a s s l o a d e r 相关的类路径中寻找) 。如果找不到则到7 ( 6 ) 从文件中载入c l a s s 到8 ( 7 ) 抛出c l a s s n o t f b u n d e x c e p t i o n ( 8 ) 返回c l 船s 其中5 ,6 步我们可以通过覆盖c l a s s l o a d e r 的6 n d c l a s s 方法来实现自己的载入策略。甚至 覆盖l o a d c l a s s 方法来实现自己的载入过程。 类加载器的顺序【2 1 是: 先是b o o t s t r a pc l a s 8 l o a d e r ,然
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 围绕项目管理考试的知识结构试题及答案
- 注册会计师实务案例试题及答案
- 项目管理考试中的技能提升与试题答案
- 四川省雅安市本年度(2025)小学一年级数学统编版课后作业(下学期)试卷及答案
- 2025年注册会计师技巧提升试题及答案
- 2025年证券从业资格证的备考心得试题及答案
- 行业分析与证券投资试题及答案
- 解析2025年证券从业资格证考试操作流程试题及答案
- 微生物检验中的法律法规试题及答案
- 2025年金融理财师考试案例分析报告写作方法与试题答案
- 高一离子方程式书写专题训练及答案
- 张元鹏《微观经济学》(中级教程)笔记和课后习题详解
- 如何有效管理90-00后新员工技巧方法-123课件
- 第十三讲 全面贯彻落实总体国家安全观PPT习概论2023优化版教学课件
- 人教版语文能力层级-·-教材-·-中考
- 2022年湖北省高中学业水平考试真题-音乐学科
- 浙江省公安民警心理测验考试题目
- OEE记录表格(设备综合效率)
- ds-c10h多屏控制器软件用户手册
- 《MATLAB-Simulink电力系统建模与仿真》电子课件
- GB/T 41771.1-2022现场设备集成第1部分:概述
评论
0/150
提交评论