(计算机应用技术专业论文)可复用构件库及其检索技术的研究与应用.pdf_第1页
(计算机应用技术专业论文)可复用构件库及其检索技术的研究与应用.pdf_第2页
(计算机应用技术专业论文)可复用构件库及其检索技术的研究与应用.pdf_第3页
(计算机应用技术专业论文)可复用构件库及其检索技术的研究与应用.pdf_第4页
(计算机应用技术专业论文)可复用构件库及其检索技术的研究与应用.pdf_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

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

文档简介

摘要 可复用构件库及其检索技术的研究与应用 摘要 基于构件的软件开发( c o m p o n e n t b a s e ds o f t w a r ed e v e l o p m e n t , 简称c b d ) ,被认为是解决软件危机、提高软件生产率和质量的切实 可行的途径,是实现软件工业化生产的必由之路,已经成为了软件复 用领域的研究热点。 作为c b d 的基础设施,构件库是决定c b d 成功与否的关键因素, 对构件库进行有效管理是实现c b d 的重要前提,所以对构件库的研究 与应用一直以来都是学术界和产业界的探讨热点。作为构件库管理的 两个核心技术,构件的表示与检索技术在整个构件库管理系统占有举 足轻重的地位,其中构件检索的性能和效率是衡量构件库整体性能的 重要指标,因此近年来对构件检索技术的研究不仅成为数据库领域界 的研究重点,而且还是软件复用领域研究的热点。在规模庞大的构件 库中迅速地检索到满足要求的构件,是用户和开发者共同追求的目 标,所以如何实现对构件的有效检索日益成为迫切需要解决的问题。 总之,对构件库及其检索机制的研究具有显著的理论和应用价 值。 本文在总结国内外各类通用构件库的基础之上提出了一个全新 的c r 构件库管理系统体系结构框架;同时还分析、比较现有的构件 检索方法,综合考察各类构件检索方法的利弊,针对构件查询的特点, 结合模式分析中的树匹配思想,提出了新颖的构件树路径包含匹配模 型及其相应的构件查询匹配算法,该算法可以在保持构件查准率的前 提下,有效提高构件的查全率,算法的时间复杂度和空间复杂度是线 性的,试验表明具有良好的查询效率,并将其应用在c r 构件库管理 系统中。 摘要 因为x m l 已经成为数据表示和交换的标准,在以后的应用研究 中,将会遇到大量的基于x m l 数据库的数据查询,所以对x m l 数据库 进行了一些探索性的研究,并考虑以后将建立基于x m l 的构件库,同 时对x m l 文档的查询进行了浅显的研究。 关键词:软件复用,构件,构件库,构件检索,构件树路径包含 匹配模型,x m l 摘要 r e s e a r c ha n da p p l i c a t i o no fr e u s a b l ec o m p o n e n t r e p o s i t o r ya n di t sr e t r i e v a lt e c h n o l o g y a b s t r a c t n o w a d a y st h ec 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 ) i sah o tt o p i c i nt h ef i e l do fs o f t w a r er e u s e i ti sr e g a r d e da sap r a c t i c a la p p r o a c ht o s o l v es o a r ec r i s i sa n dt oe n h a n c es o f t w a r ep r o d u c t i v i t ya n ds o t w a r e q u a l i t y , a sw e l la st h ei n e v i t a b l ep a s s i n gr o a df o rs o f t w a r ei n d u s t r i a l i z i n g a st h eb a s i ci n s t a l l a t i o no fc b d ,c o m p o n e n tr e p o s i t o r yi st h e c r u c i a lf a c t o rt h a tw h e t h e rc b dc a ns u c c e e do rn o t i ti si m p o r t a n tt o c b do f h o wt or e a l i z ee f f e c t i v em a n a g e m e n to f c o m p o n e n tr e p o s i t o r y , s o t h er e s e a r c ha n da p p l i c a t i o no fc o m p o n e n t r e p o s i t o r yh a sb e c o m et h eh o t t o p i co ft e a c h i n gf i e l da n de s t a t ef i e l d a st h en u c l e u st e c h n o l o g yo f c o m p o n e n tr e p o s i t o r ym a n a g e m e n t ,t h er e p r e s e n ta n d r e t r i e v a lo f c o m p o n e n th a si m p o r t a n t s t a t u s t h e c a p a b i l i t y a n d e f f i c i e n c y o f c o m p o n e n tr e t r i e v a l i sa i m p o r t a n ti n d e xt om e a s u r et h ec o m p o n e n t m a n a g e m e n ts y s t e m ,s o t h er e s e a r c ho fc o m p o n e n tr e t r i e v a li st h e e m p h a s i so fd a t a b a s ef i e l da n ds o f t w a r er e u s ef i e l d h o wt of i n dt h e n e e d e dc o m p o n e n tr a p i d l yi nt h eb i gc o m p o n e n tr e p o s i t o r yi st h eg o a lo f u s e ra n dd e v e l o p e gs ow eh a v et ot h i n kw a y st or e a l i z et h ea i m a sar e s u l t ,i th a sao b v i o u st h e o r e t i c a la n dp r a c t i c a lv a l u et o r e s e a r c ho nc o m p o n e n tr e p o s i t o r ya n di t sr e t r i e v a lm e c h a n i s m af r a m e w o r ko fc o m p o n e n tr e p o s i t o r y m a n a g e m e n ts y s t e m i s p r o p o s e di nt h ep a p e rb a s e do nm a n yc o m p o n e n tr e p o s i t o r ys y s t e m s ;a t t h es a m et i m ean e wm o d e ln a m e dc o m p o n e n tt r e ep a t hc o n t a i n m e n t m a t c h i n gm o d e li se x p o u n d e da n dt h ea l g o r i t h m si sa l s og i v e ni nt h e 摘要 p a p e ra f t e rc o m p a r i n ga n da s s a y i n gd i f f e r e n tc o m p o n e n tr e t r i e v a lw a y s , t h ea l g o r i t h m sc a ne f f e c t i v ei m p r o v et h ec o m p o n e n tr e c a l la tt h ep r e m i s e o fm a i n t a i n i n gt h ec o m p o n e n tp r e c i s i o n t h ec o m p u t a t i o no fm a t c h i n g c o s ti sr e s o l v e di nl i n et i m ea n dl i n es p a c e t h e r ei sag o o de f f i c i e n c yi n t h ee x p e r i m e n ta n dt h ea l g o r i t h m si su s e di nt h ec o m p o n e n tr e p o s i t o r y m a n a g e m e n ts y s t e m b e c a u s ex m lh a sb e c o m et h ec r i t e r i o no fd a t ar e p r e s e n t a t i o na n d d a t ae x c h a n g e ,w ew i l lm e e tal a r g en u m b e ro fd a t al o c a t i n gb a s e do n x m li nt h el a t e rr e s e a r c hs ot h a tw ea l s oh a v ea1 i t t l er e s e a r c ho nx 匝 d a t a b a s ea n dx i v l ld o c u m e n t j i ax i a o h u i ( c o m p u t e ra p p l i c a t i o n & t e c h n o l o g y 、 s u p e r v i s e db y 旦i n gx i g 垒亟q 堕g ,垦星i 垦i i 堕 k e yw o r d s :s o f t - w a r e r e u s e ,c o m p o n e n t ,c o m p o n e n t r e p o s i t o r y , c o m p o n e n tr e t r i e v a l ,c o m p o n e n tt r e ep a t hc o n t a i n m e n t m a t c h i n gm o d e l ,x m l 2 绪论 第一章绪论 本文顺应当前软件构件化的发展形势,在软件构件研究日益成为研究热点 的情况下,比较详细地讲述了软件构件相关技术,并深入研究了可复用构件库 及其检索技术,提出了构件库管理系统框架及新颖的构件检索方案一构件树路 径包含匹配模型。软件构件化是实现软件复用的基础,构件复用也是构件技术 研究的目的之一,所以文章首先从软件复用的发展谈起,本章主要讲述课题研 究背景和意义、国内外构件技术的发展状况及作者的研究工作等。 1 1 课题研究背景和意义 1 1 1 研究背景 在软件工程 1 发展的几十年中,提高软件产品的质量和软件生产效率,一 直是软件工作者研究的内容和软件开发活动追求的主要目标,众多的科研人员 和工程技术人员为此付出了艰辛的努力,同时也取得了丰硕的成果。但是由于 软件产品复杂度以及对软件功能需求的不断增加,传统的软件开发方法已经越 来越不能适应现今对软件产品的需求了。 随着软件工程思想和技术的普及,软件生产率稳步上升,软件质量得到了 很大改善,但是如何彻底解决“软件危机”,在提高软件生产效率的同时保障 软件产品的质量,同时减少重复劳动仍然是软件开发者必须考虑的问题。 国际软件界普遍认为软件开发必须脱离传统手工业的单件生产模式,转向 构筑在标准化零部件基础上的高效率、高质量的新型生产方式,真正实现软件 的工业化生产才能彻底解决“软件危机”,保证软件生产的高效率和高质量, 也只有把软件开发纳a i 程化的轨道,才能有效缓解“软件危机”局面【2 。 由于软件复用 3 】是一条现实可行的途径,所以对软件复用技术的研究已成 为软件工程界的研究方向之一。 绪论 自从1 9 6 8 年正式提出软件复用( s o f t w a r er e u s e ) 的概念以来,软件复用已有 三十多年的发展历程,复用的对象也从早期的代码复用扩展到对软件开发过程 中一切有价值的信息的复用,包括需求、需求规约、设计、源代码、测试计划 等。那么什么是软件复用呢? 软件复用是指重复使用“为了复用目的而设计的 软件”的过程。相应地,可复用软件是指为了复用目的而设计的软件。 基于构件的软件开发( c o m p o n e n t - b a s e ds o f t w a r ed e v e l o p m e n t ,简称c b d ) , 被认为是解决“软件危机”、提高软件生产率和质量的切实可行的途径,是实现 软件工业化生产的必由之路,已经成为了软件复用领域的研究热点。 基于构件的开发( 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 n t - b a s e ds o f t w a r ee n g i n e e r i n g ,简称c b s e ) 是一种软件 开发新范型,于1 9 9 8 年国际软件工程会议上提出,它是在定构件模型的支持 下,复用构件库中的一个或多个软件构件,通过组合手段,高效率、商质量地 构造应用软件系统的过程 4 。由于以分布式对象为基础的构件实现技术日趋 成熟,c b s e 已经成为现今软件复用实践的研究热点,并且被认为是最具潜力的 软件工程发展方向之一,如今c b s e ( 基于构件的软件开发方法) 已经引起了国 际上的普遍重视。 有了软件构件之后,开发人员就可以利用现成的软件构件装配成适用于不 同领域、功能各异的应用系统。人们将彻底改变软件的生产方式,从根本上提 高软件生产的效率和质量,提高开发大型软件系统,尤其是商用系统的成功率。 这是软件开发人员跨世纪的梦想,也是软件产业发展的一个梦想,因此构件技 术一直被视为解决“软件危机”现实可行的途径。 1 1 2 研究意义 1 9 9 9 年2 月美国总统i t 顾问委员会的一份报告中列举了大量的事实,论 证i t 技术对社会和国家以及人民生活的重要作用,并建议美国政府加大对i 丁 技术发展研究的投入,报告建议重点支持四个方面的软件技术的发展和研究, 其中第一个就是支持软件开发方法和构件技术的基础研究。 从1 9 9 5 年开始,由r a t i o n a l 软件公司发起,b o o c h 、r u m b a u g h 、j a c o b s o n 2 绪论 共同提出了统一建模语言u m l ,得到很多软件公司的支持,并逐渐成为面向 对象方法的事实标准。随着面向对象技术的发展,软件构件化的梦想慢慢成为 现实。近几年来,构件技术的发展己证明了它的巨大威力。 既然基于构件的软件工程方法是解决“软件危机”的有效途径,是支持软 件复用的核心技术,那么它的研究内容所包括的构件的标准与模型、构件的生 产与获取、构件的规约与描述、构件的分类与组织、构件的检索与组装、软件 体系结构、软件复用支持工具与管理手段、基于复用的软件开发过程等方面显 然会成为专家学者的研究重点,正因为如此,c b d 各方面的研究工作在大家的 努力下取得了很大进展。 随着软件复用实践的深入和时间的推移,企业内部积累的构件将越来越多, 企业外部对构件的需求也越来越多。这样,就面临着以下问题:一方面,企业 内构件库中有大量的构件,但是由于复用人员限定在企业内部,导致构件复用 率不高,另一方面,众多的企业外软件工程技术人员希望能从共享构件库中获 取共享构件。同时,企业或组织也希望能方便地在企业或行业组织间进行构件 的共享和交流。i n t e m e t 和w e b 技术的成熟,使得企业或组织的构件库实现基于 i n t e m e t 的共享成为可能和必然。这样不仅能提高构件的复用率,而且众多的构 件通过i n t e m e t 提交到构件库,也势必增大构件资源的范围,促进复用实践的发 展。 一般来说,软件复用的过程大致分为分类、检索和定制三个步骤。分类就 是把可复用构件存入可复用构件库r c l ( r e u s a b l ec o m p o n e n tl i b r a r y ) 0 0 的适当 位置;检索就是根据用户的需求从可复用构件库中找到合适的可复用构件:定 制则是对找到的可复用构件进行一些必要的修改以使其和用户自己设计的其它 构件能一起协调工作。 在这三个过程中,检索过程最为关键,它直接影响到用户是否能够对构件 进行成功的复用。“有效的构件检索机制能够大大降低构件检索和理解的成本” 【5 。在当前的构件复用中,“关键是要解决构件的分类和检索技术”【6 。目前, 软件复用在软件开发中还没有被广泛的使用,缺乏有效的检索手段是一个主要 的原因,所以,可复用构件的检索问题已经成为软件复用的瓶颈问题,如何实 现构件库对构件的有效管理和检索,检索到符合需求的构件变得越来越困难, 找到一种合理的构件库组织方式和构件库的检索机制,成为当前迫切解决的问 题。如何迅速有效的检索到所需构件。不仅是每个用户最关心的,同时也是研 究者所追求的目标,因此在软件产业中对构件库的组织和检索机制的研究有很 大的意义。 1 2 国内外研究现状 1 2 1 构件技术研究现状 国外( 7 】关于构件技术的研究起步比较早,在实践中也已经得到了应用。如 美国国防部高级研究项目署建立了“用于易修改的可靠系统的软件技术”项目, 研究领域特定的、基于复用的软件工程技术,并建立了三个示范工程项目;1 9 8 5 年,瑞典c e l s i u s t e c h 系统公司,同时接到瑞典海军和丹麦海军的轮船系统的两 份合同,两个系统都需要很强的容错性和分散性,该公司采用s s 2 0 0 0 产品线方 法后,获得了巨大成功,将硬件与软件的费用比例从过去的3 5 :6 5 变成了8 0 :2 0 。 软件构件化是软件产业未来的发展趋势,在国内,构件软件研究已被人们 普遍关注。北京大学软件工程研究所是一个专注于软件工程及其相关领域的研 究和实践的学术机构,其前身是建立于1 9 8 3 年的软件工程教研室,1 9 9 9 年正式 挂牌成为北京大学的一个专业研究所。近年来,研究所在所长杨芙清院士的领 导下,对软件复用与软件构件技术进行了深入的研究,成绩斐然;中科院软件 所软件工程技术研究中心,在首席研究员冯玉琳博士带领下,对构件技术深入 研究,硕果累累。不仅如此,在实际工程中,青鸟公司、中软公司、华科电脑 公司等均采用基于构件技术开发应用软件,积累了不少经验,获取极好的效益。 普元是国内最早推进面向构件技术的厂商之一,也是目前国内唯一一家提供真 正意义上的面向构件的互联网应用基础平台的专业化厂商,普元把崭新的互联 网相关技术与先进的构件复用技术以及可视化开发技术完美地结合起来,创造 了一套具有国际领先水平的面向构件的互联网的应用基础平台一一e o s 。 目前国内许多大工程、大项目都纷纷采用这项技术,如8 6 3 计划近一半的 项目、通信方面许多大项目的投标、金融行业的业务处理系统等,都在朝这个 方向发展,而且软件构件的方法已经被确定为“十五”期间软件技术发展趋势。 4 绪论 由此可以看出,全世界的软件行业,特别是在应用领域中的软件技术。正 在酝酿着一次飞跃,这次飞跃将会对软件行业的生产方式产生根本性的变革。 1 2 2 构件库系统研究现状 随着复用实践的深入,将会积累大量自主开发的构件、购买的商业构件和 其他组织开发的构件,这些可复用构件构成了庞大的企业资产,而构件库作为 分类和管理构件资产的基础设施就变得十分重要了。 在构件库支持下,软件工程师直接使用已有的合格的构件开发应用系统, 避免了对构件的重复开发,从而提高软件开发效率和软件质量。 构件库作为管理软件构件及促进软件复用的核心机制,将基于复用的开发 和而向复用的开发过程与工具集成在一个统一的框架中,当前软件界对可复用 构件库及其相关问题进行了深入研究,并取得不少成果。 复用库互操作组织( r j g ) 的一个技术委员会t c ( t e c h n i c a lc o m m i t t e e s ) 为了使各个软件复用库之间能够共享软件构件,考察了构件库之间的可互操作 性问题,并开发了一个统一数据模型u d m ,定义了可互操作的库之间交换软件 构件所需要的信息,为各个库之间交换数据提供了一个标准的数据模型。 r e b o o t 是一个包括储存可复用构件的数据库和一组产生、认证、插入、 提取、评价和适配可复用构件的工具的环境。其中在对构件进行分类时采用了 刻面的分类策略,这个分类策略主要针对面向对象的构件。从整体上看来, r e b o o t 的刻面分类模式主要是针对源代码级别的构件,而且不具备描述粒度 较大、结构较复杂的构件如模式、框架等的能力。 n a t o 提出了一种刻面分类模式,其中的刻面不必彼此独立,也不必适用于 所有的构件。一组典型的刻面可能包括:对象、功能、算法、类型、语言和环 境。在对一个构件进行分类时,不一定所有的刻面都出现。刻面术语具有同义 词关系,一组同义词表达个概念,术语空间由这些术语构成,术语之间没有 一般特殊关系,即术语空间是非结构化的。 美国军方发起的s t a r s 项目考虑了在构件库之间共享资源和实现无缝互操 作的问题,于1 9 9 2 年提出了开放体系结构的构件框架( a l o a f ) 。该文档包括构 绪论 件库框架的参考模型( a l p - r m ) 、互交换构件的所需的数据模型和约定格式的规 约以及一个在a l p - r m 上支持构件互交换和构件描述的框架服务规约。a l o a f 强调数据建模的作用,考虑元模型层、模型层和数据层三个层次,认为统一的 数据元模型是互操作和数据共享的基础。a l f 在宿主s e e 环境上为构件库机制 和相关的复用工具提供服务接口,以这组标准的服务为基础实现构件库间的互 操作。 国内对构件库的研究也有了相应的成果。其中,以我国北京大学的青鸟工 程为软件复用及相关技术的研究工作水平的代表。青鸟工程在“九五”期间开 发了基于异构平台、具有多信息源接口的应用系统集成( 组装) 环境:青鸟三型 o b 3 ) 系统【8 】。在相应构件模型基础上,建立了青鸟构件库数据模型,并与其它 c a s e 工具相结合,支持对构件的描述( 使用青鸟构件描述语言j b c d l ) 、分类、 管理、存储、检索和复合,满足了基于“构件一构架”复用的软件开发过程的 需要。 1 2 3 构件库检索研究现状 在以往对于可复用构件的检索方法的研究中,取得了许多成果,也提出了 不少实用而有效的方法。例如,j e n g 等人提出用形式化的规格说明来进行可复 用构件的匹配 9 】;l o n d o n 把形式化语言z 用于可复用构件的描述和匹配 1 0 1 : z a r e m s k i 等人提出用签名匹配( s i g n a t u r e m a t c h i n g ) 作为形式化工具来进行可复用 构件的检索 1 1 。m a a r e k 等人采用给自然语言描述加索引的方法 1 2 1 ;p r i e t o d i a z 用刻面( f a c e t ) 方法,该方法用多个刻面描述给定构件的特征 1 3 。这些方法在 某些方面取得了明显的效果,但据f r a k e s 和p o l e 的一项调查结果显示 1 4 】,没 有一种检索方法能满足所有用户的所有检索要求,用户往往根据自己的喜好采 用他自己认为最合适的检索方法。 传统上认为,高昂的建库费用和缺乏有效的检索工具是阻碍软件复用的两 个因素。一般地,软件开发人员中普遍存在着7 0 阀值现象 1 5 ,若检索效率太 低,或检索精度太差,必然会使软件开发入员放弃复用的努力。因此,好的检 索方法对于成功的软件复用是极为重要的, 绪论 1 3 课题研究内容 基于构件的软件开发是以面向对象为基础,以嵌入后马上使用的“即插即 用”软件构件为中心,通过构件组合来建立应用系统的。从软件生存周期来看, 可以分为可复用的构件开发和基于可复用构件的软件开发过程。可复用的构件 可以从旧系统中提取或者直接开发:基于可复用的软件开发指在已有构件的基 础上组装新的应用系统。 构件开发过程和重用过程可以在时间和空间上分离,实施主体也可以不同。 构件像软件系统一样可以成为独立的商品,软件开发过程变成构件的组装过程, 可以大大提高软件开发效率、缩短软件开发周期。作为一个有效的软件开发方 法,构件技术研究得到了专家和学者的重视,其研究内容日益增多,在这个充 满生机和活力的研究领域,作者在研究生论文研究阶段进行了以下部分内容的 了解和探索: ( 1 ) 软件构件技术的基础研究。研究内容包括软件构件的基本知识,构件 与对象的联系和区别,相关构件技术如构件模型、构件的获取、构件的集成和 组装等。 ( 2 ) 可复用软件构件的开发。作为应用系统集成的基本单位,可复用的构 件开发占有举足轻重的地位,可复用软件构件的设计和实现在文中得到了仔细 研究。 ( 3 ) 构件检索技术研究。如何快速有效的检索到所需构件,是尽快组装应 用系统的基础,这是本文研究的重点内容,作者通过构件的分类方法、基于关 系和基于对象存储的不同、检索方案等方面进行多方探索比较。 ( 4 ) 关于构件库系统的研究,提出了c r 构件库管理系统框架。 ( 5 ) 构件检索新方案的应用。在研究构件检索基础上,提出作者自己的c r p 构件检索模型,并应用于基于i n t e m e t 的构件检索系统中。 ( 6 ) 关于x m l 文档查询的研究。 绪论 1 4 本文内容安排 本文围绕软件构件的检索展开,共分五章,其中第一章是绪论,介绍课题 研究背景、研究意义、国内外构件技术、构件库及构件库检索研究现状、课题 研究内容等。第二章和第三章是本文研究的理论基础,分别介绍可复用构件开 发相关技术、构件库的管理及关于构件分类和检索的理论和方法:第四章和第 五章详细介绍c r 构件库管理系统的组成、详细介绍了基于刻面的c r p 构件检 索模型及基于s & v 索引的x m l 文档查询方法并对本文研究进行了总结,同时 指出进一步需要研究的工作。 1 5 本章小结 本章主要介绍了课题研究背景和意义、目前国内外构件技术,构件库和构 件库检索现状研究现状、课题研究内容及本论文的结构安排,重点是课题研究 背景和意义及构件库、构件检索研究现状。 软件构件技术 第二章软件构件技术 随着分布式网络的发展,软件的开发越来越强调跨时间、跨设备、跨用户 的共享,导致软件在规模、功能上的极大增长,迫使软件向异构协同工作、可 反复重用的工业化道路上前进。为适应软件的这种需求,新的软件开发模式都 支持分布式计算、b s ( 浏览器服务器结构) 、模块化和构件化集成,使软件类似 于硬件一样,可用不同的标准构件拼装而成为了满足这些要求,软件构件技 术出现了。 构件是一个可独立配置的、与环境和其他构件可分离的单元,而且构件可 以在适当的环境中被重复使用。构件技术的应用,使得软件系统中的某些构件 可随时升级而不会影响整个系统的运行,这样软件产品就可以从软件工厂中生 产出来,从而彻底解决“软件危机”问题。近几年来,构件技术的发展已证明 了它的优势,软件的构件化和软件复用己经成为互联网时代软件开发的大趋势。 本章是论文的理论基础,作者将给予详细介绍,主要内容包括构件的基本 概念、构件模型、构件的获取、构件的表示和检索、可复用构件的生产和构件 的组装等构件技术相关知识。 2 1 软件构件基本概念 构件是设计、实现以及维护基于构件的系统的基础。理解c b d 的关键需要 了解构件意味着什么,关于什么是构件、什么不是构件的问题有很多不同意见 1 6 】。关于构件的一个相当广泛、全面的定义如下:构件是指功能相对独立的、 封装的、具有严格描述文档的、通过接口提供服务的软件包。广义上讲,它不 但包括源程序,而且还包括在软件生产过程中各个阶段的成品,如项目计划、 需求定义、分析模型、设计模型、文档、测试案例和数据以及其它对开发活动 有用的信息等。 由定义可以看出构件具有的某些特性。第一,构件是可交付单元,具有可 软件构件技术 执行软件包的特征。第二,构件提供有用的功能,这些功能集合到一起满足用 户需求。第三,构件通过接口提供服务,使用构件时通过访问接口而不是内部 细节。 2 1 1 构件与对象的区别与联系 在讨论构件和基于构件方法的时候,关于构件和对象方法的关系之间存在 很多争论。为了在表达问题的面向业务的概念和解决方案的面向技术的概念之 间建立一个更紧密的、更自然的联系,产生了面向对象编程语言,过去的1 0 年 中,面向对象原则在许多领域得到应用,特别是数据库和设计方法,那么构件 和对象有哪些区别呢? 面向对象的方法和技术是继结构化方法之后出现的、最有代表性的软件开 发方法,是当今软件开发的主流技术,其核心是用软件对象模拟和表达现实中 的对象,使软件结构与问题空间一致,简化了软件开发过程各阶段中模型之间 的转换,从而使人们对问题的认识过程与解决问题的过程保持一致成为可能, 但是面向对象的代码经过编译执行后是不可改变的、无法重用的。 构件技术是一种软件实现的技术和方法,是对面向对象方法在二进制代码 级的完善和补充。构件具有部署单元的作用,是基于构件模型的,提供了对一 个或多个对象实现的包装,是一个组装单元,它用于从很多独立创建的功能部 分设计和构建系统,每个部分潜在地是用一种o o p l 或某种其他技术创建。接 口是构件技术的核心,在定义了统一的接口标准后,各种语言编写的软件就可 以实现互操作了,目前有几个权威机构定义了接口标准,并取得了广泛应用, 在后面将给予介绍。 2 1 2 构件与中间件的区别与联系 中间件是一种独立的系统软件或服务程序,是位于平台( 硬件和操作系统) 和应用之间的通用服务【1 7 】。中间件在操作系统、网络和数据库之上,应用软件 之下,其主要功能是帮助用户灵活、高效地开发和集成复杂的应用软件。这些 服务具有标准的程序接口和协议。针对不同的操作系统和硬件平台,它们可以 软件构件技术 有符合接口和协议规范的多种实现。因此,中间件是一类软件,而非一种软件; 中间件不仅仅实现互连,还要实现应用之间的互操作;中间件是基于分布式处 理的软件,并特别强调了网络通讯功能。 构件是可复用软件实体,是一个系统的功能单元,能够从一个项目转到另 一个项目发挥作用。构件的思想更多地将重点从建模本身发展到对软件生产的 考虑,即构件可以在应用领域的软件生产中作为零件纳入新的体系中被重用。 因此,构件是面向对象思想的沿袭和扩展,认识事物的角度从对象个体本身上 升到个体在群体中的作用。构件的存在某种程度上极大地依赖于构架技术,或 环境、基础设施、计算平台,只有在适当的构架中,软件才有可能被抽象和隔 离,最终成为构件,单独讨论构件是抽象而空洞的。 本质上,中间件是对分布式应用的抽象,它抛开了与应用相关的业务逻辑 细节,保留了典型的分布交互模式的关键特征。经过抽象,将纷繁复杂的分布 式系统经过提炼和必要的隔离后,以统一的层面形式呈现给应用,目的是为了 更好的达到基于构件的复用,消除构件对处理平台和开发语言的依赖。 构件作为软件复用的最小单位,所包括的范围取决于构件设计及实现时抽 象的功能范围。理想状况下,整个系统由若干个构件组合而成,构件和构件之 间的联系方式通过接口定义。 2 。2 软件构件技术介绍 软件构件技术是当今软件工程研究的热点之一,其研究范围涉及软件工程 的方方面面,限于篇幅及作者课题研究的要求,在这里只讨论与本文相关的构 件技术。 软件构件化的目的是为了重用,所以构件本身应该遵循一定标准,构件模 型为设计、组装和部署应用程序定义了一系列标准,按照构件模型制作的构件 在支持接口操作和构件执行环境兼容的条件下,就可以方便地实现复用。 2 2 1 构件模型 只有完善的构件模型,才能实现最大程度的复用,因而构件规范在复用基 软件构件技术 础的过程中很重要,构件模型描述每个构件怎样为其他构件提供服务,怎样实 现构件连接,如今三种构件模型统治着构件市场:i b m 的c o r b a 、m i c r o s o f t 的d c o m 、s u n 的j a v a e j b 平台,这三种构件规范都是针对二进制代码构件制 定的,为基于构件的软件开发提供了对象管理的基础设施,下面分别从c o r b a 、 d c o m 和j a v a 几个方面来介绍软件构件模型技术的基本内容。 2 2 1 1 公共对象请求代理系统结构c o r b a 对象管理组织o m g ( o b j e c tm a n a g e m e n tg r o u p ) g l j 建于1 9 8 9 年,是一个国际 性的软件行业协会,主要宗旨是促进面向对象的方法在软件工程中的应用,以 及在面向对象的软件工程方法学的基础上,为大规模系统软件的开发与应用制 定软件体系结构模型和通用接口规范。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 r a r c h i t e c t u r e ) 是它推出的一个重要规范,主要目标是解决面向对象的异构应用之 间的互操作问题,并提供分布式计算所需的一些其它服务,定义对象之间通过 o r b 透明的发送请求和接受相应的机制,但不规定具体的实现。 c o r b a 的对象模型支持面向对象的主要特征,对象通过接口并且只有通过 接口输出其功能,客户也只有通过接口访问对象提供的服务和方法,允许跨网 络的对象交换和方法调用,采用i d l 进行描述。提供了i d l 到c + + 、c 、j a v a 等语言的映射机制一i d l 编译器,同时提供了一系列的公共服务规范c o s s , 包括名字服务、永久对象服务、生命周期服务等。 c o r b a 的核心o r b 的作用是将客户对象( c l i e n t ) 的请求发送给目标对象 ( 在c o r b a 中称为对象实现o b j e c ti m p l e m e n t a t i o n ) ,并将相应的回应返回至发 出请求的客户对象。 c o r b a 是一种语言中性的软件构件模型,可以跨越不同的网络、不同的机 器和不同的操作系统实现分布对象之间的互操作,是i n t e r a c t 上实现对象互访的 技术标准,并且是许多公司进行系统集成的基本协议。图2 - 1 为c o r b a 体系结 构。 软件构件技术 图2 - l 对象请求代理的体系结构 2 2 1 2 组件对象模型c o m 和o c o m 。 i n t e m e t i n t r a n e t 的飞速发展对应用软件提出了更高的要求,于是组件化程序 设计的思想得到了迅速发展。为了使这些跨越不同机器、不同操作系统的组件 能够相互通信,这些组件必须遵循一个统一的标准,为此微软公司于1 9 9 3 年提 出了c o m 标准,同时也给出了这些组件相互协作的环境。 c o m 定义了组件和它们的客户之间相互作用的方式,它可以使组件对象和 客户程序不需要经过任何中介组件就能以一种统一的方式相互通信。而且微软 把c o m 技术用在了w i n d o w s 系统的各个层次上,形成c o m 对象之间实现互操 作的二进制标准,使c o m 对象可以与其它对象相互操作,这些对象可以用不同 的语言实现,其结构也可以不同。 c o m 规范是一套为组件架构设置标准的文档形式的规范。它是一个说明如 何建立可动态互变组件的规范。它定义了一些为保证能互操作,客户组件必须 遵循的标准。c o m 的发布形式是:以w i n 3 2 动态链接库( d l l ) 或者可执行文件 ( e x e ) 的形式发布。 为支持网络环境,1 9 9 6 年微软与其他业界厂商合作提出了组件对象模型 ( d c o m ) ,使得采用组件技术构建网上应用系统成为可能,它是c o m 在分布 计算方面的自然延续,为分布在网络不同节点的两个c o m 组件提供了互操作的 基础结构。d c o m 增强了c o m 的分布处理性能,支持多种通信协议,也加强 了组件通信的安全保障。从系统内部的实现机制而言,d c o m 所采用的技术符 合c o m 模式。 软件构件技术 d c o m 是组件技术c o m 的无缝扩展,可以将基于c o m 的应用、组件、工 具以及知识转移到标准化的分布式计算领域中来,这样在做分布式计算时,由 d c o m 处理网络协议的低层次的细节问题,从而使程序员能够集中精力解决用 户所要求的问题。图2 2 为d c o m 体系结构。 图2 - 2d c o m 的体系结构 2 2 1 3j a v a 环境平台企业版d a v a b e a n e j b j a v a 是一种应用开发平台,巧妙地采用了虚j 茧l 机机制,使得编译后产生的 泛代码程序可以在各种平台上执行,从而做到了程序执行与平台无关,同时j a v a 编写的a p p l e t 可以方便地用浏览器下载运行,j a v a 中软件构件是能够进行可视 化操作的可重用软件,可以根据需要进行定制和组装,所以j a v a 语言普及和发 展得很快。 j a v a 采用了构件技术,发展了j a v a 构件( 即j a v a b e a n ) 和企业级j a v a 构件 ( 即e j b ) 。j a v a b e a n 构件规范因为j a v a 语言的纯面向对象特性,j a v a b e a n 构件 规范比较完备、简洁。为了用构件技术组成实际的应用系统,在j a v a b e a n 基础 上推出了e j b 。e j b 是j 2 e e 平台的核心,j 2 e e 的一个主要目的就是简化企业应 用系统的开发,使程序员将主要精力放在商业逻辑的开发上。e j b 正是基于这种 思想的服务器端技术,它本身也是一种规范,该规范定义了一个可重用的组件 4 软件构件技术 框架来实现分布式的、面向对象的商业逻辑。核心思想是将商业逻辑与底层的 系统逻辑分开,使开发者只需关心商业逻辑,而由e j b 容器实现目录服务、事 务处理、持久性、安全性等底层系统逻辑,是一种构件架构,使得开发人员能 够快速开发出具有伸缩性的企业级应用。 s u n 公司对e j b 的定义是:e j b 是用于开发和部署多层结构的、分布式的、 面向对象的j a v a 应用系统的跨平台的组件体系结构。e j b 体系结构如图2 。3 所 示,客户可以通过j n d i 服务得到e n t e r p r i s e b e a n 的h o m e 接、口的引用。通过使 用这个到h o m e 接口的引用,一个客户可以获得r e m o t e 接口的一个引用。客户 可以接着通过r e m o t e 接口访问e j b 类中定义的业务方法,并访问后台数据库。 应用服备 h o m e 接 厂、 e j b 容器 、 船 ! n p 、 t ; r c m o t 、) i , l 叫l 一 图2 - 3e j b 体系结构 2 2 1 4 三种构件模型的比较 采用不同标准生成的构件将带来难以交互等问题,在这三种构件模型中, e j b 同c o r b a 之间具有较好的互补性和互通性,e j b 提供了一个概念清晰、结 构紧凑的分布计算模型和构件互操作的方法,为构件应用开发提供了相当的灵 活性、但由于它还处于发展初期,因此其形态很难界定;c o r b a 是一种集成中 问件技术,而不是编程技术,它提供了对各种功能模块进行构件化处理并将它 们捆绑在一起的粘合剂;e j b 和c o r b a 在很大的程度上是可以看作为互补的, 这适应w e b 应用的发展要求,许多厂商非常重视促进e j b 和c o r b a 技术的结 软件构件技术 合,将来r v i i 可能建立在i i o p 协议上;c o r b a 不只是对象请求代理o r b ,也 是一个非常完整的分布式对象平台、c o r b a 可以扩展e j b 在网络、语言、组件 边界、操作系统中的各种应用、目前许多平台都能实现e j b 构件和c o r b a 构 件的互操作。 同e j b 和c o r b a 之间相互之间方便的互操作性相比,d c o m 和c o r b a 之间的互操作性要相对复杂些,虽然d c o m 和c o r b a 极其类似,d c o m 的接 1 2 指针大体相当于c o r b a 的对象引用,为了实现c o r b a 和d c o m 的互操作, o m g 在c o r b a 3 0 的规范中,加入了有关的c o r b a 和d c o m 互操作的实现 规范,并提供了接口方法。 虽然人们试图在c o m ,d c o m ,c o r b a 之问进行桥接,以改善互用性,但 目前效果仍不够理想,因此制定一个统一的构件实现标准以实现不同构件之间 的集成,将是今后构件技术发展所要解决的一个难点。表2 1 是对三种构件模型 的比较。 表2 - 1 三种构件模型比较 主题c o r b ac o 们) c o me j b 跨语言性好好差( 限j a v a ) 跨平台性好差( 限w i n d 0 w s )好 执行效率好一般好 安全性好一般好 扩展性好一般好 成熟度成熟成熟不成熟 第三方支持一般好好 构件模型对构件运行环境、构件制作和构件组装等都具有十分重要的影响, 因此构件规范的制定备受重视。随着各种规范的互相影响和互相补充,人们对 构件的认识也逐

温馨提示

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

评论

0/150

提交评论