




已阅读5页,还剩72页未读, 继续免费阅读
(计算机软件与理论专业论文)对象装配的应用研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
福建师范大学工学硕士学位论文 i i 摘要 a b s t r a c t w i t l lt h er a p i dd e v e l o p m e n to fc o m p u t e rt e c h n o l o g y , s o 向w a l - es y s t e m sb e c o m em o r ea n d m o l ec o m p l e x ,t h a tl e a d i n gt ot h e ”s o f t w a r ec r i s i s ”s o f t w a r er e u s ei so n eo fe f f e c t i v e a p p r o a c h e st os o l v ei t c o m p o n e n tb a s e ds o f t w a r ed e v e l o p m e n th a sb e e no n eo f t h em o s t i m p o r t a n tr e s e a r c h e so fs o f t w a r er e u s en o w a d a y s i nt h a t , c o m p o n e n tc a l lb er e u s e di nt h e l a r g e rg r a n u l a r i t yi no r d e rt or a i s et h ed e v e l o p m e n te f f i c i e n c yo fs o f t w a r ea n dr e d u c e d e v e l o p m e n tc y c l ea n dc o s to f s o f t w a r e n o w a d a y s ,c o m p o n e n tb a s e dd e v e l o p m e n t ( c b d ) p a y sc l o s ea t t e n t i o nt ot h o s e c o a r s e g r a i n e dc o m p o n e n t s ,w h i l ed i s r e g a r d st ot h o s ef i n e g r a i n e dc o m p o n e n t s o b j e c t c o m p o n e n t ,an e wk i n do ff m e g r a i n e dc o m p o n e n t s ,i sp r o p o s e di nt h ep a p e r o b j e c t c o m p o n e n ti s t h eo b j e c ti no b j e c t - o r i e n t e dp r o g r a m m i n g ( o o p ) a c t u a l l y t h i sp a p e r f i r s t l y f o r m a l s t u d y t h e a s s e m b l i n gt h e o r y o fo b j e c tc o m p o n e n t sa n dl i g h t w e i g h t c o n n e c t o r sc r e a t e db e t w e e no b j e c tc o m p o n e n t so nt h eb a s i co fs t u d y i n gt h et h e o r i e so f c b da n dc o n n e c t o r sc r e a t e db e t w e e nc o m p o n e n t st op a s s i n gm a s s a g e t h e nt h i sp a p e r d i s c u s s e st h ei m p l e m e n t a t i o nm e t h o do fl i g h t w e i g h tc o n n e c t o r s ,a n df i n a l l yp r o p o s e s a s s e m b l e o r i e n t e dl a n g u a g e i nf o r m a l s t u d y o fa s s e m b l i n gt h e o r yo fo b j e c tc o m p o n e n t s ,w eg i v ef o r m a l d e f i n i t i o n so ff o u ro b j e c tc o m p o n e n to p e r a t i o n s :a d a p t a t i o n ,a s s e m b l y , d i s a s s e m b l ya n d r e p l a c e m e n tw h e nt h e y a r ea s s e m b l e dt of m e g r a i n e dc o m p o n e n t s w ea l s o s t u d y f i n e - g r a i n e dc o m p o n e n t s d e p e n d e n c er e l a t i o n s h i p s ,a n d d i s c u s st h ea s s e m b l e d e q u i v a l e n c eo ff i n e - g r a i n e dc o m p o n e n t s i nf o r m a ls t u d yo fl i g h t w e i g h tc o n n e c t o r s b e t w e e no b j e c tc o m p o n e n t s ,w er e p r e s e n tt h ep a r e mo fm a s s a g e s - p a s s i n gv i at h e ma n d t h em a i nr e g u l a t i o no fm a s s a g et r a n s f o r mi nt h e m ,a n df o l l o wt h a tw ef o r m a l l yd e f i n et h e l i g h t w e i g h tc o n n e c t o r s t h e nw eg i v eas i m p l ee n t r ye x a m p l ep r o g r a m m i n gb yj a v a t o e x p l a i n h o wl i g h t w e i g h tc o n n e c t o r sc a nb eu s e d , a n d c o m p a r e d t h a tw i t h m a s s a g e s - p a s s i n gu s i n go o p t oc o n f i r mt h a tu s i n gl i g h t w e i g h tc o n n e c t o r sc a nl o o s e nt h e c o u p l i n gb e t w e e no b je c tc o m p o n e n t s ,a n dt h u ss i m p l i f yd e v e l o p e r s p r o g r a m m i n g a tt h ee n do ft h ep a p e r , an e w l a n g u a g e ,a s s e m b l e o r i e n t e dl a n g u a g e ,i sp r o p o s e d u s i n gt h i sl a n g u a g e ,e v e r yc l a s sc o n t a i n so r g yo w np r o p e r t i e sa n df u n c t i o n s ,a n dt h e m e s s a g e p a s s i n gv i ac l a s s e si sc o m p l e t e db yl i g h t w e i g h tc o n n e c t o r s t h u st h er e l a t i o n i i i 5 叫7 0 70舢8iiiii 哪y t _ k 福建师范大学工学硕士学位论文 a m o n gc l a s s e s i nf i n e - g r a i n e dc o m p o n e n t sc h a n g e sf r o ms t a t i cc o u p l i n gt od y n a m i c c o u p l i n g s o ,t h ef r e e g r a i n e dc o m p o n e n t sn o to n l yh a v ec l e a r e rs t r u c t u r e sb u ta l s oa r e e a s i e rt om a i n t a i na n dm a n a g e a n dt h o s ew i l ln o to n l yb r i n ge a s i e rw o r kt od e v e l o p e r , a n da l s om a k ef i n e g r a i n e dc o m p o n e n t sh a v em o r er e u s a b i l i t ya n de x p a n s i b i l i t yt of rt h e e x t e r n a lc h a n g i n gr e q u i r e m e n t s o ,a s s e m b l e - o r i e n t e dl a n g u a g ew i l lp r o m o t et h e d e v e l o p m e n to ff i n e g r m n e dc o m p o n e n t s ,a n dc o n t r i b u t et ot h ef u r t h e rd e v e l o p m e n to f c b di n t h ef u t u r e k e y w o r d s :a s s e m b l e o r i e n t e d ;o b j e c tc o m p o n e n t ;l i g h t w e i g h tc o n n e c t o r s ;f i n e g r a i n e d c o m p o n e n t s - i v 中文文摘 中文文摘 随着计算机技术的飞速发展,各行各业对软件开发的效率和质量都有了更高的 要求,导致软件系统越来越庞大和复杂,进而导致了“软件危机”。软件复用是解决 “软件危机 的技术上可行的、现实的方案。基于组件的软件开发实现了使用较大 粒度的组件进行复用,从而实现了软件工业化生产,不仅能够和一般工业的生产模 式一样显著地缩短软件开发周期,提高软件生产效率,缩短软件产品上市时间,降 低软件开发费用,而且还能有效地提高软件系统的质量,提高软件的可靠性及可维 护性,提高客户对软件产品的满意度,提高软件项目的成功率。 基于组件的开发将组件根据粒度由细到粗进行划分。细粒度的组件构成粗粒度 的组件,并且这些细粒度组件之间是松耦合的,这样能够保证粗粒度组件内部结构 清晰,可读性和可维护性都较高。当前基于组件的开发集中于大粒度的组件,而忽 略了细粒度组件的研究和应用。构建细粒度组件时使用的是面向对象编程语言。虽 然面向对象编程语言具有封装、多态性和继承三个基本特征,且具有简单性、自然 性、高效性等多方面的特点,是目前软件开发使用的主流语言,但使用其开发的细 粒度组件内部类之间耦合度较高,类的设计不能独立进行,导致开发人员编程繁琐, 且得到的细粒度组件内部结构混乱,可读性和可维护性都不高,难以具备更好的重 用性和扩展性以适应外界业务组件需求的不断变化,因此面向对象语言并不适合用 于细粒度组件的开发。本文针对这些问题提出了一种新的细粒度组件概念,称为“对 象组件”,这种组件就是面向对象语言中的对象( 实例) ,并在基于组件的开发以及 组件之间传递消息的连接器的基础上,首先研究了对象组件的装配理论、形式化对 象组件的轻量级连接器,其次对这种连接器的实现方法进行了讨论,最后提出了更 适合于细粒度组件开发使用的面向装配的语言。 本文首先总结了基于组件的开发、组件之间的连接器以及c 2 构架风格等理论 知识,并在此理论基础上,提出将面向对象编程中的对象看作“对象组件”,使细粒 度组件能和粗粒度组件一样,通过对象组件的装配来实现其设计,以此实现细粒度 组件内部结构的更加清晰、易读易懂。接着本文对对象组件的可装配性进行形式化 研究,形式化定义了对象组件在装配成细粒度组件过程中的更改、组装、分解、替 换四个主要操作,并给出对象组件依赖关系的形式化定义,证明了对象组件的装配 v ;|;,|;l:;气少钮 卜卜吣 福建师范大学工学硕士学位论文 等价性。实现降低装配成细粒度组件的对象组件之间消息传递的耦合度,不仅要求 对象组件对自身属性和方法进行封装,而且还需要轻量级连接器来封装对象组件之 间的消息传递,以实现对象组件之间的松散耦合。因此本文接着对轻量级连接器进 行形式化研究,在形式化地阐述了建立在对象之间的轻量级连接器在进行消息传递 时的基本原理和内部消息转换的基本规则的基础上,形式化研究了轻量级连接器各 个接口的状态,并给出连接器的形式化定义。接着本文使用j a v a 语言给出一个简 单的登录实例来演示轻量级连接器的使用,并和传统面向对象编程的消息传递方式 进行对比,以说明使用对象之间的连接器有助于降低对象之间的耦合度,从而更有 利于细粒度组件的开发。 针对现阶段细粒度组件的开发中使用面向对象语言的不足之处,本文提出面向 装配的语言。在面向装配语言的程序设计中,每个类只需要定义自身使用的属性和 方法,类之间的消息传递完全交由轻量级连接器完成。使用面向装配的语言编写的 语言类在进行消息传递时其间的关系由原先使用面向对象语言的静态耦合松散为动 态耦合,实现类的独立设计,从而实现细粒度组件内部结构清晰,易于维护和管理, 使编程人员的工作变得尽可能简单,同时也使细粒度组件能够具备更好的重用性和 扩展性以适应外界需求的不断变化。因此面向装配的语言将在一定程度上促进基于 组件开发的进一步发展。 一。一、 v i 酊 q 川 鬈 l 玲 - 、 目录 目录 中文摘要 a b s t r a c t 中文文摘 1 | 录 绪论。 第一节研究背景。 i i - 1 - 第二节研究现状。1 。 第三节本文的研究目标与意义2 。 第四节本文的研究内容。 第五节论文的组织结构4 第一章基于组件的软件开发。一5 一 第一节组件的基本概念。一5 - 第二节基于组件的连接器介绍。- 8 - 第三节对象组件及其轻量级连接器的提出 第四节本章小结 第二章对象组件的可组装性。 第一节相关研究和本章结构。 - 1 5 - 1 5 第二节基于组件的开发的主要活动o 一1 6 - 第三节组件操作。一1 9 一 第四节组件的依赖关系。- 2 0 一 第五节等价。- 2 1t 第六节本章小结。一2 5 巴 第三章轻量级连接器的形式化- 2 7 第一节轻量级连接器的工作原理一2 7 一 第二节消息的基本转换规则一2 7 一 第三节相关协议描述。- 2 9 - 第四节轻量级连接器的形式化。 v u 福建师范大学工学硕士学位论文 第五节本章小结3 5 第四章对象之间连接器的实例如3 7 第一节建立对象之间连接器的思想3 7 第二节j a v a 的反射机制3 7 第三节对象之间连接器的具体实现3 9 第四节简单登陆操作实例4 2 第五节本章小结:。4 5 第五章面向装配的语言4 7 第一节面向对象语言4 7 一 第二节对象间消息传递的传统方法以及存在问题。4 8 一 第三节面向装配的语言的提出- 5 2 - 第四节本章小结- 5 4 - 第六章结论。- 5 5 - 参考文献。- 5 7 一 攻读学位期间承担的科研任务与主要成果。一6 3 一 致谢。;。一6 5 一 个人简历 v i i i 一 ; l j 嚆 , _ 绪论 绪论 第一节研究背景 在软件开发过程中,大部分软件长期以来都是针对某个具体的应用从零开始进 行开发的,以致重复开发了大量的同类软件,不仅造成大量人力、财力的浪费,而 且也导致软件的质量也不高。同时,随着计算机应用领域的不断扩展,以及人们对 软件要求的不断提高,系统的规模和复杂度也随之空前地扩大,导致开发者越来越 无法控制软件的复杂度和其中包含的错误,产生了所谓的“软件危机【l 】 。 为了解决“软件危机”,面向过程方法和面向对象方法相继出现。虽然这些面向 过程、面向对象等技术为软件工程的发展起到了里程碑式的推动作用,但它们并没 有彻底地消除软件危机。现在随着竞争的加剧和客户需求的多样化,企业对软件应 用提出了“高质量、高速度”的要求;近年来分布式对象技术和网络的飞速发展, 使软件规模不断扩大,应用复杂度和数据处理量不断增长;软件行业工业化的趋势 也随着软件规模和范围的不断扩大而日益波切。由此可以看出新经济环境下,软件 危机更是愈演愈烈,软件开发面临着前所未有的巨大的挑战,于是人们继续探索新 的软件开发技术以适应软件发展的新需求。 现在,使用面向对象语言进行基于组件的开发已经成为软件开发的主流模式。 组件组装机制是运用多个现有组件构造软件系统的方法,它是基于组件开发【2 】的关 键技术。基于组件的开发有效地实现了软件工业化生产【3 】,它不仅能够和一般工业 的生产模式一样显著地缩短软件开发周期,提高软件生产效率,缩短软件产品上市 时间,降低软件开发费用,而且还能有效地提高软件系统的质量,提高软件的可靠 性及可维护性,提高客户对软件产品的满意度,提高软件项目的成功率。 第二节研究现状 基于组件开发技术的成熟与应用是互联网时代的产物。它把传统工业的标准化、 模块化和分工协同的思想应用于软件开发领域,在提高软件的复用程度,以及如何 提高开发效率,快速适应变化等方面取得了突出的发展。在组件和组件库的标准化 方面,美国军方和政府资助的项目已经建立了若干基于组件的软件框架研究与实现 组件库系统,如c a r d s 、a s s e t 、d s r s 等。在组件的实现、组合技术等方面,为 福建师范火学工学硕士学位论文 使软件能像硬件一样通过标准的组件来组装,人们开始从系统级和应用级上研究构 成软件的规范化标准。 在国内,虽然起步较晚,但也取得了许多成果。在理论研究方面,北京大学, 中科院软件研究所,吉林大学,南京大学等均有很多有价值的研究成果。在研究基 于组件的软件开发及软件过程模型理论基础上,已经成功研发出了一些实际的基于 组件技术开发的应用软件产品,例如青鸟软件生产线 4 1 、上海组件库【5 1 等等,积累 了不少经验,获得了较好的效益。 随着i n t e r a c t 的广泛普及和技术快速的发展,软件产业的环境也产生了变化。 目前,在美、日等国家己经产生出通过电子商务将组件进行提取、整合和组装得到 所需的应用软件系统的软件开发产业。如微软公司推出了组件软件连接技术规范 o l e ;i b m 、s u n 、a p p l e 联合推出了开放的组件软件技术规范o p e n d o e ;h p 、3 c o m 等组织推出了对象技术规范c o r b a 。这些技术规范和标准 6 - r l 促使了不少商业化的 软件组件的开发。 目前,s o a 在国内外已经成为一个热门词汇。事实上,s o a 是组件技术的一种 表现形式,是通过服务对企业的应用需求进行展现的。如果将组件和服务这两种被 赋予了不同意义的“软件模块 进行相同定位,两种理念甚至可以合二为一。 基于组件的软件开发技术使用的是面向对象语言。面向对象方法作为一种独立 的需求分析方法或者其他分析方法的补充,已取代面向过程编程方法,成为软件开 发的一种实用而有效的途径。然而,面向对象语言内部所使用的编程设计方法使得 细粒度组件无法和大粒度组件样通过更细粒度的组件装配得到,即导致无法使组 件复用由始至终地贯穿整个开发过程。从这个角度上来说,现有的基于组件的开发 只注重设计大粒度的可复用性组件,而忽略了细粒度组件的设计,导致其内部代码 混乱,层次模糊,很难具备更好的重用性和扩展性以适应合成更大粒度组件的需求 的不断变化。 本文正是从这个角度出发,提出相对于面向对象语言来说更有利于基于组件的 软件开发使用的新的语言面向装配的语言,以实现整个软件开发的过程都能够 使用装配的方式,使得设计的每个阶段都能有利于后续阶段的复用。 第三节本文的研究目标与意义 本文将针对现阶段基于组件的开发中存在的细组件设计的不足之处,提出一种 使用对象来更方便地并且更好地构建细粒度组件的方法,探讨如何使细粒度组件的 奈 一 :-_1。l1川= 绪论 设计可以和大粒度组件一样通过装配对象的方式来设计和实现,并使用轻量级连接 器来负责对象之间的消息传递,降低细粒度组件内部之间的耦合度,使得设计出来 的细粒度组件内部结构清晰,层次明了,能具备更好的重用性和扩展性以适应外界 需求的不断变化。通过对基于组件的开发、组件之间的连接器以及面向对象语言特 征等多种理论与技术理解的基础上,本文提出了一种更适合于基于组件的开发使用 的面向装配的语言。 通过使用面向装配的语言,细粒度组件内部的对象之间不再通过静态耦合的方 式直接发生消息传递,而是通过轻量级连接器进行消息传递。一方面,实现对象之 间消息传递的动态耦合,使得开发人员在定义一个类时,只需要定义与该类得自身 属性和方法相关的操作,而无需像使用面向对象语言时那样缜密考虑其他类的属性 和方法,从而减轻程序员编程负担,提高其工作效率。另一方面,最大程度地松散 了对象之间的耦合,提高类的独立性,使得类可以和组件一样进行装配,从而实现 细粒度组件内部程序条理清晰,使其可读性增强,可维护性提高,并且能适应不断 变化的外部需求。由此能够真正实现基于组件的开发由始至终地贯穿整个软件系统 的开发过程,从而有利于基于组件的开发技术获得进一步发展。 第四节本文的研究内容 根据上述目标,本文在对基于组件的软件开发和组件之间的连接器的理论研究 的基础上,首先提出将对象看作最细粒度组件,即“对象组件”,使对象能像组件一 样进行装配,以降低细粒度组件内部对象之间的耦合度,从而理清细粒度组件内部 的层次结构;接着本文对对象组件的可装配性进行形式化验证,阐述使用对象组件 进行装配从而得到细粒度组件以及对细粒度组件进行维护的各个步骤和阶段,并得 出细粒度组件的装配依赖和装配等价的各种规则;再接着,本文形式化阐述了建立 在对象组件之间的轻量级连接器在执行对象组件之间的消息传递时的基本原理、必 须遵循的主要规则及其接口的状态,并在此基础上进一步探讨轻量级连接器的形式 化定义。紧接着本文利用j a v a 语言给出一个登录操作的简单实例,阐述了使用轻 量级连接器实现对象之间消息传递与传统的面向对象语言的不同之处。最后本文以 现有的面向对象语言为基础,提出面向装配的语言。在面向装配语言的程序设计中, 每个类只需要定义自身使用的属性和方法,类之间的消息传递完全交由轻量级连接 器完成,从而实现类的独立设计,使得细粒度组件内部结构清晰,易于维护和管理, 使编程人员的工作变得尽可能简单,同时也使细粒度组件能够具备更好的重用性和 福建师范大学工学硕士学位论文 扩展性以适应外界需求的不断变化。 第五节论文的组织结构 本论文共分为六章,其中第一章为理论基础部分,第二章和第三章为形式化研 究部分,第四章为实践应用部分,第五章为理论研究部分,第六章为结论部分。 本文具体内容安排如下: 绪论主要介绍课题的研究背景、研究现状,选题的目标与意义,以及本文的研 究内容和组织结构。 第一章基于组件的软件开发主要对基于组件的开发、组件之间的连接器以及 c 2 构架风格等理论知识进行介绍,并在此理论基础上,将细粒度组件内部的对象看 作“对象组件 ,提出让细粒度组件能和大粒度组件一样,通过对象组件的装配来实 现细粒度组件的设计。 第二章对象组件的可装配性定义了由对象组件组成的细粒度组件的四个主要 操作:更改、组装、分解、替换,并给出细粒度组件依赖关系的形式化定义,证明 了细粒度组件的装配等价性。 第三章轻量级连接器的形式化阐述了建立在对象之间的轻量级连接器在进行 消息传递时的基本原理、内部消息转换的基本规则及其各个接口的协议状态的基础 上,进一步探讨了轻量级连接器的形式化定义。 第四章对象之间轻量级连接器的实例利用j a v a 反射机制建立一种对象之间 传递消息使用的轻量级连接器,并以简单登陆的操作为例说明如何使用轻量级连接 器来实现对象组件之间的消息传递方式,并与传统面向对象语言进行对比。 第五章面向装配的语言针对在现有的细粒度组件的开发中的不足之处,在面 向对象语言的基础上,提出松散对象之间耦合的更适用于细粒度组件的开发使用的 面向装配的语言。 第六章总结与展望通过对整篇文章从理论研究到实现过程的归纳总结,提出 了采用面向装配的语言的优势以及研究中存在的不足,并对后续要进行的工作进行 展望。 劬 r 、 ; ,冷 龠; : i ; 第一章基于组件的软件开发 第一章基于组件的软件开发 第一节组件的基本概念 1 1 组件的定义 软件组件是一个非常重要的概念,但目前对组件尚未有明确的统一定义,因此 本文将列举几个有影响力的定义。 美国卡内基梅隆大学的软件工程研究所在2 0 0 1 年的一份技术报告中指出: “组件是一个不透明的功能实体,能够被第三方组装,且符合一个组件模型【8 】”。 c s z y p e r s l ( i 在其软件组件专著c o m p o n e n ts o f t w a r e :b e y o n do 场e e t o r i e n t e d p r o g r a m m i n g 1 9 】中给出组件的定义:“一个组件是一个组装单元,它具有约定是规 范的接口,以及明确的依赖环境,组件可以被独立地部署,由第三方组装 。 “面向组件程序设计研讨会( e c o o p 9 0 ) 把软件组件定义为“一种合成单元, 具有契约形式描述的接口,并只有明确的环境依赖关系。软件组件可以被独立部署, 是第三方合成的主体 1o 】。 在计算机百科全书一书中给出组件的定义:“软件组件是软件系统中具有相 对独立功能、可以明确辨识、接口由契约指定、和语境有明显依赖关系、可独立部 署、可组装的软件实体【1 1 】,。 在基于组件的企业级开发一书中也给出了组件的定义:“组件表示经过完备 定义的一个或者一组接口的自包含软件【1 2 1 。这里指出组件具有在运行中可以被访 问的接口,并且可以在其开发生命周期的某个时间点上被独立地交付和安装,一般 来说,单个组件只有通过与其他组件的协同工作才能其有用性。 本文提出一种细粒度组件概念,将面向对象语言中的对象或实例看作是“对象 组件”。这种对象组件由于使用面向对象语言编程,因此具有天然的封装性,是一个 不透明的功能实体。与传统的对象或者实例不同的是,对象组件要求必须是高内聚 的,即其中不能包含关联关系或者对于其他对象的依赖,对象组件之间将通过轻量 级连接器进行消息传递。因此每个对象组件可以被独立定义,并且能易于通过和其 他对象组件的组装成为能提供有用功能的细粒度组件。 1 2 组件模型 福建师范大学工学硕士学位论文 软件组件模型是对现实组件世界的抽象,是对组件本质特征的描述。然而,目 前并没有公认的组件模型,一是由于涉及组件模型的不同人员对其所关心的角度不 同,难以建立统一的模型来满足不同方面的需求,二是存在大量特定于组件制作、 管理、复用这三个阶段中某个阶段的模型。现在有人将这些模型分为如下三类【1 2 j : 与组件部署实现相关的模型:这类模型用于帮助人们决定如何用某种程序设计 语言,或以某种可执行单元的形式来实现组件,所以也称基础设施模型,组件最终 被实现为某种直接可用的形式。与构建部署实现相关的模型规定了组件开发者和组 件使用者必须遵循的标准和规定。 与组件规约组装相关的模型:这类模型描述组件的功能和行为规约,并通过配 置这些规约来刻画系统,并在设计级上组装组件。这也是当前接口定义语言( i d l ) 、 组件描述语言( c d l ) 和软件体系结构描述语言( a d l ) 研究的内容。 与组件分类描述相关的模型:这类模型以综合的方式描述组件,用于管理大量 的静态组件,使得组件易于为用户所理解,易于在库中被有效、高效地分类、存储 和检索。 , 本文的面向装配的语言提出如何对面向对象语言进行修改,以更加适合用于基 于组件的开发,其中的各个部分即对象组件和轻量级连接器以可执行单元的形式来 实现,规定了开发者必须遵守的标准和规定,因此,本文中的对象组件和轻量级连 接器也是属于与组件部署实现相关的模型。 1 3 组件粒度层次 组件粒度层次有多种划分的方法,本文中采用eh e r z u m 和o s i m s t 2 提出的方 法,即组件粒度层次按照从细粒度到粗粒度的顺序依次包括:分布式组件、业务组 件和业务组件系统,如图1 1 所示。其中,分布式组件是最细的组件粒度,是使用 面向对象语言编程构造的语言类及其之间的相互消息传递实现的。业务组件是中等 粒度的组件,实现单个自治业务概念的组件,通常由一个或多个细粒度组件装配而 成,合在一起解决业务组件所要求的各种分布问题。业务组件系统就是由业务组件 装配构成的系统。 第一章基于组件的软件开发 目 语言类 一翟 分布式组件业务组件业务组件系统 图1 - 1 组件粒度层次 f i g 1 - i a r r a n g e m e n to fc o m p o n e n t sg r a d e s 如果业务组件系统经过封装,具有清晰的接口,使整个系统能够被当作黑盒处 理,那么此时业务组件系统本身也变成一个组件。因此,业务组件系统构成业务组 件方法中粒度最大的组件,而这种形式的业务组件系统叫做“系统级组件 。 以上三种组件都被看作是不同类型的软件组件,每种组件都定义了一种有很大 不同的粒度层次。其中,分布式组件是最细的组件粒度,是能够作为可插入运行时 组件执行环境的二进制组件部署的自制软件工作产品的一种设计模式。分布式组件 通常采用面向对象的程序设计语言构建,具有特定的体系结构、设计和实现模式。 分布式组件具有其内部要素和外部要素。其中内部要素指的是细粒度组件的内 部特征。推动内部要素设计有两个主要因素:一是使功能程序员得工作变得尽可能 简单,充分支持其能够把注意力完全集中到业务逻辑上;二是跨组件执行环境可移 植性的目标。在外部要素中有两个特别重要的问题:分布式组件的接口和业务数据 类型。 然而由于细粒度组件通常采用面向对象的程序设计语言构建,类之间使用静态 耦合的方式通信,耦合度较强,导致细粒度组件内部层次结构不清晰、代码混乱, 无法很好地满足细粒度组件的内部因素所提出的要求。本文提出的对象组件位于细 粒度组件内部,其目的是为了松散使用面向对象语言设计的对象之间的耦合度,使 得细粒度组件内部结构清晰,提高细粒度组件的可读性和可维护性。 1 4 基于组件的开发 基于组件的开发是一种软件开发方法,采用这种方法开发生命周期中的所有问 题和阶段,包括需求分析、体系结构、设计、构建、测试、部署、支持技术基础设 施和项目管理等等,都是基于组件进行的。 基于组件的开发有两个重要方面:一是通过现有组件构建系统的能力,二是组 件,为了能够组装组件,这些组件首先必须存在。通过把现有的组件组装、更改和 气;o o+。;i! 福建师范大学工学硕士学位论文 f 连接为一种不同配置的i 件,并且所有工件都可以使用这种方法构建,包括可执行 代码、接口规格说明、体系结构、业务模型,规模从完整的应用程序和系统,一直 到单个组件。 然而,由于如今的市场上尚未能够提供足够的商品化的供组装的企业组件,因 而基于组件的开发还包括采用基于组件的思维构建软件,使得整个软件开发围绕组 件为中心进行。因此,组件可以是已经存在可以用于组装,也可以是暂不存在,而 只是以组件的方法考虑信息系统,需要作为项目的一部分。由于基于组件的开发涵 盖了开发的所有方面,涵盖了整个软件生命周期,缩短了产品投放市场所需的时间, 所以它能够提供极大的利益。 第二节基于组件的连接器介绍 2 1 原有组件之间的连接器 在基于组件的开发中,有多种组件之间的连接器,本文将着重介绍以下三种。 在进行消息传递时,组件之间的相互作用以及通信的控制实际上是源于组件内部的, 这些连接器只是协调组件之间控制流和数据流的管道。 2 1 1 直接消息传递的连接器和间接消息传递的连接器 在现有的组件模型中,组件用于封装操作而连接器用于封装组件之间的相互作 用以及通信。然而,虽然组件封装了操作,但是连接器并没有封装控制,它们只是 传递控制。因此组件将操作与控制混为一体,组件之间并不是松耦合的。 这种连接器分为两种【1 3 1 ,一种是直接消息传递,一种是间接消息传递。而组件 一般都是具有各自方法或者函数的软件单元,典型地如类或对象。组件正是通过直 接地调用方法或者间接地通过连接两个组件的代码来实现对其他组件的调用。 直接消息传递的连接器如图1 2 所示。如果组件a 要调用组件b 中的方法,那 么它将直接给组件b 发送一个消息。在消息传输结构中,有两个不同的角色:发送 方和接收方。发送方静态地已知接收方,并在执行期间动态地给予其评价。有时接 收方不止一个,消息可能多点广播地发送给好几个接收方也可能广播给系统中所有 的接收方。对于发送方来说,接收方是预先已知的,但是接收方却完全不知道谁是 发送方。因此发送方向是有发送方来确定的。在软件组件模型中,e j b ,c o r b a 组 件模型,c o m ,u m l 和k o b r a 都采用了这种消息传递方式作为组件的操作。 第一章基于组件的软件开发 图1 - 2 直接消息传递的连接器【1 3 1 f i g 1 - 2 c o n n e c t i n gc o m p o n e n t sb yd i r e c tm e s s a g ep a s s i n g 间接消息传递的连接器( 图1 3 ) 是明确定义的独立实体。间接地在组件之间 传递消息的胶合代码或者脚本就是属于间接消息传递的连接器。连接器用于连接两 个组件,这个连接器在一个组件里被定义同时又调用另一个组件的方法。例如,在 图1 3 中,组件a 具有两个端口,组件b 有一个端口,连接器c o n l 将a 的一个输 出端口和b 的一个输入端口连接起来。无论何时,a 都必须先发送一个消息通知 c o n l ,然后才能给b 发送一个消息以调用b 中的方法a 。若组件之间是被间接消息 传递的连接器连接起来的,那么这些组件可被视为具有输入输出端口的计算单元, 它们之间通过连接器将相对应的端口连接起来进行控制和数据的传输。然而这种连 接器本质上仍是将组件粘合或者通过管道连接在一起。 图1 - 3 间接传递消息的连接器1 1 3 1 f i g 1 - 3 c o n n e c t i n gc o m p o n e n t sb yi n d i r e c tm e s s a g ep a s s i n g 若组件是被间接消息传递的连接器连接起来的,那么此时通信( 连接器完成) 和操作( 组件完成) 是分离的。然而这并不意味着控制与操作是分离的,因为传递 于组件之间的消息可能包含着调用的消息。这样导致了组件和连接器是紧耦合的。 2 1 2c 2 构架风格简介 构架风格【1 8 】是指能够标识一类构架组织特征的模式,它定义了描述构架系统的 词汇和组织构架系统的规则。 c 2 1 9 - 2 1 1 是一种基于分层结构、消息驱动的软件构架风格,也是一种基于组件和 消息的架构风格,可用于创建灵活的、可伸缩的软件系统。图1 4 是一个典型的c 2 风格构架。如图l - 4 所示,c 2 构架中的基本元素是组件( c o m p o n e n t ) 和连接器 福建师范大学工学硕士学位论文 ( c o n n e c t o r ) ,可以看成是按照定规则由连接器连接的许多组件组成的层次网络。 每个组件和连接器都定义有一个顶端接口和一个底端接口:一个组件的顶端接口或 底端接口可以连接到一个连接器的底端接口或顶端接口;对于一个连接器,和其相 连的组件或连接器的数量没有限制,但是组件和组件之间不能直接相连。组件通过 这两个接口连接到构架中,这使得构架中组件的增加、删除、重组更为简单方便。 每个连接器的接口的数量与连接在其上的组件和连接器的数量有关,这也有利于实 现在运行时的动态绑定。c 2 的最大特点就是组件之间不存在直接的通信手段,构架 中各元素( 组件、连接器) 之间的通信只有通过连接器传递消息来实现。即在c 2 组 件中,消息通信不再是通过直接的方法调用,而是通过基于c 2 规则的消息的传递方 式来实现,在组件间则通过连接器进行。例如,处于低层的组件向高层的组件发出 服务请求消息( r e q u e s t s ) 时,消息经由连接器送到相应的组件。处理完成后由该组 件将结果信息( n o t i f i c a t i o n s ) 经连接器送到低层相应的组件。 图1 - 4c 2 构架风格【1 9 1 f i g 1 - 4 a r c h i t e c t u r a ls t y l eo f c 2 2 2 组件之间的外部连接器 本节介绍的连接器与原有的组件模型中的连接器不同,它们封装了组件之间的 控制流。也就是说,使用原有组件之间的连接器进行消息传递时,组件是通过连接 器直接调用其他组件的方法的,但这里的连接器不同,它负责控制和管理消息的传 递,使组件之间没有直接相互作用。该连接器目的在于使用连接器封装组件模型中 的控制,并且使用组件来封装数据和函数,从而从数据、函数和控制的角度来尽可 能地松散组件之间的耦合度。实现封装不仅使得组件及其构成更易于解释也更易于 处理,而且也使得组件模型更具有实现可预测组装的能力。其思想是在连接起来的 ! 第一章基于组件的软件开发 组件里,由连接器而不是组件本身去初始化组件中的方法调用,并且控制所有的参 与操作的数据流。这样组件之间的所有的控制流都被该外部连接器封装起来,正如 图1 5 中所示。在这种方案中,被连接组件只与它们之间的连接器进行相互作用, 而并不与相连组件进行相互作用。组件封装了操作而连接器封装了控制。例如在图 1 5 中,连接器c o n l 调用组件a 中的方法a 和组件b 中的方法c ,但是组件a 和b 并不直接进行相互调用。方法调用涉及的数据流在a 和c o n l 之间或者c o n l 和b 之间流动,而不直接在a 和b 之间流动。 图1 - 5 在组件之间建立外部连接器i i 剐 f i g 1 - 5 c o n n e c t i n gc o m p o n e n t sb yc o n n e c t o r s 若要在现有的组件模型中使用本文阐述的外部连接器,则要对现有组件模型中 的组件做一个重新定义:组件是一个由接口和代码组成的软件单元。其中,接口描 述了它能提供的服务和它所需要的服务,以及这两组服务之
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版施工单位招标投标工程保险承保合同
- 2025年度城市绿化工程人工劳务分包合同模板
- 2025年度现代农业种植技术引进合同范本
- 2025版全新咖啡厅员工试用期劳动合同范本下载
- 2025版汽车后市场加盟合作合同协议
- 2025版个人汽车贷款合同范本
- 2025橱柜定制与安装一体化服务合同
- 说课课件模板领取
- 红酒期货入门知识培训班课件
- 语文专业知识培训演讲课件
- 《汽车电工电子》课程标准
- 血氧饱和度监测
- GB/T 23604-2024钛及钛合金产品力学性能试验取样方法
- 小学五年级家长会-主题班会
- 10kV线路施工应急预案
- 《植物细胞》教学课件
- 《PLC应用技术(西门子S7-1200)第二版》全套教学课件
- 医学教材 肠内营养相关性腹泻的预防处置课件
- 新人教版七年级上册英语全册课件(2024年新版教材)
- 2024-2030年中国纳米烧结银市场深度调查与发展战略规划分析研究报告
- 2024年安徽省体育彩票管理中心招聘23人(亳州地区招2人)历年(高频重点提升专题训练)共500题附带答案详解
评论
0/150
提交评论