(计算机软件与理论专业论文)基于dcom的构件组装平台.pdf_第1页
(计算机软件与理论专业论文)基于dcom的构件组装平台.pdf_第2页
(计算机软件与理论专业论文)基于dcom的构件组装平台.pdf_第3页
(计算机软件与理论专业论文)基于dcom的构件组装平台.pdf_第4页
(计算机软件与理论专业论文)基于dcom的构件组装平台.pdf_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

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

文档简介

【摘要】 基于构件的软件开发是软件产业的一次革命,在构件化的开发中,应用程序 由一定数量的可复用构件组装而成。基于构件的软件开发将整个软件开发的过程 划分为构件开发和构件组装两个部分。其中,构件组装在单独的构件和完整的应 用程序之间建立了一座桥梁,是基于构件的软件开发的重点。因此,人们希望能 有一种支持构件组装的软件开发环境,即构件组装平台。目前,已经出现了一些 构件组装平台,但这些组装平台都或多或少的有着一定的局限性,使真正的构件 组装很难得到广泛的应用。 在国家8 6 3 项目“基于i n t e m e t 的以构件库为核心的软件平台”中,我们分 析了目前已有的构件组装平台,使用现有的d c o m 规范作为我们支持的构件模 型,取得了如下的研究成果。 提出了一种新的、适用于可视化编辑和组装的系统构架描述方法,支持 文本和图形两种描述方式,具有易于操作和复用的特点。 提出了组装平台与构件库相结合的思想,实现了在组装平台上对构件库 的操作。 提出了构件控制器的概念,并给出了通过构件控制器来实现构件的组合 和改进的方法。 提出了统一的连接器消息转发机制,实现了对复台构件的组装方法和对 可执行程序的生成。 实现了一个基于d c o m 的构件组装平台原型d c o m c c 。 【关键字】 构件,构件组装平台,d c o m ,构架,构件库,构件组装 a b s t r a c t 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 s e ) i sr e v o l u t i o n i z i n g t h es o f t w a r e i n d u s t r y a p p l i c a t i o n s a r ec o m p o s e do u to fr e u s a b l e ,p r e - e x i s t i n gc o m p o n e n t si n c b s e a d o p t i o no fc 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 tl e a d st o a ni m p o r t a n t d i s t i n c t i o ni nr o l e sb e t w e e nt h o s et h a t d e v e l o p a n dm a k ea v a i l a b l ei n d i v i d u a l c o m p o n e n t sa n dt h o s et h a tc o m p o s ea p p l i c a t i o n so u to f a v a i l a b l ec o m p o n e n t s a n d c o m p o n e n tc o m p o s i t i o ni st h eb r i d g eb e t w e e n t h ec o m p o n e n t sa n dt h ea p p l i c a t i o n s , w h i c hi st h ek e yt e c h n i q u ei nc b s e a sar e s u l t ,an e e da r i s e sf o r s p e c i a l i z e d e n v i r o n m e n t st h a t e x p l i c i t l ys u p p o r t t h e c o m p o s i t i o n o fa l l a p p l i c a t i o n o u to f c o m p o n e n t s s u c hc o m p o s i t i o ne n v i r o n m e n t s w h i c h a r ec a l l e da s c o m p o n e n t c o m p o s i t i o np l a t f o r m s ,a r es t a r t i n gt oe m e r g e ,b u te a c hc o m p o s i t i o np l a t f o r mh a si t s l i m i t a t i o n i nn a t i o n a l8 6 3p r o j e c t “c o m p o n e n tr e p o s i t o r yc e n t e m d ,i n t e r a c tb a s e ds o r w a r e d e v e l o p m e n tp l a t f o r m ,w ei m p l e m e n t e dd c o m c c ,w h i c hi s a p r o t o t y p e o f c o m p o n e n tc o m p o s i t i o np l a t f o r mb a s e d 0 1 1d c o mm o d e l o u r a p p r o a c hi n v o l v e s : e x p l i c i t l ya n df o r m a l l yr e p r e s e n tt h e s o f t w a r ea r c h i t e c t u r e b y ad e s c r i p t i o n l a n g u a g e b o t ht e x t u a la n dg r a p h i c a ln o t a t i o n sa r es u p p o r t e di nt h i sl a n g u a g e a n di ti se a s yt om a n i p u l a t ea n dr e u s e p r e s e n tt h ei n t e g r a t i o no fc o m p o s i t i o np l a t f o r ma n dc o m p o n e n tr e p o s i t o r ya n d i m p l e m e n t a l lt h ec o m m u n i c a t i o nb e t w e e nt h e c o m p o s i t i o np l a t f o r m a n d c o m p o n e n tr e p o s i t o r y , u s ec o m p o n e n tc o n t r o l l e rt o i m p l e m e n tt h e c o m b i n a t i o na n da d a p t a t i o no f c o m p o n e n t s p r e s e n tt h em e c h a n i s mo ft h em e s s a g et r a n s m i s s i o nb yc o b n e c t o ra n di m p l e m e n t t h ec o m p o s i t i o no f c o m p o u n d c o m p o n e n t s a n dt h eg e n e r a t i o no f t h ea p p l i c a t i o n s i m p l e m e n t d c o m c c a p r o t o t y p eo fc o m p o n e n tc o m p o s i t i o np l a t f o r mb a s e do n d c o m 【k e y w o r d s 】 c o m p o n e n t , c o m p o n e n tc o m p o s i t i o np l a t f o r m , c o m p o n e n tr e p o s i t o r y , c o m p o n e n tc o m p o s i t i o n 6 引言 基于构件的软件开发方法【2 2 ,3 2 ,3 7 】的特点是采用构件来实现大规模的软件 复用 2 9 ,3 0 ,和传统的软件开发方法相比,基于构件的软件开发大大提高了软件 开发的效率和质量1 2 5 ,2 6 ,3 1 】,并已经得到了人们的广泛关注和认同。在基于构 件的软件开发中,包括构件开发和构件组装两个过程 3 4 】。其中,构件开发过程 与传统的软件开发类似,采用的方法也是传统的软件开发方法;而构件的组装则 与传统的软件开发有着很大的差异,是有待解决的新问题。因此,我们对于构件 化软件开发的研究,主要集中在构件组装部分。 为了给构件组装提供一个方便实用的开发环境,人们对构件组装平台进行了 大量研究,希望能够通过构件组装平台,来实现构件组装的自动化 3 5 ,3 6 ,更好 地发挥构件化开发的优势。目前,已经出现了多种构件组装平台,但这些组装平 台却都有着一些缺陷,导致构件组装还很难被广泛的使用在实际的软件开发中。 总结起来,主要的缺陷包括下面几条: 1 未能支持最流行的构件模型。目前,绝大多数的构件都是基于少数几种最流 行的构件模型的。如果没有数量众多的构件为基础,则基于该构件模型的组 装平台就不具有很大的实际意义。而且,目前几种最流行的构件模型 ( c o m d c o m 2 ,3 】、c o r a a 5 、f a b 4 】) 都提供了一些利于组装的特性, 使它们的构件组装相对比较方便。 2 对构件的检索、获取、分析等操作的支持不够。在当前已有的构件组装平台 中,很少有提供这些构件操作的服务。构件组装平台的设计者认为这是用户 的事,而并没有重视这方面的工作。而实际上,要用户去独立完成构件的这 些操作是困难的和低效的。组装平台应该能够提供这方面的服务,以提高应 用系统的开发效率。 3 ,有些组装平台要求用户使用某一种特定的编程语言。我们认为,这样的做法 在一定程度上违背了构件化开发的准则。构件组装平台不应该局限于某一种 编程语言,最好能够使用户避免编写代码,如何一定要编写代码的话,也应 该支持多种不同的编程语言。 4 有些组装平台能够组装出的系统有较大的局限性,如只支持对某二个或几个 领域的系统进行组装。 在国家8 6 3 项目“基于i n t e m e t 的以构件库为核心的软件平台”中,我们研 究小组使用现有的d c o m 规范作为我们支持的构件模型,以克服目前构件组装 平台的缺陷为目标,对构件组装平台进行了研究和开发工作,主要的研究内容包 括: 提出了一种新的、适用于可视化编辑和组装的系统构架描述方法,支持 文本和图形两种描述方式,具有易于操作和复用的特点。 提出了组装平台与构件库相结舍的思想,实现了在组装平台上对构件库 的操作。 提出了构件控制器的概念,并给出了通过构件控制器来实现构件的组合 和改进的方法。 提出了统一的连接器消息转发机制,实现了对复合构件的组装方法和对 可执行程序的生成。 实现了一个基于d c o m 的构件组装平台原型d c o m c c 。 本文的组织结构如下:第一章主要介绍构件组装的基本概念和现有的构件组 装平台。在第二章中,对我们的组装平台d c o m c c 的总体结构进行比较简单的 介绍。从第三章到第六章,将从各个方面详细介绍d c o m c c 的实现机制。第三 章和第四章介绍d c o m c c 中的构架描述机制,其中第三章介绍对系统拓扑结构 的描述和配置,第四章介绍对系统中的构件行为的描述和配置。第五章介绍组装 平台与构件库的接口。第六章介绍对构件的组合、改进和对系统的生成。第七章 是全文的总结。 第一章现有的构件组装平台 在本章中,我们将介绍一下当前对构件组装平台的主要研究成果。首先,我 们将介绍基于构件的软件开发的基本概念和特点。然后,我们将对现有的几种比 较典型的构件组装平台进行简单介绍,并以此总结出构件组装平台的主要任务。 最后,我们对这些构件组装平台进行评价,根据评价的结果,得出对现有的构件 组装平台的改进目标和方向。 1 1 基于构件的软件开发 1 1 1 基本概念 这一节定义了本文中所使用到的,基于构件的软件开发中的一些基本概念, 它们将贯穿本文的始末。 1 构件( c o m p o n e n t ) 关于构件的定义有很多,归纳而言,构件是一个包含如下特性的软件单元 6 ,2 7 ,2 8 。 a 1 是可以被复用的功自 单元 b ) 可以不加改动地进行组装 c ) 符合某一种构件模型 2 软件构架( s o f t w a r ea r c h i t e c t u r e l 一般来说,软件构架是对软件系统在构件和连接器级别上的结构描述和定义 【1 7 ,2 4 ,3 9 ,4 0 。在本文中,软件系统的构架描述包括了系统拓扑结构描述( s y s t e m s t r u c t u r e ) 和构件行为描述( c o m p o n e n ta c t i v i t y ) 。 3 系统拓扑结构( s y s t e ms t r u c t u r e ) 系统拓扑结构是系统构架的一部分,主要描述了系统中包含哪些构件、连接 器等实体以及它们之间的相互关系。 4 构件行为( c o m p o n e n ta c t i v i t y ) 构件行为也是系统构架的一部分,主要描述系统中构件的端口定义以及构件 之间的交互方式。 5 。构件模型_ c o m p o n e n tm o d e l ) 一个构件模型包含两个方面 6 ,3 3 1 ,一是构件的标准,即该模型的构件必须 符合的规范;二是构件组装的标准,即如何将一组构件组装为一个应用系统,构 件与构件之间如何迸行交互。 目前流行的构件模型包括c o m d c o m 2 ,3 】、e j b 【4 】和c o r b a 5 。 6 连接器( c o n n e c t o r l 连接器是一个软件单元,它在构件之间架设了一座桥梁,负责在构件之间传 9 送数据和消息,实现构件之间的通信 2 0 ,3 3 。 7 构件组装平台( c o m p o n e n tc o m p o s i t i o np l a t f o r m ) 构件组装平台为用户提供一个基于构件的开发环境,使用户能够通过构件组 装的方式建立应用系统 3 4 1 。 8 接口i i n t e r f a c e ) 接口描述了构件的对外行为,其中包括了构件对外提供的服务和对外所发出 的请求【6 】。在d c o m 构件模型中,接口中可以包含属性、方法和事件【2 】。接口 是在构件的开发过程中,由构件的开发者定义的,其中的内容体现了构件的实现。 9 端口i p o m 端口是构件处于某一个特定的系统构架中时,与连接器相连接的那一部分 8 】。本文所指的端口,是由构件的组装者定义和操纵的,它的内容并不影响构 件的实现,仅仅表示构件与外界的交互方式。 1 1 2 基于构件的软件开发简介 在基于构件的软件开发方法中,软件的开发并不完全由一个组织来完成 ( 3 1 ,3 2 。软件的开发分为构件生产和构件组装两个部分【3 4 】:构件生产商开发可 复用的构件;应用程序的开发者通过对构件( 包括第三方开发的构件) 进行配置 和组装来完成应用系统的开发。在对构件进行组装时,可以有两种方式。一种是 黑盒复用,构件组装者无需对构件进行改进,直接将构件加入就可以了;另一种 是白盒复用,构件组装者需要对构件进行一定的改进,才能将构件应用在软件系 统中。 1 构件的生产 构件的生产和传统的软件开发相似,但生成的不是应用程序而是可复用的构 件【3 4 。 生成出的构件应该符合一种通用的构件模型,易于组装、配置和升级 3 3 】。 2 构件的组装 构件的组装与传统的软件开发有很大的不同。构件组装不需要用户再从头开 始进行开发,而只要将已有的构件进行一些简单的配置和改进,由组装平台根据 构件的配置,自动生成应用系统。 一般来说,构件组装分为以下几个步骤 3 4 1 : 1 定义系统构架。主要包括定义系统的总体结构,各个功能模块以及它们之 间的关系。 2 选取构件。选择合适的构件来实现构架中定义的功能模块。如果能够通过 构件库来进行构件的检索和获取的话,将会给用户带来很大的方便。 3 配置构件。配置被选中的构件的端口和参数信息。 1 0 4 ,改进和补充构件。如果还有无法找到实现构件的功能模块,需要用户自行 开发新的构件,或对已有构件进行改进。 5 生成应用系统。组装平台在用户对系统配置完毕后,自动生成应用系统。 1 2 几种典型的构件组装平台 1 2 1 c 2 a r c h s t u d i o c 2 1 1 1 是一种构架风格 2 3 ,3 s ,c 2 a r c h s m d i o 7 ,8 ,1 6 】是支持c 2 构架风格的构 件组装平台。在c 2 a r c h s t u d i o 中,包含了一组工具( ! t f l a r g o c 2 和a r c h s h e l l 等) , 用以显示和编辑系统构架,建立构架和实现的对应关系。尽管c 2 构架风格是语 言无关的,但在c 2 a r c h s t u d i o 中,它仅仅支持j a 、a 语言。 c 2 a r c h s t u d i o 采用c 2 构架风格中所定义的构件模型。在c 2 风格中,应用 程序是层次型的,构件只能通过和连接器之间的消息传送来进行交互。消息有两 种类型:请求消息( 从下方构件向上方发送) 和应答消息( 由上方构件向下发送) 。 在每个c 2 构件中都包含两个端口,顶部端口和底部端口,构件之间的交互通过 端口来实现,而构件本身则对外部一无所知。在c 2 构架中,可以包含多种类型 的连接器,分别支持不同的通信机制( 同步和异步,分布式和本地的) 。 在组装时,组装平台提供了一个图形化的界面( 如图1 1 所示) ,用户可以通 过图形化的操作编辑构件和构架。组装平台将构架中的构件与实际构件一一对 应。在组装时,组装平台将每个构件都组装为一个线程,各个线程可以独立运行。 用户可以在系统运行时编辑构架,并动态改变系统的运行结果。 c 2 a r c h s t u d i o 不支持构件的检索和获取。它的构件也没有自描述信息,用户 必须知道构件的名字才能得到所需要的构件。由于c 2 构架风格的限制,该组装 平台能够组装的系统主要是用户界面程序或层次型的系统。 1 2 2 u n i c o n u n i c o n 组装平台基于构架描述语言u n i c o na d l 1 2 ,1 3 1 。u n i c o na d l 的重 点在于对连接器的形式化描述,它采用一种统一的方式来描述各种类型的连接 器。它是模块通信语言( m i l ) f 1 8 的扩充,并支持对异构构件的组装。 u n i c o n 中所使用的构件模型在u n i c o na d l 语言中被定义。u n i c o n 构件模 型和c 2 构件模型类似,所不同的是,在u n i c o n 中,构件和连接器被统一看待, 构件的接口称为r o l e ,连接器也有接口,称为p l a y e r 。在进行组装时,构件的r o l e 和连接器的p l a y e r 可以相互连接。在应用系统的配置完成后,u n i c o n 将生成一 些组装配置代码,由这些代码负责整个系统的生成和运行。在构件模型中,还定 义了维护具体的构件和配置代码之间的映射关系的机制。连接器的实现则是由一 组实现定义好的模块来完成的,组装平台根据构架描述为连接器自动选择合适的 模块。 图1 1c 2 a r c h s t u d i o 用户界面 在系统组装的过程中,u n i c o n 只关注构架的编辑和程序的生成,而对构件 的检索、获取和改进没有任何支持。用户可以选择使用文本方式或图形方式进行 构架编辑,组装平台将自动维护这两种方式的一致性。组装平台不支持系统构架 在运行时的动态改变。 1 2 3 k o a l a k o a l a 组装平台【9 ,l o 】主要应用于嵌入式系统的开发,它采用k o a l a 构件模型。 k o a l a 对于系统构架的描述基于d a r w i na d l 语言【1 1 】,它将嵌入式应用程序描述 为一组构件和连接器的集合。 由于其应用领域的特殊性,k o a l a 构件模型与一般构件组装平台所采用的构 件模型有比较大的区别a 为了满足嵌入式应用程序在效率和兼容性方面的要求, k o a l a 构件具有以下四个特点。 1 k o a l a 构件是一些模块化的源代码,而不是二进制的可执行代码。这是 因为不同的硬件的可执行代码是不能兼容的,在组装时,将通过特定的 编译程序将这些源代码编译为支持特定硬件的可执行代码。 2 k o a l a 构件具有多态接口,定义多态接口的目的也是为了使构件能够支 持不同的硬件。 3 构件之间的交互不是通过显式的连接器完成的。为了提高程序的执行效 率,构件之间的交互必须使用直接的方法调用来完成。 4 构件的演化升级必须支持向下兼容。 k o a l a 的组装流程包括创建系统拓扑结构、选择和定义构件、运行特定的编 译和连接程序生成系统三个部分。k o a l a 支持文本和图形两种方式。k o a l a 对系 统构架的编辑比较困难,当一个系统的结构被定义了之后,很难对它进行大的修 改。 k o a l a 也不支持对构件的检索和选取,用户要使用的构件必须由事先存放在 本地。 1 2 4 v i s u a l a g e v i s u a l a g e 1 5 是m m 发行的一个软件集成开发环境。最初,它仅仅支持 s m a l l t a l k 语言,后来,又加上了对c + 十和j a v a 语言的支持。它是第一个完全实 现可视化的、基于构件的软件开发的商业产品。在v i s u a l a g e 中,用户只需通过 简单的图形化的操作,就可以完成对系统的配置。从图1 2 中,我们可以看到 v i s u a l a g e 的图形化用户界面。 v i s u a l a g e 中的构件是以类的形式来表示的。但这些构件类与面向对象中一 般的类有所不同。v i s u a l a g e 中的构件类包括了自描述信息和用于与连接器相连 的端口。在v i s u a l a g e 的构件模型中,还包括显式定义的连接器,用来完成构件 之间的交互。 v i s u a l a g e 作为一个成功的商业开发环境,它提供了简单易用的可视化编辑 手段,支持各种领域的系统组装,具有很强的实用性。它支持图形化和代码编写 两种方式的系统开发。但它所采用的构件模型具有一定的局限性,把类作为构件, 给构件的升级和管理带来一些不便。 1 2 5 u a ib a s i c v i s u a lb a s i c 1 4 ,1 9 ,2 h ( d a 下简称v b ) ,是由微软发布的,基于m sw m d o w s 操作系统的软件开发平台。 在v b 中,构件由对话框( f o r m ) 和控件( c o n t r 0 1 ) 组成。用户通过将控件 拖放到f o r m 中来设计用户界面,并通过对控件属性的设置来定义构件的参数。 在v b 中,构件之间的交互是通过事件的触发来进行的。事件处理方法实现了一 图1 2v i s u a i a g e 集成开发环境 般连接器的功能。用户在编辑系统的时候,可以通过对事件处理方法的定义来实 现不同的构件的合作。事件处理方法的定义和实现是由v i s u a lb a s i c 语言编写的 代码来完成的。 通过v b 进行构件组装时,用户可以通过向导( w i z a r d ) 来生成系统的基本 框架,然后用图形化的操作来配置构件,编写代码来定义事件处理方法,最后由 v b 生成可执行程序。用户可以选择生成只能在v b 环境下运行的程序,也可以 生成可以在w i n d o w s 下独立运行的e x e 程序。v b 不支持运行时对系统构架 的动态改变。在系统构架的编辑中,v b 仅仅支持构件视角的编辑,并不支持对 系统整体构架的显示和编辑。 图i 3 是v i s u a lb a s i c 的集成开发环境。 1 3 对构件组装平台的评价 下面,我们将对上述的这些构件组装平台进行总结和评价。我们希望以此来 确定,对构件组装平台的改进应该从哪些方面入手。 在评价之前,我们先根据上面的介绍一总结出构件组装平台的五项任务。然 后,我们将从这五个方面来进行我们的评价工作。 1 3 1 构件组装平台的任务 1 对构件模型的支持 图1 3v i s u a lb a s i c 开发环境 无论是哪一种构件组装平台,都必须支持某一种或几种构件模型 3 3 】。当组 装平台支持某一种构件模型时,它需要为用户提供对这一类构件进行访问和配置 的手段。 2 对系统构架的描述和编辑的支持 组装平台必须至少提供一种构架描述的机制。这样,用户才能通过对系统构 架的编辑,来定义应用系统的框架和构件在系统中的行为,构件组装平台才能根 据系统的构架描述信息,知道什么样的构件应该以什么样的方式组装起来。通过 构件组装平台,用户还可以将系统的构架描述保存起来,用于将来的复用。同时, 构件组装平台还应该提供对构架描述的检查手段,以检查用户在构架编辑中的遗 漏和错误,减少系统的潜在错误。 3 对构件获取、分析、维护和升级的支持 在上述的几种构件组装平台中,对构件的这些操作支持得很少,但这并不说 明这一点不重要。相反,这正是原先的组装平台的一个缺陷。基于构件的软件开 发方法最主要的优势就是能够提高软件开发的效率,使软件的维护变得容易。但 这些都必须建立在一个非常重要的前提下,那就是能方便快捷地找到所需要 的构件。如果用户无法找到所需构件的话,构件组装也就失去了它的意义,构件 组装平台也没有必要存在了。 构件的获取可以通过多种渠道。目前,从理论上来说,通过请求构件库的服 务来检索和获取所需构件的方式是最好的,但由于目前真正应用于实际的构件库 极少,所以在实践中,这部分的工作还需要有好的构件库的支持。 对构件的分析主要是建立在构件的自描述信息的基础上的,构件组装平台只 有通过获取构件本身的自描述信息,才能对构件进行验证和评价。 对构件的维护和升级可以通过下面的手段。构件组装平台通过某种方式,将 构件的应用方与提供方建立联系。当提供方对构件进行了升级之后,就可以自动 将构件更新的消息通知应用方,从而实现系统的自动维护和升级。 4 对构件的组合和改进的支持 构件组装平台生成的最终产品是由构件组成的应用系统。因此,对构件组合 的支持是必不可少的。一般来说,构件之间的组合是通过连接器来完成的。组装 平台应该支持用户对连接器的配置,并可以根据用户的配置结果自动进行构件的 组合。 对构件改进的目的是提高构件的复用价值和适用性。在组装平台中,对构件 的改进有两种方式,一种是直接对构件的源代码进行修改,对构件的实现进行扩 充和改进;另一种是我们所采用的方法,它并不修改构件的源代码,而是为构件 生成一个控制器,该控制器通过对构件内部方法的组合调用等机制,对构件行为 进行扩充。构件控制器与构件的实现代码是分开的,因此它并不影响构件的内部 实现。 5 对应用系统的生成和运行的支持 这是构件组装平台最基本的任务。组装平台可以根据用户对系统构架的配置 结果,自动生成可以运行的应用系统。当系统构架配置被确定时,生成的应用系 统也就被确定了。生成的应用系统应该能脱离组装平台独立运行。 1 3 2 对几种典型的构件组装平台的评价 我们对构件组装平台的评价将以上一节提到的五项任务为基础,从五个方面 来进行。在下面的表格中,我们对上述五种构件组装平台在这五个方面的情况作 了简单的评价,从中也可以看出这五种组装平台各自的特点。 6 表1 1 对五种构件组装平台的评价 c 2 a r c h s t u u n i c o nk o a l a v i s u a l a g e v i g i l a lb a s i c d i o 构件以类的 构件由j a v a构件与连接 形式表示,类构馋由f o r m 语言编写,包器被统一对以源代码模 构件模型中包含自描和c o n t m l 组 含顶部端口待,分剐包含块作为构件 述信息和端成 和底部端口各自接口 口 基于u n i c o n没有显式定在构架描述没有整体的 采用层次型 描述语言,构义的连接器,中主要记录构架描述,构 系统构架构架,通过消 件和连接器构架描述一了构件、连接件之间的交 描述息传送进行 通过接口连旦确定,将很器和它们之互通过事件 构件交互 接难改变间的关系触发进行 构件获 包含一些预 取、分析、 先写好的构包含一些预 维护等操 不支持不支持不支持件,一定程度先写好的构 上支持构件件 作 的维护 构件之间可 构件的交互通过连接器需要用户编 不通过显式组合,也可以写事件处理 构件之间通通过配置代 的连接器,由由用户编写代码完成构 构件的组过连接器组码管理构件, 直接的方法代码进行管件的组合,对 合和改进合,不支持构不支持构件 调用完成,不理,对构件的构件的改进 件改进改进 支持构件改改进只能通通过编写代 进过编写代码码来实现 实现 主要生成基 维护配置代根据特定环 于用户界面可以生成各 应用程序码和构件之境,调用特定 主要生成基 的生成和 的系统,支持种类型的系 间的映射关的编译程序于用户界面 系统运行时 统,不局限于 运行系,由配置代完成系统生 的系统 构架的动态特定领域 码运行系统成 改变 7 从表中,我们可以看出,上述这些构件组装平台可以分为三类。一类包括 c 2 a r c h s t u d i o 和u n i c o n ,这类组装平台对于系统构架的描述支持得较好,构件 组装的流程较简单,且支持对构架、连接器的复用,但它们的实用性较差,对构 件组装平台某些方面的任务没有支持或支持得很少,很难通过这类组装平台来实 现大量的实际应用。另一类包括v i s u a l a g e 和v i s u a lb a s i c ,这类组装平台应用于 商业领域,具有很强的实用性,对组装平台各个方面的任务都有一定的支持,但 用户在组装过程中,很难一目了然地看到系统的整体构架,并需要用户具有编写 代码的能力。第三类是应用于特定领域的构件组装平台,包括k o a l a 。它只适用 于特定的应用领域,并不能应用到通用领域的软件开发中。 我们的研究集中在通用领域的构件组装平台,我们希望今后的组装平台能够 吸取前两类组装平台的优点,既能够具有实用性,也可以较好地支持对系统整体 构架的描述和编辑,使用户尽可能地避免编写代码。 1 4 。小结 本章简要介绍了基于构件的软件开发的基本概念和目前对构件组装平台的 研究成果,并对现有的五种构件组装平台进行了分析和评价。这些组装平台虽然 都能够完成构件组装的任务,但都或多或少地存在着一些缺陷,这也是目前基于 构件的软件开发方法难以被广泛应用的原因之一。 根据对这些现有的构件组装平台的分析和评价,我们将这五种构件组装平台 分为三类,第一类组装平台对构架描述支持得较好,易于使用,第二类组装平台 具有更好的实用性,但对构架描述的支持不够:第三类组装平台对特定的应用领 域支持得较好。我们的研究目标是结合这几类组装平台的优点,使组装平台同时 具有实用性和易用性。 第二章d c o m c c 简介 我们的构件组装平台的名称是d c o m c c ( d c o mb a s e dc o m p o n e n t c o m p o s i t i o np l a t f o r m ) 。d c o m c c 可以对任何基于d c o m 构件模型的构件进行 组装。相比当前已有的构件组装平台,d c o m c c 采用了一些新的机制,以便更 好地完成上面提到的组装平台的各项任务,将易用性和实用性统一起来。下面, 我们将逐一介绍d c o m c c 对组装平台各项任务的支持。 2 1 基于d c o m 构件模型 d c o m 构件模型是当前非常流行的构件模型。目前,d c o m 的推出已经有了 一定的时间,基于d c o m 标准的构件已经有了相当的数量,基于d c o m 的系统 也被广泛地应用在各个领域中。 d c o m 构件模型对于构件组装有着非常好的支持,d c o m 构件具有易于使用 和维护的特点。这些,都给构件组装平台的开发带来了许多方便。下面,我们将 对d c o m 构件模型作一个简单的介绍,从中,我们可以看到使用d c o m 构件模 型给组装平台带来的好处。 2 1 1 ,c o m i d c o m c o m + 简介 c o m 3 是微软推出的一种构件技术规范。c o m 是一个开放的构件标准,规 定了对象模型和编程要求,为w i n d o w s 提供了统一的,面向对象的,可扩充 的通信协议,使c o m 对象可以和其他对象互操作。这意味着描述一个对象的可执 行代码( 皿1 或e x e 文件的代码) 可以被其它对象执行。即使两个对象使用不同语 言来编写的,它们也可以用c o m 标准来进行通信。c o m 具有以下这些特点: c o m 组件是完全与语言无关的。 c o m 组件以二进制的形式发布。 c o m 组件可以在不妨碍原有系统的情况下进行升级。 c o m 组件可以透明地在网络上被重新分配位置,对远程机器上的组件同本地 机器上的组件的处理方式没有什么不同。 每个c o m 组件有一个系统可识别的唯一标识。 d c o m 2 是微软提出的分布组件对象模型,d c o m 增强了c o m 的分布处理 性能,支持多种通信协议,加强组件通信的安全保障,是c o m 在分布计算领域 的自然延续,为分布在不同网络结点的两个c o m 组件提供了互操作的基础结构。 d c o m 是组件对象模型( c o m ) 的进一步扩展。d c o m 定义了组件和它们的客 户之间互相作用的方式。它使得组件和客户端无需任何中介组件就能相互联系。 客户进程直接调用组件中的方法。 c o m + , l j 是c o m 的新发展,它将c o m 、d c o m 和m t s 结合起来,同时又 增加了一些新的特性,它通过操作系统的各种支持,使组件对象模型建立在应用 层上,形成一个全新的、功能强大的组件体系结构。不过,就构件模型而言, c o m + 并没有对d c o m 的构件模型进行修改。因此,我们使用的构件模型是 d c o m 而不是c o m + 。 2 1 2 使用d c o m 构件模型的优势 从构件组装平台的角度来说,采用d c o m 构件模型,具有以下这些好处: 由于d c o m 是一个二进制的标准,它与语言无关,因此基于d c o m 的构件 组装平台就可以不必局限于某一种特定的编程语言,同时也无需用户掌握特定的 编程语言。 “ 在d c o m 标准中,提供了构件的组合机制,包括了包容和聚合两种构件组 合方式。这一特性,有利于组装平台将小的构件组合为大的复合构件。 d c o m 标准定义了全局性的命名机制,任何构件、接口都有一个唯一的标识 符来表示它,并保证构件的升级能够不影响原有系统。组装平台利用这个特点, 可以方便地实现构件的维护和应用系统的升级。 在d c o m 标准中,定义了分布式c o m 组件的互操作的机制,这一点,使构 件组装平台可以方便地支持分布式系统的组装。 2 2 易于操作和复用的构架描述 在d c o m c c 中,为了能够更好地对支持构架的描述和编辑,我们对构架描 述语言的要求是:易操作、可复用。 为了达到易于操作的目的,我们的构架描述语言能够方便地用图形方式来表 示,并可以完全地通过可视化的图形操作来完成对构架的编辑。 在d c o m c c 中,我们将系统的构架描述分为两个部分。一部分描述系统拓 扑结构,另一部分描述构架中所需构件的行为。系统拓扑结构展示系统的结构特 征,从中可以察看和编辑系统的组成部分以及各部分之间的依赖关系。构件行为 展示系统的实现特征,从中可以察看和编辑系统中构件和连接器的实现情况。 将整个系统构架的描述分为这两个部分,是为了能够更方便地进行系统构架 的复用。对系统拓扑结构来说,可能结构中的某一部分具有复用的价值,用户可 以将该部分定义为结构模块保存起来。在以后的编辑中,可以反复地复用该模块。 由于结构模块仅仅是对系统拓扑结构层次上进行了定义,与各个系统的具体实现 无关,因此,对系统拓扑结构的复用不受具体的系统实现的影响。对于构件行为 来说,值得复用的内容是构件的配置结果,如果在两个系统中都用到了同一个构 件,则对他们的配置操作可能会比较接近。因此,如果一个构件能够多次被复用, 则对它的配置操作也可以多次被复用。与系统拓扑结构的复用方式不同的是,它 的复用是与具体的构件相关的。因此,系统拓扑结构的模块中不能包含构件行为 的内容,否则可复用模块的可应用范围就大大缩小了。将两者的内容分开,才能 更好地达到复用的效果。 在系统拓扑结构描述中,包含了系统、结点、复合构件、构件和连接器五种 实体。在构件行为描述中,包含的实体包括连接、端口、事件、动作和参数。构 架描述分为图形和文本两种方式,图形描述用于显示和编辑,文本方式用于存储, 组装平台自动进行两种方式的转换和一致性检查。在图形方式下,总的系统构架 图包括了多个子图,每个子图表示系统中的一个实体。这样。使用户对构架的编 辑更为方便。 在图2 1 和图2 2 中,我们可以看到的是对系统构架用图形表示的两个实例。 其中,图2 1 描述了某个系统的拓扑结构的一部分,图2 - 2 则描述了对某个连接 器的具体配置。对于构架的具体描述规范,我们将在后面的章节中详细介绍。 图2 1 用图形方式描述系统拓扑结构 2 3 与构件库结合的构件操作 在前面所述的现有的构件组装平台中,对于构件的检索、获取、分析、维护 等操作并不重视。这些组装平台对构件的这些操作支持得很少或根本不支持,而 它们所支持的构件模型中的缺陷也使得对构件的分析和维护变得比较困难。 在d c o m c c 中,通过与构件库结合的方式来实现对构件的操作。构件库本 身的任务就是对大量构件进行管理,并对外提供对构件检索、获取、存放等服务。 构件组装平台完全可以利用构件库的这一功能,通过实现访问构件库的接口,使 用户通过组装平台,就可以直接对构件库进行操作。这样做的好处在于: 方便了用户对构件的管理和对构件库的操作。用户在系统组装过程中,无需 离开构件组装平台,就可以访问构件库,完成构件获取的工作。构件的维护 工作无需用户的干预,全部由构件库来完成。这样减少了出错的可能性,给 犀n f o m a n l r e l e a s e i n f o l is e n d m s g i 至多砂 宝c l i e n t u i 口 图2 2 连接器配置的图形表示实例 用户带来了方便。 当用户检索到多个合适的构件时,组装平台可以记录下所有这些构件的信 :息,这些构件称为候选构件。用户如果想要更换构件,可以直接从候选构件 中进行选择,而省略了对构件的重复查找。 通过构件库的服务,组装平台可以方便地获取构件完整的信息,这些信息不 仅包括构件的自描述信息( 作者、版本、接口、属性等) ,还可以包括一些 其他信息,如功能描述、刻面描述等。 通过构件库的服务,构件组装平台可以方便地获取构件的升级信息,使得对 组装出的应用系统的维护和升级变得非常容易。 2 4 支持构件的组合和改进 和上述这些现有的构件组装平台相比,在d c o m c c 中,对构件的组合和改 进有了更多的支持。 在d c o m c c 中,构件的交互也是通过连接器来完成的。构件通过端口和连 接器相连。在连接器内部,包含了若干个连接,每个连接中都包括一个构件的请 求端口和另一个构件的一个服务端口,以及这两个端口之间的交互方式。 d c o m c c 除了对支持应用系统的组装外,还支持对复合构件的组装。组装出的 复合构件就是一个大的d c o m 构件,能够在将来的开发中被复用到。 d c o m c c 中还支持对构件的改进。在d c o m c c 中,用户可以为每个构件 添加一些服务端口,在服务端口中,用一组动作序列来设定构件在完成该服务时 的行为( 如方法调用、属性设置等) 。当构件的某一个服务无法用某一个简单方 法调用来完成,但却可以通过一组方法的组合调用来完成时,这样的动作序列的 设置是有必要的。这样的做法,实际上对构件进行了一定程度的改进。组装平台 在实际生成系统的过程中,为每个构件都生成一个控制器,由这个控制器来负责 操纵构件的端口,所以对构件的改进并不需要对构件的源代码进行改动。由于这 样的做法无需对构件本身进行修改,因此这样的改进并不破坏构件内部的封装 性。 2 5 支持各种领域的应用系统的生成 在基于构件的软件开发中,应用系统实际上是一组构件按照一定的构架描述 进行组合的结果。因此,构件组装平台能够组装出的应用系统的广泛性,也就取 决于它所支持的构件模型和构架描述方式。d c o m c c 支持的d c o m 构件模型是 一个通用型的构件模型。它的语言无关性和对分布式计算的支持使d c o m 构件 可以不受限制地被应用在各种各样的领域中。而d c o m c c 中所采用的构架描述 也是基于通用性的构架描述,它并不对构架的风格有过多的限制,可以用它来对 各种领域的系统进行描述。 由此,我们可以看到,通过d c o m 构件模型,我们可以编写出基于各种领 域的构件:通过d c o m c c 中的构架描述,我们又可以描述出各种领域的系统。 这就说明了d c o m c c 能够组装出的应用系统所具有的广泛性。

温馨提示

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

最新文档

评论

0/150

提交评论