(计算机应用技术专业论文)基于xml的构件组装技术研究.pdf_第1页
(计算机应用技术专业论文)基于xml的构件组装技术研究.pdf_第2页
(计算机应用技术专业论文)基于xml的构件组装技术研究.pdf_第3页
(计算机应用技术专业论文)基于xml的构件组装技术研究.pdf_第4页
(计算机应用技术专业论文)基于xml的构件组装技术研究.pdf_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

摘要 软件工程的目标是致力于提高软件生产效率和软件质量,如果每个应用软件 系统的开发都从头丌始,其中必然存在大量的重复劳动,软件复用是一条提高软 件生产效率和软件质量的切实可行的解决方案,其出发点是应用系统的开发以已 有的工作为基础,充分利用已有系统的开发中所积累的知识和经验进行新的开 发,这样软件开发的重点就可以集中于应用系统中的特有构成成分上。通过软件 复用,消除了包括分析、设计、实现、测试等软件开发过程中的重复劳动,提高 了软件开发效率,通过复用已有的开发成果,避免了由于重新开发可能引入的错 误,从而可以不断提高软件产品的质量。 本文从软件体系结构的角度出发,对构件组装技术进行了一定得研究。提出 了一个基于软件体系结构的、面向构件组装的构件模型。构件模型和构件组装两 者有着非常紧密的关系,本文用x m l 文档对构件组装进行描述,在基于x m l 的构件 模型上对构件进行组装。 本文首先介绍了构件及其相关的技术,包括软件复用技术,构件技术以及各 种构件组装方法等。其次,介绍了基于x m l 的构件模型。在基于x m l 的构件模型 的基础上提出了一个基于x m l 的构件组装平台,对构建组装技术进行了深刻的分 析。基于以上模型,本文开发出了一个构件管理和组装平台。该平台是一种插件 式结构,可以方便的扩展平台所需要的功能。然后讨论了该平台所用的设计模式 以及一些运行结构功能。 关键词:软件复用,构件,构件模型,构件组装 a b s t r a c t t h es o f t w a r ed e v e l o p m e n tm e t h o dt h a tb a s e do nc o m p o n e n tr e u s ei so n eo ft h e a v a i l a b l ew a y sr e s o l v et h ec r i s i so fs o f t w a r e ;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 p r o v i d eas y s t e m a t i cf r a m e w o r kf o rt h ec o n s t r u c t i o n ,m a i n t e n a n c e ,a n de v o l u t i o no f s o f t w a r ea p p l i c a t i o na n ds y s t e m s 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 gh a st w o f u n d a m e n t a le l e m e n t sac o m p o n e n tm o d e lt h a td e f i n e st h es t a n d a r df o rt h ei n t e r a c t i o n a n dt h ec o m p o s i t i o no fc o m p o n e n t s ,a n dac o m p o n e n tf r a m e w o r kt h a ts u p p o r t st h e e x e c u t i o no ft h ec o m p o n e n t st h a tc o n f o r mt ot h em o d e l an u m b e ro fc o m p o n e n t m o d e l sh a v eb e e nd e f i n e da n dm a n yh a v eb e e nw i d e l ya d o p t e di n p r a c t i c e t h e s e d i f f e r e n tc o m p o n e n tm o d e l sh a v es t i m u l a t e dt h er a p i dd e v e l o p m e n to f c o m p o n e n t s b y d i f f e r e n td e v e l o p e r s ,w i t ht h eh o p et h a te v e n t u a l l ym o s tc o m p o n e n t sn e e d e df o r a p p l i c a t i o nb u i l d i n gw i l lb ea v a i l a b l ea so f f - t h e s h e l fc o m p o n e n t s t h i sp a p e ri sb e l o n gt os o f t w a r es y s t e mf l a m e ,f o c u so nr e s e a r c h i n g c o m p o n e n t c o m p o s i t o n t h i sd i s s e r t a t i o na d v a n c eac o m p o n e n tm o d e lo fs o f t w a r es y s t e m f r a m ea n dc o m p o n e n tc o m p o s i t i o n c o m p o n e n tm o d e la n dc o m p o n e n tc o m p o s i t i o n h a v ec l o s e n e s sr e l a t i o n im a k ex m ld o c u m e n td e s c r i p ec o m p o n e n tc o m p o s i t i o na n d c o m p o n e n tc o m p o s i t i o n t h ef i r s t ,t h i sp a p e ri n t r o d u c ec o m p o n e n t ,i n c l u d es o f t w a r er e u s e ,c o m p o n e n ta n d c o m p o n e n tc o m p o s i t i o n t h e n ,t h i sp a p e ri n t r o d u c ex m lc o m p o n e n tm o d e la n d c o m p o n e n tc o m p o s i t i o n w ea d v a n c eac o m p o n e n tc o m p o s i t i o nf l a t - b u i l d i n g i tc a n i n s e r tt oc o m p o n e n t ,c o n v e n i e n te x t e n tf u n c t i o n t h e nw od i s c u s sf l a t b u i l d i n gd e s i g n m o d e la n dm o t i o nc o m p o s i t i o nf u n c t i o n k e y w o r d :s o f t w a r er e u s e ;c o m p o n e n t ; c o m p o n e n tm o d e l ;c o m p o n e n t c o m p o s i t i o n 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工 作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地 方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含 为获得或其他教育机构的学位或证书而使用过的材料。与我一同工作 的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表 示谢意。 学位论文作者签名:签字日期:年月 日 学位论文版权使用授权书 本学位论文作者完全了解江西师范大学研究生院有关保留、使用 学位论文的规定,有权保留并向国家有关部门或机构送交论文的复印 件和磁盘,允许论文被查阅和借阅。本人授权江西师范大学研究生院 可以将学位论文的全部或部分内容编入有关数据库进行检索,可以采 用影印、缩印或扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后适用本授权书) 学位论文作者签名: 签字日期:年 月 日 导师签名: 签字日期:年月 日 基丁x g l 的构什组装技术研究 引言 随着软件规模的不断扩大,软件丌发的质量和效率越来越成为软件人员关注 的焦点。基于构件的软件工程( c o m p o n e n tb 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 1 本课题的背景及愈义 1 1 1 课题的背景 随着软件规模的不断扩大,软件开发的质量和效率越来越成为软件人员关注 的焦点。基于构件的软件工程c b s e ( c o m p o n e n tb a s e ds o f t w a r ee n g i n e e r i n g ) 被认为是解决这一问题的有效方法。基于构件的软件工程是在软件复用和软件构 件技术的基础之上日益发展的一种软件系统开发方法。软件复用是在软件开发中 避免重复劳动的解决方案,其出发点是应用系统的开发不再采用一切“从零开始” 的模式,而是以己有的工作为基础,充分利用过去应用系统开发中积累的知识和 经验,其核心是软件构件技术。软件构件技术是以构件为研究对象,以构件的制 作、管理、组装以及与之相关的一系列活动为主要研究活动的技术,其核心技术 是构件的组装技术。目前,国内外对于软件构件技术的研究方兴未艾,一些研究 成果已经被应用于软件项目的开发过程中。但是,软件构件技术仍然还不成熟, 特别是在构件组装技术方面,理论研究同实际应用之间还有一段很长的距离。因 此,对于软件构件技术,特别是对于构件组装技术的研究在今后一段时间里仍然 是人们研究的热点。 软件复用技术分为组装技术和生成技术。组装技术是利用组装方式来复用软 件构件,对己有构件不做或较少做大量的修改,将构件插装到一起,形成新的系 统。生成技术是由程序生成器来达到复用,它是一种对模式的复用。基于构件的 软件开发是软件复用的组装技术的一个实践过程。 目前,对于构件组装技术的应用还多半停留在手工组装的阶段,自动化甚至 半自动化的构件组装的实现还有待时同。本文着眼于构件组装操作,组装框架以 及与之相关的技术理论的研究,并为对真正的构件组装进行实践上的探讨。 1 1 2 课题的意义 基于构件的软件开发是软件复用的重要手段。构件组装技术是基于构件的软 件开发的核心技术。构件必须经过组装才能形成应用系统,才能实现构件的价值。 因此对于构件组装技术的研究具有很大的意义。 1 、学术意义: ( 1 ) 推进软件复用技术的研究和发展。软件复用是解决软件危机的一种有效 途径。软件复用已经融入软件工程研究的主流,被视为是软件丌发真正走向工程 2 基t - x m l 的构什组装技术研究 化和产业化道路的希望。复用的观念已成为软件过程模型的思想之一。构件技术 作为软件复用的重要手段。对于它的研究必定推动软件复用的发展和应用。 ( 2 ) 推进c b s e 的研究。构件是软件系统中具有相对独立功能的有机构成成分, 是用于复用的软件实体。而在基于构件的软件开发中,“系统开发的重点从程序 设计变成构件组装”。所以,构件组装技术成为其中的关键。 ( 3 ) 构件技术的发展不但为软件的生产提供了若干技术思想和新的方法学,也 起到了推动软件科学技术发展的作用。随着软件技术的发展,构件组装不但是基 于构件的软件开发的核心问题,也成为了许多新兴软件技术体系的核心问题。这 些新技术的研究也必将从不同的层面推进构件组装技术的发展。 2 、实用意义: ( 1 ) 推动软件的工业化道路进程。传统产业的发展模式均是符合标准的零部件 ( 构件) 生产以及基于标准构件的产品生产( 组装) ,其中,构件是核心和基础,“复 用 是必需的手段。实践表明,这种模式是产业工程化、工业化的必由之路。机 械、建筑等传统行业的成功发展均是基于这种模式并充分证明了这种模式的可行 性和j 下确性。软件产业要发展并形成规模经济,标准构件的生产和构件的复用是 关键因素。 ( 2 ) 提高构件真正使用的价值。随着软件复用与基于构件的开发的普及,以及 基于商用构件开发的发展,构件数量将越来越大,构件的应用领域越来越广。而 且,伴随着,w e bs e r v i c e 、移动a g e n t 和网格计算等研究领域的兴起与推进,构 件的用户也越来越多。这些问题的解决方案都是建立在统一的良好的构件组装基 础之上的。 ( 3 ) 为商业用构件组装系统提供参考模型。本课题在研究构件组装过程中,将基 于现有的成熟技术,提出自己的自动化构件组装工具的框架,并在实际的开发中 使用该组装技术进行手工组装。 1 2 国内外研究现状和主要存在的问题 软件复用技术是c b s e 的支撑技术,而软件构件技术则是c b s e 的核心技术。从 1 9 6 8 年的n a t o 软件工程会议上,m c ll r o y 在论文大量生产的软件构件中提出 “软件组装生产线”的思想后,尤其是到九十年代中后期,面向对象技术的出现 和互联网时代的到来,为软件构件技术的研究和应用提供了良好的技术支持和实 践平台,逐步使构件技术走向成熟。可以说,是面向对象技术和互联网促进了软 件复用和软件构件技术,特别是构件组装技术的发展 1 2 1 构件及组装技术研究现状 近年来,对于构件组装技术的研究和应用正朝着多角度、全方位的方向发展。 3 硕十学位论文 构件组装技术己经在图形用户界面设计、第四代语言和编译器构造等成熟领域中 取得了一定程度的成功。目前,对于构件组装技术的研究主要集中在以下几个方 面: 构件规范化及其描述规范化; 构件组装操作及其描述规范化; 构件组装框架及其描述规范化; 构件组装描述语言: 可视化的构件组装平台: 构件的封装; 构件组装技术的应用。 1 2 2 构件及组装技术不足 随着构件库的不断增加,构件库中构件的迅速扩充,在构件库的管理、构件 信息的表示和检索上面临着越来越多的问题,构件库管理系统在使用中存在以下 几个主要问题: 1 、系统的交互性及动态性差: 现有的构件库管理系统缺乏友善的用户界面,用户在使用系统的过程中,只 能机械地使用鼠标和键盘完成操作,系统无法响应用户的语音命令,无法向用户 提供即时帮助。系统一般不进行使用跟踪和统计分析,用户也不便于向系统反馈 信息,从而导致系统不能根据跟踪记录、统计信息和反馈信息动态地进行调整以 提高系统的适应性和效能,不能更好地满足用户的需求。 2 、构件信息的表示形式缺乏统一可行的标准 现有的构件库管理系统在构件信息的表示形式上缺乏统一的标准。有的采用 自由文本格式,有的采用h t m l 文本格式。这些表示方法本身存在着诸多缺陷。譬 如采用自由文本格式来表示构件,虽然形式简单、表示方法灵活,但是缺乏标准, 既不便于管理又不利于交流。采用h t 既文本格式虽然页面表现力强,特别适合于 在网上发布,但是h t m l 规范本身不提供对格式化数据的支持,用h t m l 文本格式表 示的构件信息不是自描述的,这样的信息很难整合到数据库中,难以在各种应用 中实现交流、共享。 3 构件信息的表示与检索缺乏统一的模型 现有的构件库管理系统各自采用不同的数据模型、分类模式和术语,妨碍了 构件库之间软件资产的共享,无法实现库的共享。如果用户想要从多个构件库搜 索一个合适的构件,或者是想在多个构件库中比较选择一个最佳的构件,这时就 、需要用户对各个构件库进行逐个检索,然而由于各个库之问的交互与共享非常困 难,会令用户对多个库检索的过程变得相当困难。原因在于:用户不可能对各个 构件库的分类方法都非常熟悉,对复用者来说构件库的各种检索方法的理解成本 基丁潮l 的构1 i ,i :组装技术研究 非常高昂。 4 检索方法智能化程度低 现有的构件库管理系统所提供的分类检索方法比较单一,通常提供一种刻 面分类检索方法,或者提供以刻面检索方法为主的几种检索方法,提供的几种检 索方法只能进行简单的顺序组合,通过对不同的检索方法的顺序组合使用,来精 化检索的结果,多种检索方法不能自动地相互转换。由于非专业检索者不可能对 各种检索方法都了解和熟悉,用户往往只会使用自己熟悉和掌握的那一种检索方 法来检索构件,这样用户就不能充分利用多种检索方法并存的优越性来检索其所 需的构件。 1 3 本文研究的主要内容、目标和方法 本课题涉及的内容比较多,包括构件的生成,构件的表示,构件的模型,构 件的组装技术与方法等。重点是构件的组装方法与技术问题。 1 、对构件的表示用x m l 语言来描述,更能适合i n t e r n e t 的应用要求。 2 、进行构件开发,目标是最终的构件产品、接口和文档。构件产品能够币确 地实现需求,应该有良好的行为和灵活的接口。 3 、自动化构件组装是组装技术的最终目标,所以对采用x m l 语言的方式来描 述构件组装以达到自动化组装是一个重要的工作。 硕十学位论文 第二章构件及构件技术 这一章是本文的理论基础章节。软件构件技术是软件复用的核心技术,而构 件组装技术又是软件构件技术的核心技术。因此,我们要研究构件组装技术,首 先就必须了解什么是软件复用和相应的软件构件技术。 2 1 软件复用技术 2 1 1 软件复用的定义 近几年来,软件研究人员逐步认识到:要真正实现软件产业化得生产方式, 达到软件产业发展所需的软件生产率和质量,软件复用是一条现实可行的途经。 软件复用概念是在1 9 6 8 年n a t o 软件工程会议上中提出的。软件复用就是利用 某些早先开发的对建立新的软件系统有用的软件元素来生产新系统软件元素可 以包括需求规格说明、设计过程、设计规格说明、程序代码、测试用例等。对于 新的软件开发项目而言,它们或者是构成新软件系统的构件,或者是在软件开发 过程中发挥某种作用。 软件复用,可以区分为横向复用( 也称水平复用) 和纵向复用( 也称垂直复 用) 。横向复用是复用不同应用领域中的软件元素,例如数据结构、算法、人机 界面构件等。纵向复用在一类具有较多公共性的应用领域之间复用软件构件。由 于在两个截然不同的应用领域之间进行软件复用的潜力不大,所以纵向复用受到 广泛关注,成为软件复用的重点。 纵向复用活动的主要包括以下三个步骤:a 领域分析。根据应用领域的特征及 相似性预测软部件的可复用性。b 软部件的开发。一旦确认了软部件的复用价值, 即可进行软部件的开发并使其大众化,以便它们能够适应新的类似的应用领域。 c 软部件及其文档进入软部件库,成为可供后续项目使用的可复用资源。 自从软件复用思想产生以来,计算机科学家和软件工程师就致力于软件复用 技术的研究和实践。在3 0 多年的时间内,出现多种软件复用技术,如:库函数, 模板,面向对象、设计模式、组件、框架、构架。目前构件库的相关主要技术如 下: 构件:构件应是抽象的系统特征单元,具有封装性和信息隐蔽,其功能由它 的接口定义;构件可以是原子的,也可以是复合的,因此它可以是函数,过程或 对象类,也可以是更大规模的单元:一个子系统是包含其它构件的构件;构件是 6 基y - x m l 的构件组装技术研究 可配置和共享的,这是基于构件开发的基石;构件之间能相互提供服务。 构架:构架是与设计的同义理解,是系统原型或早期的实现:构架是高层次的 系统整体组织;构架是关于特定技术如何合作组成一个特定系统的解释。 框架:如果把软件的构建过程看成是传统的建筑过程;框架的作用相当于为 我们的房屋搭建的“架子”。框架从复用意义上说,是一个介于构件和构架之间 的一个概念。其中,软件构件技术是支持产品复用的核心。 2 1 2 软件复用的形式 软件复用的形式有很多,复用的级别也有大有小。在软件开发过程中,复用 的形式主要有以下几种: 1 、源代码级复用。包括模块、类、甚至某一段源代码的复用,这是最基本 的软件复用形式。 2 、模块级复用。即在软件系统中复用己经编译好的功能模块。例如:构件 复用。 3 、组装式复用。即将好几个可执行的应用程序集成在一起的复用,每一个 可执行应用程序既可以集成到这个系统中,又可以集成到另一个系统中。魏 软件复用的核心技术就是软件构件技术,目前对于软件复用技术的研究热点 和重点就是基于构件的软件复用技术的研究。 2 1 3 目前存在的问题及可能的解决途径 虽然现在对软件复用的概念和技术已获得许多共识,但现实世界对软件复用 仍然存在许多要解决的问题。 l 、形式化问题:由于对可复用对象的要求很高,要求可复用对象能被充分理 解,方便存取,且具有通用功能,因此,形式化问题就成为其实用化的关键。必 须大力解决形式化问题,才能从根本上解决可复用性问题。 2 、标准化问题:计算机软件目前缺乏像数学学科那样的完整体系,除了很少 或缺乏形式化描述以外,缺乏一系列相关的标准也是影响软件技术发展的一个重 要因素。软件复用技术也一样,也需要制定相关的技术标准。 3 、理解问题:理解问题是软件复用的关键问题。程序之所以不能被复用,主 要因为:( 1 ) 程序难懂;( 2 ) 程序的理解依赖上下文;( 3 ) 有关程序的信息难以 寻找。因此,要解决软件复用问题,必须首先解决程序的理解问题。要解决理解 问题,重要的途径是完善文档。形式化的规范说明对于软件复用至关重要。现正 研究的形式化规范说明语言是解决这一问题的得力工具。 4 、接口问题:软样复用的重要障碍之一就是接口问题。接口问题涉及软件复用 实现的效率问题,因为复用库中的构件一般都具有通用性,若该构件的参量是一 个空i 日j 很大的数据结构,则复用时要拷贝大量数据,系统开销很大。解决办法可 7 硕士学位论文 用一种交换操作原语来代替拷贝操作的方法。另一种办法是现在兴起的接口统一 语言的研究。该语言简化了软件系统的设计,方便了以不同的方式实现可复用构 件的互联和组装。 2 2 构件技术 2 2 1 构件定义 构件来源于英文的“c o m p o n e n t ”,在有些文献中也称为组件,应用系统中可 以明确辨识的构成成分。而可复用构件是指具有相对独立的功能和可复用价值的 构件。开发者可以通过组装已有的构件来开发新的应用系统,从而达到软件复用 的目的。根据各自不同的目的从不同的方面对构件进行了描述。在这罩我们可以 从广义和狭义两个方面进行定义。 广义定义:构件是计算机软件构件的简称,是在软件生命周期各阶段可以被 复用的软件实体,它可以是设计、代码或软件开发过程的其它产品。如可组装的 软件、程序模板、程序的源代码或目标模块和软件需求说明、规格说明、程序说 明、数据说明、测试说明和测试案例等软件成分,“复用指在同一系统的其它 地方或另一个系统中使用已有的软件构件。 狭义定义:软件构件是具有公开接口和确定意义的可被组装的软件制品。它 可以不加修改或者基本不加修改地作为一个部件和其它构件一起组装成更大的 软件或软件成分。 事实上,从一般性的角度而言,构件应具有以下几个特点: 1 、复用一复用是构件最基本的性质,是构件存在的意义,也是构件技术的 目的和发展驱动力。复用包括可复用性和易复用性两层含义。与传统的复用技术 相比,构件技术更关注构件的易复用性问题。 2 、封装一构件是一个自包含的实体,封装了设计和实现细节,仅通过接口与 外界交互。对于构件使用者,构件封装的目标是提高构件的易复用性。这对构件 封装提出了新的要求,构件不仅应对使用者隐藏实现细节,而且应隐藏构件复杂 的组装过程。 3 、适应一构件在组装过程中可按照不同的应用需求进行适当的调整。构件复 用的目标就是构件能够在尽可能多的组装环境中进行组装。适应是构件组装必不 可少的步骤。 4 、组装一构件通过组装可以形成更大的整体( 应用系统) 。在组装过程中,构 件并不是处于完全消极状态,而是主动参与和完成组装过程。 8 基t - x m l 的构件组装技术研究 2 2 2 构件接口 基于构件的开发方法是按照满足预先定义的功能要求将构件集成到应用系 统的过程。每个构件提供服务并向其他构件请求服务。因此,构件接口定义成为 关注的焦点。构件接口是构件间信息通信的机制,是对外展示的窗口。 构件与周围基础设施具有很大的相关性,从构件接口的交互作用角度可以对 构件分成几个部分: l 、内部( 私有部分) 。该部分描述了构件的内部信息和结构,它提供了构件通 过接口所体现出的真实功能。这部分是私有的,不对其他构件和它所运行的平台 显示。 2 、应用程序接口,这些接口定义了与其他构件的交互作用,它们描述了与其 他构件交互的导入导出关系。 3 、平台接口。这些接口定义了构件与它所运行的平台之间的交互作用,包括 操作系统调用、基础的硬件技术及通信系统。 除了构件的交互作用外,理解构件的特性对于有效管理和使用构件是相当 重要的,它是用于开发、管理和使用构件的基础。 2 2 3 构件规约 构件的规约对构件的使用者和开发者都是有用的。对于使用者而言,规约提 供了对构件接口的定义。因为只有接口对用户是可以访问的,规约应该精确完备。 对于开发者来说,规约提供了对其内部结构的抽象定义。 应用在软件开发方面的构件规约大都限制在语法规约方面。从构件规约中所 能获得的信息也只是构件能够提供什么样的操作及参数的数目和类型。这样的规 约主要是用于客户代码的检验以及作为独立开发的构件或应用系统之间进行交 互的基础。3 c 模型是公认的可复用的构件模型,其命名主要来自该模型描述构件 所采用的3 个c 特征,即概念( c o n c e p t ) 、内容( c o n t e n t ) 、语境( c o n t e x t ) 。 1 、概念。概念用于描述构件的功能。构件的概念依靠它的接口说明及所执行 操作的语义描述表现出来,使用者可以从概念描述中理解它的功能。 2 、内容。内容描述构件怎样完成概念所描述的功能,如算法、结构等,它是 概念的细化描述。 3 、语境。即上下文( c o n t e x t ) ,就仿佛一个语言现象总与它的上下文有关一 样,构件在系统中的作用也与它的“上下文,有关。构件的语境实际上就是描述 构件与其他构件的关系。这是构件中最复杂的特征描述。它主要从概念语境、操 作语境和行为语境几个方面来考虑。概念语境指的是在给定系统中,构件在接口 和操作语义上的相互关系。操作语境是说明操作对象的特征。行为语境是说明一 个构件在执行时与其他构件之间的相互依赖关系,如构件的执行顺序等。 9 硕十学位论文 2 3 构件组装方法与技术 构件组装技术是基于构件的软件开发的核心技术。构件必须经过组装才能形 成应用系统,才能实现构件的价值。从目i ; 的研究看,构件组装是构件技术研究 的重点与难点。 2 3 1 现有构件组装技术 构件组装技术经过多年的研究取得了一定的成果,研究人员提出了许多技术 用以解决构件组装中遇到的各种问题。 1 、拷贝粘贴。拷贝粘贴是将现有构件中的可重用代码复制到新的构件中, 并进行适应性修改以满足需求,这样开发者必须可以完全访问访问构件的源代 码,对构件的实现有相当程度的了解。 2 、契约。契约声明了客户应该如何部署构件,及构件应该提供的服务和所需 求的服务。契约提供了大粒度的抽象,有助于很好地理解和重用构件,并且支持 优化机制,用简单的构件行为表述复杂的构件行为。 3 、模块。模块通过接口隐藏了模块的内部实现,所以在系统中模块可以互换 而不影响其他模块,支持系统配置。模块的一个连接点可以是一次过程调用,也 可以是全局变量的一次访问。连接器可以根据连接点的定义,保证绑定所有的连 接点。但是,模块不支持插接功能和胶合代码。 4 、脚本语言。脚本语言与标准的编程语言类似,是解释型语言。脚本语言只 能说明构件如何交互和数据结构如何在构件之间交换。在构件组装中,脚本只表 示构件连接的抽象。不同的开发商使用的脚本语言不同,因此其交互也存在一定 的困难。 5 、构件组装语言。组装语言应用在更高层次的抽象级别上,提供了构件组装 的框架。从概念上说,组装语言应该介于纯面向对象语言与脚本之间,必须能灵 活地处理对象和构件,更好地解决构件组装的问题。 6 、包装器。它是一种传统的方法用于扩展现有的类或转换类的接口,其主要 的包装形式有子类、继承、组合等。包装技术主要解决组装中出现的不匹配问题, 一个构件可以以一定的透明方式被包装呈现为另一个构件,代理对其他构件的调 用。 7 、中间形式。中间形式是适应性地修改系统中所有的构件以符合某个标准的 形式,这个标准形式也称为中间形式,它通常基于其他代码。它通常严格限制系 统中使用的构件形式,尽可能地避免组装不匹配问题的出现。 2 3 2 构件组装方法分类 按照不同的划分标准,构件组装方式有不同的分类。 l o 基丁x m l 的构件组装技术研究 按照各个构件问祸合程度的不同,软件构件组装方式可以分为以下三种方式: l 、构件之间既没有数掘上的耦合,也没有行为上的藕合 在这种情况下,构件之i 日j 的组装只是功能上的组合。这些构件组合到一起, 仅仅形成了一个松散的系统。该系统的功能仅是各个组成构件功能的简单叠加。 2 、构件之间存在数据上的耦合,但没有行为上的耦合 这种情况下,尽管各构件之间在行为上不存在联系,相互之间不发送消息, 但他们处理的数据是共同的,往往一个构件加工的数据由另一个构件继续加工。 因此,在实际组装的时候,要注意构件之间的先后顺序。 3 、构件之间存在行为上的耦合 这是最复杂的,也是最常见的情况,通常所说的构件组装主要指的就是这种 形式的组装。通过这种方式组装起来的系统,其功能要大于各构件功能的相加。 这种方式的组装,要求各个构件具有共同的接口规范,通过消息相互作用。 按照构件在组装之前是否进行修改、封装可以将构件组装分为黑盒组装方 式、白盒组装和灰盒组装方式。 l 、黑盒组装 黑盒组装方式指的是构件的内部实现对于构件组装者是透明的,构件组装者 只需要了解每一个构件的对外接口。黑盒组装方式的优点在于:组装者只需要将 注意力集中于整个程序的体系结构及各个构件的选择上,无须考虑构件的内部实 现,从而大大提高了软件系统的生产效率。黑盒组装方式的缺点在于:当构件不 完全符合组装的要求时,无法直接对构件进行修改。黑盒组装方式一般对应着二 进制代码构件的组装。 2 、白盒组装 白盒组装指的是构件的内部原理和实现方法对构件组装者是公开的,构件组 装者能够对构件的内部实现进行修改,以使其达到组装的要求。白盒组装一般适 合构件之间耦合度高的情况。构件组装者使用某种语言将这些构件连接在一起, 必要的时候进行部分修改,从而形成新的应用程序。这种组装方式的优点在于: 不要求构件特别吻合构件规范,组装起来也比较灵活。缺点在于:对于构件组装 者的水平要求比较高,并且由于修改,可能会引入一些错误。 3 、灰盒组装 灰盒方法介于黑盒与白盒之间,是当前技术发展的合适选择。灰盒组装方法 通过调整构件的组装机制而不是通过修改构件来满足应用系统组装的需求,这样 既实现了构件组装的灵活性,又不至于使组装过程过于复杂。因此近年来对构件 组装技术的研究主要集中在狄盒方法方面。当前,灰盒组装方法的研究主要集中 在基于框架的组装、基于体系结构的组装、基于连接器的组装和基于胶合代码的 组装等。在实践中,常常以某种构件模型为基础,与各种组装方法充分融合。本 硕十学位论文 文的构件组装就是基于x m l 的构件模型,并结合了体系结构和连接器的方法而进 行的。 基t - x m l 的构什组装技术研究 第三章基于x m l 技术构件模型 3 1x m l 技术简介 3 1 1x m l 定义 x m l 是w 3 c ( w o r l dw i d ew e bc o n s o r ti u m ) 推荐的一种可置标语言,它的设计 动机是在网络上规范化传输文档,它在本质上与程序设计语言一样,是具有严格 语法定义的形式语言,但较一般的形式语言简捷和通用。与h t m l 一样,x m l 也源 自s g m l ( s t a n d a r dg e n e r a l i z em a r k u pl a n g u a g e ) ,它保留了s g m l8 0 9 6 的功能, 使复杂程度降低了,尽管如此,x m l 却有着h t m l 语言所欠缺的巨大伸缩性与灵活 性。x m l 不再像h t m l 一样有着一成不变的格式。x m l 实际上是一种定义语言,即使 用者可以定义无穷无尽的标记来描述文件中的任何数据元素,从而突破了h t m l 固定标记集合的约束,使文件的内容更丰富更复杂并组成一个完整的信息体系 x m l 语言可以让信息提供者根据需要,自行定义标记及属性名,也可以包含 描述法,从而可以设计任意复杂程度x m l 文件的结构。x m l 主要有三个要素:文件 类型描述d t d ( d o c u m e n tt y p ed e f i n i t i o n ) 或s c h e m a ( 模式) 、x s l ( e x t e n s i b l e s t y l e s h e e tl a n g u a g e 可扩展样式语言) 和x l l ( e x t e n s i b l el i n kl a n g u a g e 可扩展 链接语言) 其中,d t d 或s c h e m a 规定x m l 文件的逻辑结构,定义文件中的元素,属性及元素 间的相互关系,它可以帮助x m l 的分析程序校验x m l 文件标记的合法性:x s l 是用于 规定x m l 文档样式的语言,它能在客户端使w e b 浏览器改变文档的表示法,从而不 需要再与服务器进行交互通信:x l l 将进一步扩展目前w e b 上己有的简单链接。 x m l 主要有四大特点:良好的数据存储格式,可扩展性,高度结构化、便于网 络传输。决定了其卓越的性能表现。由于x m l 能针对特定的应用定义自己的标记 语言,这一特征使得x m l 可以在电子商务、政府文档、报表、司法、出版、联合、 c a d c a m 、保险机构、厂商提供各具特色的独立解决方案。 综上所述,x m l 主要的优点有:良好的可扩展性:严格的语法要求:内容与形 式分离;不同系统之间方便的信息传输( 通用数据交换格式) ;较好的保质性。 3 1 2x m l 与s g m l 、h t m l 的关系 s g m l 、h t m l 是x m l 的先驱。s g m l 是指“通用标识语言标准( s t a n d a r d 硕十学位论文 g e n e r a l i z e dm a r k u pl a n g u a g e ) ,它是国际上定义电子文件结构和内容描述的 标准,是一种非常复杂的文档的结构,主要用于大量高度结构化数据和其他各种 工业领域,利于分类和索引。同x m l 相比,定义的功能很强大,缺点是它不适用 于w e b 数据描述,而且s g m l 软件价格非常昂贵。h t m l 是指“h y p e rt e x tm a r k u p l a n g u a g e ”( 超文本标识语言) ,它的优点是比较适合w e b 页面的开发。但它有一 个缺点是标记相对少,只有固定的标记集。缺少的柔性和适应性。不能支持特定 领域的标记语。x m l 结合了s g m l 和h t m l 的优点并消除其缺点。x m l 仍然被认为是一 种s g m l 语言。l l s g m l 要简单,但能实现s g m l 的大部分的功能。 3 1 3x m l 的优点 x m l 提供了一种功能强大,灵活高效地表达数据内容的方法。 x m l 中的数据内容与具体应用无关,这使得用它表示的数据具有很好的使用 效率和可重用性,这一点在通过网络交换数据时表现得更为明显。 x m l 通过在h t m l 页面中嵌入数据,大大地扩展了h t m l 在网上的应用范围。 最重要的是x m l 可以成为一种标准来展示远程接口,从而其他软件可以使用 这些远程接口来访问构件提供的功能。 3 2 构件模型 构件模型是构件技术的核心内容,是对构件本质特征的抽象描述,是构件定 义和构件性质的具体化。构件模型定义了构件的本质属性,同时规定了构件接口 的结构以及构件与应用框架、构件与构件之间的交互机制。 3 2 1 构件模型概述 软件构件模型是关于开发可重用软件构件和构件之间相互通信的一组标准的 描述。通过重用已有的软构件,使用构件对象模型的软件开发者可以像搭积木一 样快速构造应用程序。构件模型研究构件的本质特征及构件之间的逻辑关系,是 基于构件的软件开发基础。现有的一些构件模型主要关注构件的交互接口、交互 时序关系、构件之间的连接信息以及封装了构件的内部实现细节,但大都缺乏统 一的描述和兼容性支持。因而使用一种统一描述的模型是解决构件不兼容性的一 个关键。 构件模型通常还提供创建和实现构件的指导原则。一个被构件生产者和使用 者所共同接受的构件模型实际上起到了构件标准化的作用。c o r b a ,c o m d c o m 和e j b 等构件模型构成了实现级构件模型的工业标准。现有的构件模型一般认为 构件由构件接口和构件内容两部分组成。构件接口就是为成功复用该软件实体而 需要提供给外界的所有信息:构件内容是用于直接复用的软件实体,它可以具有 1 4 基丁x m l 的构什组装技术研究 源代码、二进制码、文档、分析设计模型和脚本等不同的物理形态,并遵从一定 的格式标准 目前,国际上已经形成了许多构件模型,这些模型的目标和作用各不相同。 主要有以下几种模型。 1 、参考模型,例如3 c ( c o n c e p t ,c o n t e n ta n dc o n t e x t ) 模型,是学术界普 遍认同的一个具有指导性作用的构件模型。 2 、描述模型,例如:r e s o l v e 模型,r e b o o t 模型等; 3 、实现模型,例如:c o r b a 模型,d c o m 模型,e j b 模型。这些实现模型将构件 的接口与实现进行有效的分离,提供了构件交互的能力,从而增加了复用的机会, 并适应了目前网络环境下大型软件系统的需要。 3 2 2 三种工业构件模型 现有的工业构件主要有三种代表性的构件技术流派,它们分别是对象构件模 型( c o m p o n e n to b j e c tm o d e l ,c o m ) 、e j b ( e n t e r p r i s ej a v ab e a n ) 和公共对象请 求代理体系结构( t h ec o m m o no b j e c tb r o k e ra r c h i t e c t u r e ,c o r b a ) 。它们是由 不同的机构提出的构件技术实现模型和标准,各有优缺点。 1 、c o r b a c o b r a 构件模型的底层结构为o r b ( o b j e c tr e q u e s tb r o k e r ) 一个c o b r a 构件采 用i d l ( i n t e r f a c ed e f i n el a n g u a g e ) 进行描述。c o r b a 提供了i d l 至i c 、c + + 、j a v a 、 c o b o l 等语言的映射机$ t - - i d l 编译器。i d l 编译器可以生成s e r v e r 方的s k e l t o n 和c 1 l e n t 方的s t u b 代码,通过分别与客户端和服务端程序的联编,即可得到相应 的s e r v e r 和c ll e n t 程序。 c o r b a 同时提供了一系列的公共服务规范( c o m m o no b j e c ts e r v i c e s s p e c i f i c a t i o n s ) ,其中包括名字服务、永久对象服务、生命周期服务、事务处 理服务、对象事件服务和安全服务等,它们相当于一类用于企业级计算的公共构 件。此外,c o r b a 还针对电信、石油等典型的应用行业提供了一系列的公共设施。 c o r b a 是一种语言中性的软件构件模型,可以跨越不同的网络、不同的机器 和不同的操作系统,实现分稚对象之间的互操作。 2 、d c o m d c o m ( d is t r i b u t e dc o m p o n e n to b j e c tm o d e l ) 是m i c r o s o f t 与其他业界厂商 合作提出的一种分布构件对象模型,其发展经历了一个相当曲折的过程。 d c o m 起源于动念数据交换d d e ( d y n a m i cd a t ae x c h a n g e ) 技术,通过剪切粘 贴( c u t p a s t e ) 实现两个应用程序之间共享数据的动态交换。随后,m i c r o s o f t 弓i 入了构件对象模型c o m ,形成了c o m 对象之间实现互操作的二进制标准。c o m 规定 了对象模型和编程要求,使c o m 对象可以与其他对象相互操作。这些对象可以用 不同的语言实现,其结构也可以不同。基于c o m ,微软进一步将o l e 技术发

温馨提示

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

评论

0/150

提交评论