




已阅读5页,还剩57页未读, 继续免费阅读
(计算机软件与理论专业论文)基于构件的网构软件组装技术研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 摘要 随着网络技术迅猛发展,网络提供了一个开放、动态、多变的运行环境。 在这样的环境下软件往往具有一些有别于传统软件的基本特征,包括自主性、 演化性、协同性、多态性和反应性等,具有这样基本特征的软件称为网构软件 ( i n t e m e t w a r e ) 。 网构软件呈现出的新特点,使现有的软件方法和软件结构暴露不足。从体 系结构入手进行软件开发和维护在理念、主旨、过程上与网构软件的开发是匹 配的,能有效支持网构软件的开发。软件体系结构与主流软件开发方法的结合 提高了软件重用的抽象层次及软件的开发效率。从软件体系结构层次开始,设 计与开发软件系统,工作的重点从类的编程与继承转向了构件、连接子等第一 类实体的规约与组装上。系统的性强烈地依赖于构件间交互的特征。 目前,基于构件的软件开发模式,致力于通过构件组装的方式来建造软件 系统。构件是为了复用和组装的目的而设计的,但是在构件的组装过程中常常 会碰到组装不匹配的问题。文章中提出的连接子就可以解决这个问题,把连接 子看作与构件一样的第一类实体,实现构件的功能代码和通讯代码的分离,不 仅加强了组装的灵活性,而且增强了软件体系结构的适应能力。 在对网构软件的特性和组装原理进行分析研究的基础上,提出了基于构件 的网构软件组装方法,本文主要工作包括:( 1 ) 对组装中用到的结构模型构件 和连接子用不同的方式进行了详细的描述;( 2 ) 在构件组装技术上采用连接子 方法,用x l v l l 语言详细描述了其过程;( 3 ) 在对构件的管理上采用构件库,给 出了构件库的体系结构图。( 4 ) 最后给出一个基于构件的网构软件装技术的开 发实例。 关键词:网构软件;构件;连接子;构件库 a b s t r a c t a b s t r a c t w i t ht h er a p i dd e v e l o p m e n to fn e t w o r kt e c h n o l o g y , t h en e t w o r kp r o v i d e sa l l o p e n , d y n a m i c ,e v e r - c h a n g i n go p e r a t i n ge n v i r o n m e n t i ns u c ha ne n v i r o n m e n tt h e s o f t w a r et h a ti so f t e nd i f f e r e n tf r o mt h et r a d i t i o n a ls o r w a r eh a ss o m eb a s i c c h a r a c t e r i s t i c s ,i n c l u d i n ga u t o n o m y , e v o l u t i o n a r y , c o l l a b o r a t i v e ,p o l y m o r p h i s ma n d r e s p o n s i v e n e s s ,e t c t h es o f t w a r ew i t ht h e s e sf e a t u r e si sc a l l e di n t e m e t w a r e i n t e m e t w a r eh a ss h o w nt h en e wf e a t u r e s ,s ot h a te x i s t i n gs o t t w a r em e t h o d sa n d s o f t w a r es t r u c t u r ea r eu n d e r - e x p o s u r e s t a r t i n gf r o mt h ea r c h i t e c t u r eo fs o f t w a r et h e d e v e l o p m e n ta n dm a i n t e n a n c ei nt h ec o n c e p t , s u b j e c ta n dp r o c e s sm a t c hw i t h i n t e m e t w a r ed e v e l o p m e n t , c a l le f f e c t i v e l ys u p p o r ti n t e r n e t w a r e t h ec o m b i n a t i o no f a r c h i t e c t u r ea n dt h em a i n s t r e a ms o t 睦 w a r ed e v e l o p m e n tm e t h o d si st oi m p r o v et h e a b s t r a c t i o nl e v e lo fs o f t w a r er e u s ea n ds o f t w a r ed e v e l o p m e n te f f i c i e n c y f r o mt h e b e g i n n i n gl e v e lo fs o f t w a r ea r c h i t e c t u r e ,d e s i g na n dd e v e l o p m e n to fs o f t w a r e s y s t e m s ,t h ef o c u sp r o g r a m m i n ga n di n h e r i t a n c ef r o mt h ec l a s st u r n e dc o m p o n e n t s , c o n n e c t i v i t ys u b e n t i t i e ss u c ha st h ef i r s tc a t e g o r yo nt h es t a t u t ea n dt h ea s s e m b l y b u tt h ep e r f o r m a n c eo ft h es y s t e ma l s os t r o n g l yd e p e n d e n to nt h ec h a r a c t e r i s t i c so f i n t e r a c t i o nb e t w e e nc o m p o n e n t s a tp r e s e n t ,t h em o d e lb a s e do nc 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 , i s w o r k i n gt ob u i l ds e t , r a r es y s t e m st h r o u g ht h ec o m p o n e n ta s s e m b l ya p p r o a c h c o m p o n e n t sa r ea s s e m b l e di no r d e rt or e u s ea n dd e s i g n e df o rt h ep u r p o s e ,b u ti n t h ec o m p o n e n ta s s e m b l yp r o c e s s i n g , n o tm a t c h i n g p r o b l e m so f t e nh a p p e n i nt h e a r t i c l e ,t h em e n t i o n e dc o n n e c t o rc a l ls o l v et h i sp r o b l e m ,t oc o n n e c tw i t hc o n n e c t o ra s af i r s tc l a s se n t i t i e si nt h es a m eb u i l d i n gb l o c k st oa c h i e v ec o m p o n e n t so ft h e f u n c t i o nc o d ea n dc o m m u n i c a t i o n sc o d es e p a r a t i o n , n o to n l yt oe n h a n c et h e f l e x i b i l i t yo ft h ea s s e m b l y , b u ta l s oe n h a n c e dt h es o f t w a r es y s t e ms t r u c t u r a l a d a p t a b i l i t y t h o u g h ta n a l y s i so fi n t e r n e t w a r ef e a t u r e sa n di n t e m e t w a r ec o m p o s i t i o n p r i n c i p l e s ,晰n gf o r w a r di n t e r n e t w a r ec o m p o s i t i o nb a s e do nc o m p o n e n tt h a tm a i n d u t i e si n c l u d e :( 1 ) c o m p o n e n ta n dc o n n e c t o ru s e di nt h ec o m p o s i t i o na l ec a r r i e do u t ad e t a i l e dd e s c r i p t i o n ;( 2 ) i nt h ec o m p o s i t i o nt e c h n o l o g yu s e dt oc o n n e c t o rm e t h o d , t h ep r o c e s si sd e s c r i b e di nd e t a i lu s i n gx m ll a n g u a g e ;( 3 ) i i lt h em a n a g e m e n to ft h e c o m p o n e n tu s i n gc o m p o n e n tl i b r a r y , c o m p o n e n tl i b r a r ys y s t e mg i v e st h ea r c l l i t e c n j r e c h a r t ;( 4 ) f i n a l l y , ac o m p o n e n t - b a s e di n t e r n e t w a r ei n s t a l l e di n s t a n c eo ft e c h n o l o g y r e s e 御- c hi sg i v e n k e yw o r d s :i n t e m e t w a r e ,c o m p o n e n t , c o n n e c t o r ;, c o m p o n e n tl i b r a r y i i i 学位论文独创性声明 学位论文独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得的 研究成果。据窝所知,除了文中特别加以标注和致谢的地方外,论文中不包含 其他人已经发表或撰写过的研究成果,也不包含为获得南昌太学或其他教育 机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何 贡献均已在论文中作了明确的说明并表示谢意。 引矧:阮峰:1 年州刁日 学位论文版权使用授权书 本学位论文作者完全了解直昌太堂有关保留、使用学位论文的规定,有权 保留并向国家有关部门或机构送交论文的复印件和磁盘,允许论文被查阅和借 阅。本人授权直昌太堂可以将学位论文的全部或部分内容编入有关数据库进行 检索,可以采用影印、缩印或扫描等复制手段保存、汇编本学位论文。同时授 权中国科学技术信息研究所将本学位论文收录到中国学位论文全文数据库, 并通过网络向社会公众提供信息服务。 ( 保密的学位论文在解密后适用本授权书) 学位论文作者签名( 手写) :懈 签字日期:川年j 月io 日 翮引瑚:声;柳忽 签字日期。叩引瑚唧 第1 章引言 1 1 课题背景 第1 章引言 随着网络技术的高速发展,i n t e m e t 不仅为我们提供了一个信息交流平台, 同时也提供了一个资源丰富的平台。如何在这种开发、动态、多变的平台进行 软件开发;如何充分利用分布在各个结点的资源,成为软件技术的研究热点。 i n t e r n e t 技术的发展使传统软件开发方法几乎不能适应现代软件发展的需 要,在很多方面发生变化。如开发环境从静态封闭逐步走向动态开放;网络提 供大范围的资源共享与协同操作成为可能。这使得计算机软件开发、部署、运 行和维护的的方法和环境发生很大的变化。为了适应适应开发、动态、难控的 环境,从而衍生出一类新的软件运行形态一一网构软件。 由于传统软件开发方法的限制,传统上的软件复用是非常有限的只是仅仅 对程序源代码的复用,对软件开发效率的提高是非常有限的。实质上,软件复 用技术对软件开发能产生很大的影响,如缩短开发周期、提高软件的生产效率、 又能提高系统的灵活性和可靠性、增强软件可维护性。现在的软件开发方法中 基本上都在使用软件复用方法。 软件开发已经经历了三个发展阶段:面向对象、基于构件、面向服务。 面向对象的软件开发方法是早期的开发方法,开发的效率比较低,基本是 面对个体软件开发者,开发的过程按照传统的软件开发周期进行,呈现一阶段 集中式结构,问题和解是按照顺序逐步明确的特点,一般中小型项目用这种开 发方法还是可行的。 面向构件的软件开发方法是现在软件开发者用的比较多的方法,开发的效 率比较高,基本是面对群体开发者进行工业化开发,开发的过与传统软件的开 发周期是不同的,呈现构件开发与系统组装分离两阶段,可以由不同的开发人 员并行进行,提高开发效率。构件一经产生,就与它的具体实现语言无关,能 够和其它的构件构造出应用系统。现在许多大中型系统的开发都采用构件化组 装模式。在构件复用技术中要涉及到构件分类、存储、检索及应用模型一系列 问题,这也是当今个研究的热点。 第1 章引言 面向服务的开发方法在实际中也用的很多,呈现服务发布查询使用三阶段 松祸合结构的特征,重点以创建和组装服务和服务合同为中心,接着解决粗粒 度服务合同,最后是设计和实现用于服务的对象和组件。 上面提到的三种软件开发方开始从具体的问题求解层经过群体问题的产业 化生产层,开始向面向大量最终用户服务层的转变。使开发出的软件适合开放 环境的需要。 i n t e m e t 平台提供了一个开放的平台,软件实体将以自主的方式存在于 i n t e m e t 的各个节点之上,一个有独立功能的软件实体都可以在这样开放的环境 里发布,在使用面向对象、软件构件开发方法时,开发者可以从这样资源丰富 的平台获取相应的软件实体,用不同的方法让它们协同工作,组装成一个完整 的系统,形成一种与w w w 相类似的软件w e b ( s o f i w a r e w e b ) 。 网络提供了一个动态、开方和多变的环境,以及用户使用方式个性化要求, 软件开发者开发的软件必须能适应这样的外围环境,软件的功能指标、性能指 标或可靠性指标等进行静态( 离线) 的调整和动态( 在线) 的演化。我们把这样一种 新的软件形态称之为网构软件( i n t e m e t w a r e ) 。它主要的特征有自主性、协同性、 反应性、演化性和多目标性等。 1 2 研究现状 1 2 1 基于构件的软件开发 基于构件的软件开发( 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 d ) 就 是用一些已经存在的软件构件来组装成新的软件系统,而不是从零开始开发【l 】。 一些常用的构件模型如e j b 、c o m 、和c o r b a 等 2 1 【3 】【4 l 已经被广泛地应用到 各种应用系统中。开发者运用这些构件模型,可以构造出更复杂和更大的分布 式的复合构件。 基于构件的软件开发过程和传统过程有着很大的差异。传统的软件开发过 程,基本都是根据软件生命周期,分阶段地进行开发,每个阶段基本上都很少 考虑软件资产的复用。而基于构件的软件开发在需求分析的基础上,首先考虑 如何利用现有的可复用构件,从这些可复用构件中检索、选取出合适的构件, 或直接创建新的构件,然后通过适配组装成新的系统。 2 第l 章引言 c b s d 的最大的特色就是利用现有的构件来构造新的应用系统,其主要的 核心活动有: ( 1 ) 检索:c b s d 方法是在已有的可复用构件库中找到满足系统需求的构 件。按照某种特定的策略选择相应的构件,以便在c b s d 中使用。 ( 2 ) 创建:在开发过程中,不是所有的选取构件都能满足系统要求。这时 就要开发新的构件,以适应系统的设计目标,同时将这个新构造的构件存入构 件库,以便为其它新系统的开发服务。因此构件库也就不断的壮大。 ( 3 ) 适配:从构件库中选取的构件经常不能直接被复用,需要对构件进行 修改或改进,以适应新系统的设计要求,如接口的参数类型不同、参数顺序不 同、参数格式不同等。 ( 4 ) 测试:当构件被运用到新的系统中后,需要对系统的性能进行测试。 一般测试活动方法有单元测试和集成测试两种方法。单元测试侧重于由若干构 件构成的子系统的功能和性能,集成测试侧重于系统整体功能和性能。 基于构件的软件开发是利用现有的构件进行组装的过程相对传统的开发方 法来说,具有简单、可靠、快速等优点。并且是从构件库中检索和选取合适的 构件装配到新的应用系统中,这使软件的生产效率得到很大的提高。又由于构 件库中的构件已经是被其他的系统验证过的,所以这些构件的质量就有保证。 同时c b s d 中创造的新的构件也可以扩充构件库,使构件库能够不断壮大为 c b s d 提供更多的可复用构件,从而形成良性循环。 1 2 2 网构软件的开发 在i n t e m e t 环境下呈现出一种新型的软件形态网构软件,网构软件有其独有 的基本特征如自主性、协同性、反应性、演化性、多态性。因此,传统的软件 开发理论、方法与技术已经不能满足网构软件的需求。同样网构软件的体系结 构与传统软件之间也存在很大的差异,如网构软件体系结构的基本实体是构件 并且是可变,构件之间的连接也是可变的;从开发者的角度来考察网构软件, 可以发现传统的软件开发方法很难支持由开放、动态、多变的i n t e m e t 环境衍生 的网构软件的开发。 针对网构软件运行环境开放、动态、多变的特点,我们认为北京大学梅宏 教授等在文献【5 】中正式提出了a b c ( a r c h i t e e t u r eb a s e dc o m p o n e n tc o m p o s i t i o n ) 3 第1 章引言 方法是开发网构软件的一种更合适、自然的方法。a b c 实质是软件体系结构 ( s 0 1 a r ea r c h i t e c t u r e ,简称s a ) 研究和基于构件的软件开发( c o m p o n e n tb a s e d s o f t w a r ed e v e l o p m e n t ,简称c b s d ) 相结合。应用a b c 方法开发网构软件的主 要思想是将软件体系结构思想运用到软件开发的每个阶段,作为系统开发的总 框架,再利用相应的工具支持的自动转换机制缩小从抽象层设计到具体实现的 距离,而后在构件运行平台的支持下实现自动的系统组装。因此,a b c 方法在 理念、主旨、过程上与网构软件的开发流程基本是相似的,能够支持网构软件 的开发。 实践表明,目前分布在网络上不同节点可供开发人员使用的可复用构件的 数量和类型已经非常丰富,有的已达数十万,甚至数百万之多。网络为我们提 供了一个资源庞大的现实可用的软件复用库。基于这些可复用构件来组建新的 网构软件能极大的缩短开发时间,提高软件的开发效率,有助于应对软件需求 的快速变化。总之,开放的运行环境提供了丰富的可复用的软件资产和即时的 使用方式,为使用a b c 方法进行网构软件组装的可行性提供了前提条件。 1 3 本文的主要内容 本文在对网构软件的特性和组装原理进行分析研究的基础上,提出了基于 构件的网构软件组装方法。基于构件的软件开发模式,致力于通过构件组装的 方式来建造软件系统,但在构件的组装过程中常常会碰到组装不匹配的问题。 文章中提出的连接子就可以解决这个问题。在此基础上,主要完成了以下工作: ( 1 ) 对组装中用到的结构模型构件和连接子用三种不同的方式进行了详细 的描述,分别是b n f 语法的描述、x m l 描述和u m l 描述。 ( 2 ) 在构件组装技术上采用连接子方法,也用相同的三种方法详细描述了 其过程。 ( 3 ) 以有线电视收费管理系统为背景,从系统的实际需求出发,具体介绍 了构件开发模式如何应用于系统设计的过程。详细阐述了构件的c d l 描述、构 件的应用组装和构件的部署。 本文共分为五章,具体安排如下: 第1 章引言介绍了论文的研究背景及意义,网构软件的研究现状和论文 的主要研究内容及论文组织。 4 第1 章引言 第2 章网构软件组装原理及框架介绍网构软件的定义和它的基本特征; 介绍传统软件组装过成,重点介绍基于软件体系机构的网构软件组装过程;最 后介绍网构软件组装原理。 第3 章网构软件组装过程中相关体系结构模型重点介绍网构软件组装原 理框架及相关体系结构模型。对组装中用到的结构模型构件和连接子用三种不 同的方式进行了详细的描述,分别是b n f 语法的描述、x m l 描述和u m l 描 述。 第4 章构件开发模式在有线电视收费管理系统中的应用从系统的实际需 求出发,具体介绍了构件如何应用于系统的开发过程 第5 章结论与展望总结了本文的工作,指出了本文工作中的不足,并指 出了下一步研究工作的设想。 5 第2 章网构软件组装原理及框架 2 1 网构软件 2 1 1 基本概念 第2 章网构软件组装原理及框架 自从1 9 6 9 年a r p a n e t 建立以后,网络技术高速发展。到在为止,出现了 很多以网络为载体的新技术如网格、普适计算、p 2 p 等。网络的发展是软件的 运行环境发生根本性的变化,传统软件是在封闭、静态、相对稳定的单机运行 环境运行,而现在软件的运行环境是一个开放、动态、多变。如何在这样难控 的网络平台上开发、运行和维护软件已经成为计算机科学与技术热点问题。 为了解决上述问题,学术界提出了网构软件的概念。 一般情况下,在动态、开放、多变的网络运行环境下的软件有它自身独有 的特性是传统软件没有的,如自主性、演化性、协同性、多态性和反应性等。 我们把具有上述基本特征的软件称为网构软件( i n t e m e t w a r e ) 。也可以把它 看成是传统软件在开放、动态、多变的网络环境下的延伸。 网构软件和分布式软件有相似的运行环境如开放、动态和难控网络环境, 也都有一些分布于i n t e r n e t 环境下各个节点的并且都有自主特征的软件构件,以 及一些用于帮助这些构件以不同的交互方式进行通讯或协同的连接子;当他们 的外部运行环境发生变化时,软件本身都能够通过体系结构演化的方法来适应 外部环境的变化,使系统能满足用户的需求。由此可知,网构软件其实是分布 式软件系统的一种抽象 6 1 。 2 1 2 网构软件的基本特征 随着i n t e r n e t 的快速发展,网络为软件开发者提供了动态、开发和多变的 开发环境,而传统软件的开发环境是在封闭的。由此可见,网构软件是软件系 统基本形态的一种抽象,是传统软件的延伸,同时自身有其独特的基本特性: ( 1 ) 自主性:指的是分布在各个节点的构件在各个方面基本是相互独立的, 6 第2 章网构软件组装原理及框架 如构件的开发、运行和管理。而传统软件中的各个实体之间依赖性就很强。 ( 2 ) 协同性:指的是分布的构件节点之间可以在开发的网络环境下能够进行 相互合作,合作的方式有多种静态连接和动态连接的。在连接过程中能智能地 处理各种情况如不同协议之间的转换、异步同步通信的控制以及安全性和可靠 性的处理。而传统软件的连接方式很单只有静态的连接。 ( 3 ) 反应性:指的是分布的构件能感知外围环境的变化,并能相应地改变 自身的结构和功能来适应用户的需求。而传统软件基本都是一次成型很难有这 样反应性功能。 ( 4 ) 演化性:指的是当外围环境的变化( 如网络环境) 和用户需求,网构 软件能够进行在线演化,使系统具备应变能力。 ( 5 ) 多态性:指的是软件实体能在运行时,根据不同应用者的需要提供功 能相同、但质量属性有别的服务。多态性使网构软件系统具备了一定的柔性和 满足个性化需求的能力。 从网构软件的特性来看,与传统软件系统之间有很大的区别。传统软件开 发方法并不完全适和网构软件这种新型软件形态的开发。传统软件系统的开发 环境都是相对静态、封闭、稳定的平台,开发的方法基本上都是采用自顶向下 的途径,使整个系统开发过程都在有序控制之下。而网构软件的开发环境基本 都是动态、多变和开方的网络运行环境,软件的组成元素基本上都是现存的构 件,网络平台为开发者提供了一个资源丰富的构件库。网构软件的开发过程就 是将这些“无序 的构件根据软件的需求组合成“有序”的软件系统。经过一段 时间后,网构软件的反应性和演化性使软件由原本“有序 再次变成“无序 , 使开发的过程出现循环往复、自底向上、由内向外的螺旋的过程。 传统软件的开发过程一般都是分析、设计、编码、测试和维护。一般都是 有序的执行,是一种静态的开发过程。从网构软件的开发过程来看,它的开发 过程是一种动态的开发过程,没有固定的顺序,是一种循环往复的过程。在软 件的维护这个阶段,传统软件和网构软件有很大的区别,前者觉得这一阶段不 是软件开发的重点,后者非常注重这阶段,也体现了网构软件的特色。 2 2 网构软件组装过程 传统软件的组装是在相对封闭、静态的环境下进行的,网构软件的组装过 7 第2 章网构软件组装原理及框架 程是在动态、开放、多变的环境下进行的。由此可见,网构软件的组装就是传 统软件组装的一种特例化。本节将在简要介绍传统软件组装过程的基础上,详 细介绍网构软件组装的过程框架。 2 2 1 传统软件组装过程 传统软件组装过程主要有以下三个活动( 如图2 1 ) : 图2 - 1 传统软件组装过程 1 、选取组装的构件 传统软件组装基本都是用同种类型的构件来构造软件系统,由于不同类型 的构件之间的交互性能比较差。所以,传统软件组装的首要的一步是确定组装 实体的类型,然后再选择选合适的软件实体。最后再用合适的组装方法来构造 相应的软件系统。 在一般的情况下,影响选取组装构件因素大致有以下几个: ( 1 ) 系统需求 系统需求对选取组装实体起着决定性的作用,是第一要素。我们可以从两 个方面来选取相关的组装实体,一、根据系统功能需求的角度来选取,如何选 择合适的组装实体以及如何判断选择的组装实体是满足系统的要求,都可以用 系统的业务需求作为衡量的准则。现在有很多的构件库都是从功能方面对构件 进行分类,这样软件开发者就能很方便的找到自己需要的构件。二、根据非功 能需求的角度来选取,在选取组装构件时不仅要考虑到构件的功能还要考虑构 件的内部及一些非功能因素,如构件是用什么语言编写的,构件的接口是否满 足软件的需求,构件是否有扩展性以及是否安全等。根据不同的需求,开发者 可以选择不同可复用的软件资源。 8 第2 章网构软件组装原理及框架 ( 2 ) 开发者的经验 根据系统的需求,有经验的开发人员能够比较准确的找到合适的构件,并 能够很快的判断哪些构件是可以被复用的,有哪些功能模块需要开发出新的构 件。有效合理使用可复用的软件资源能够有效地降低系统开发成本、提高系统 的开发效率和开发质量。 ( 3 ) 可复用资源 可以复用的构件数量和构件的种类也是决定软件组装是否成功的客观因素 之一。当有很多的开发人员都用相同的开发语言来开发软件或构件时,这种语 言的构件就拥有相当丰富,用它来组装软件就相对简单。如现在比较流行的面 向i n t c r n e t 编程的j a v a 语言,广大开发人员都喜欢用它开发系统,为系统组装 提供了大量基于j a v a 的各种各样开发包、开源项目。相比之下,s m a l l t a l k 语言 由于没有得到广泛应用,因此基于s m a l l t a l k 的可复用软件包数量就很少,用这 种语言的构件来组装系统相对来讲就比较难。 2 、装配组装实体 根据系统的需求选择好了相关的构件后,决定系统组装是否成功取决于如 何把已有的构件按照特定的策略组装。在最好的情况下,只需要把组装实体直 接插入到应用程序当中,该软件实体就能正常使用。然而,这一目标很难达到。 在实践中,每个软件实体往往都对自身所处的运行环境都有一定的条件;如果 对软件实体的使用不能满足其条件,就很可能导致组装无法达到预期效果,甚 至或产生错误的结果。装配组装实体的关键是要保证发生交互的实体之间不会 产生失配情况,能够达到预期的效果。由此可见,在组装时必须重点考虑如何 解决各种常见的失配情况,如语言互操作性、平台独立性、或异构数据的互操 作性等等。 3 、验证组装结果 当用构件组装开发出的软件系统,很容易出现错误或系统工作不正常,一 个主要的原因可能是构件之间不匹配引起的。最后要做的工作是对软件的性能 进行检测。验证组装的系统是否满足系统的需求,验证的过程包括必要的编译、 链接和代码生成等。 上面提到的组装过程并不是流线型的,有可能要经过多次循环往复才能开 发出一个完美的系统。 9 第2 章网构软件组装原理及框架 2 2 2 基于软件体系结构的网构软件组装过程 基于软件体系结构的开发首先是从体系结构层次开始的,对开发的整体框 架进行设计,传统的软件开发工作的重点是程序的设计如类的编程或继承的转 向,而网构软件的组装的重点是对连接子、构件等一系列的构件的规约与接口 上。把软件体系结构与主流软件开发方法的结合不仅能提高软件的开发效率还 能软件的重用的抽象层次。 近年来不少的研究机构用实践说明,用现存的构件来组装系统是完全可行 的,并且是一条高效的捷径。北京大学软件工程研究所提出的基于体系结构的 构件组装( a r c h i t e c t u r e b a s e dc o m p o n e n t c o m p o s i t i o n ,a b c ) 方法是一个基于构件 复用的软件开发方法,其开发过程如图2 2 所示。 图2 2a b c 开发过程 基于体系结构的构件组装方法是基于构件的软件开发( c o m p o n e n tb a s e d s o f t w a r ed e v e l o p m e n t ,简称c b s d ) 和软件体系结构( s o t t w a r ea r c h i t e c t u r e ,简称 s a ) 研究相结合的产物。它是一种高效的软件开发方法,首先用软件体系结构的 思想分析问题,再用软件复用的思想来选取软件组装过程中用到的构件。 在a b c 的开发过程中,软件体系结构模型就是一个总体指导框架,贯穿于 软件开发生命周期的每个阶段。 l o 第2 章网构软件组装原理及框架 在需求分析阶段,软件开发人员对系统需求进行总体设计,重点对系统体 系结构进行详细的设计;在软件体系结构设计阶段,设计人员可以使用任意的 方法度软件体系结构进行设计;在选取构件阶段,构件不仅要满足系统功能要 求还要符合软件体系结构模型的约束;在构件组装阶段,还是要在软件体系结 构模型的指导下进行,它相当于系统的蓝图。在部署阶段和系统维护阶段还是 要以体系结构模型为核心。由此可见,a b c 方法与网构软件的开发方法基本上 是一致的,在开发的过程、理念和主旨也基本上是相同的。 基于软件体系结构的网构软件组装与传统软件组装虽然组装的外围环境有 很大的区别,但在整体框架上还是相似的,其组装过程如图2 3 ,也主要由三个 活动组成,选取网构构件、装配网构构件、精化和验证。 选取组装实体 基于体系机构选 取可复用构件 2 3 网构软件组装原理 装配组装实体 基于体系机构装 配可复用构件 图2 - 3 网构软件组装过程 验证组装结果 精华和验证特定平 台的体系结构模型 在研究构件组装过程中,把软件体系结构研究方法和基于构件的软件开发 方法有机结合的产物就是基于软件体系结构的网构软件组装。在网构软件组装 过程中要遵循软件的开发原则“自顶向下和自底向上 。“自顶向下一指在网构 软件组装开发过程中采用“分而治之、各个击破策略,能有效的降低大型复 杂系统的复杂度,使组装简单化。“自底向上是指在组装时要充分考虑各种细 节因素如开发平台支撑什么样的构件类型、构件之间如何进行连接、构件之间 的交互协议等等;充分利用现有的平台支撑机制有助于网构软件组装的实现。 第2 章网构软件组装原理及框架 在网构软件组装过程中并不是所有的构件都能从现有的构件库中能找到 的。根据系统的要求就要开发相应的构件,有的构件不需要从头开始设计,只 需要把现存的几个构件组合起来就能满足要求。这样的模型就是网构软件体系 结构模型中的一个基本概念复合构件。一个好的复合构件是有很强的组织能力 能够精化系统的设计,对复杂系统的体系结构设计是不可缺少的。 1 2 第3 章网构软件组装过程中相关体系结构模型 第3 章网构软件组装过程中相关体系结构模型 本章详细的介绍网构软件组装中用到的相关的体系结构模型,并有不同的 方式进行详细的描述。网构软件的组装就是指把已选择好的构件用相应的组装 策略来构造软件系统。组装过程中要用网构软件体系结构模型作为核心,贯穿 整个软件的开发过程。 3 1 构件技术 构件是面向对象技术发展的产物,它自身的一些特征如动态连接技术和二 进制的封装技术能够使已有的系统进行动态更换构件、动态升级。开发者没有 必要了解构件的内部结构,只需要了解构件提供的接口,构件的接口完成数据 的交换和信息的传递,甚至不同机子之间的构件通过构件进行互相调用。因此, 在选取构件或开发构件过程中只遵循约定构件的规约就行。 由此可见,构件技术的主要优点有以下几点: ( 1 ) 模块性好、独立性强:是指构件对它的运行环境依赖性比较低,在运 行的系统中构件之间能够彼此独立的进行工作。当在一个新的运行环境下,只 需要修改构件的接口,就能被新的软件系统所使用。因此,构件就是一个可以 独立存在的软件实体。 ( 2 ) 重用性:是指从构件库中提取现有的构件,不用从头开始,不需要编写 成千上万行的代码。采用基于构件组装的开发模式,直接利用已有的构件,能 够有效的缩短软件的开发周期,开发的速度会提高很多,符合当今软件发展的 需要。如果有资源和类型丰富的构件库,软件开发的效率就会有很大的提升。 ( 3 ) 连接简单、使用方便:利用构件来组装系统,软件开发者没有必要知 道构件的内部结构,只要构件的功能符合软件的需求和构件的接口满足构件的 规约,构件之间的连接就像“即插即用”这么简单。 ( 4 ) 高效封装功能:构件是一个封装好的实体,提供给用户的只是简单的 接口,开发者在使用时非常方便,组装系统就像拼装积木一样,而不是逐行编 写代码。当软件需要维护或升级时,只需要更还一个或几个构件,就能满足系 1 3 第3 章网构软件组装过程中相关体系结构模型 统的需求。 ( 5 ) 分布性:是指构件分布在网络中的各个节点上,在组装过程中需要使 用这些构件时,开发者可以用相应的方法从分布的节点获取相应的构件。这样 不仅可以让开发者共享现存的构件,也相当于有一个庞大的可复用的构件库。 3 1 1 构件的定义 现在大多数人们对构件的普遍理解是:构件是一个实在的实体,提供相应 的功能,封装里面的实现代码,只提供接口给用户。软件开发者根据接口的类 型和参数来使用构件,组装成应用程序。构件之间的数据交互也是通过接口来 实现。对构件的定义有很多的理解,比较有代表的有以下几种: 欧洲面向对象编程( e c o p ) 会议认为:软件构件是一个具有规范接口和确定 上下文依赖的组装单元,能独立地部署和被第三方集成组装【7 】。 d c s m o n d 对构件的定义为:构件是一个可以独立交付的软件单元,封装了 设计和实现的内容,并向外提供接口,通过接口与其它构件组装为功能更加强 大的实体。 在一般的情况下,构件都会由开发商提供。在构件的说明里会清晰的描述 构件的性能和使用的场合,并对构件的接口有清晰的说明和要求。根据构件的 规模和构件的内部结构,构件可以分为复合构件和原子构件。 由此可见,构件有如下的几个基本属性: ( 1 ) 有用性( u s e f u l n e s s ) 是指构件可以单独使用的实体,不需要了解构件 是如何生成的,即使用不同的语言创建的构件,他们之间也可以进行数据和消 息的传递,可以在一起协同工作,甚至复合构件里包含几个不同语言编写的的 构件。 ( 2 ) 适应性( a d a p t a b i l i t y ) 是指构件的是严格封装的,软件开发人员不 需要知道构件内部的实现过程,只有通过接口就可以方便的组装成系统。当软 件体系要升级时,只需要对相应的构件进行升级,如果只改构件里面的实现代 码,不用修改接口,这样不会影响整个系统的运行。 ( 3 ) 可移植性( p o r t a b i l i t y ) 是指在合适的环境中被复合使用,可以与环境 交互,构件还能跨网络运行,也就是说,构件能够运行在联网的各个计算机上, 它们之间可以通过某种通讯机制相互交谈,从而构筑基于网络环境的分布式应 1 4 第3 章网构软件组装过程中相关体系结构模型 用程序,实现分布式计算。 由上面的三个属性可以得出这样的结论,构件与对象都有相同封装特性, 但是构件可以包含多个对象,甚至是一个完整的构件,这样就使构件的结构比 较灵活。 通过以上分析,可以看出对构件的使用不需要考虑过多的外围环境如开发 环境、操作平台以及物理计算机的位置。构件的使用者只需要了解构件的接口 不需要知道实现的细节,构件之间可以组合成更大规模的复合构件。由此可见, 构件应该具有相当稳定的公开接口且是内聚的。构件的接口是指构件提供服务 的一组操作集合,它不提供任何的实现操作,只是提供相关的给定服务,更不 是数据结构,具体的实现都在构件的内部完成。 因此我们可以用一个三元组 表示构件: c ( c o m p o n e n t ) 表示构件名,构件一般都会有相应的命名规则,这样可以方 便地存储、管理、检索构件; i ( i n t e r f a c e ) 表示接口,即操作集,外部通过接口访问构件所提供的服务; d ( d e s c r i p t i o n ) 是对构件功能的详细描述,能够采用不同的形式如形式化、 或非形式化的方式对构件的特性做出更为详细、准确的描述。 3 1 2 构件的描述 为了对构件进行有效的操作如构件的检索、存储、组装等,文章中对构件 采用几种不同的方法进行描述。l a t o u r 等人提出t 3 c 模型【8 】,认为比较完整的构 件的描述至少包含这3 个方面概念、内容、语境。其中,概念是抽象描述“构 件做什么 ,也就是对构件的功能性进行描述:内容是比较详细的描述“构件的 功能是如何实现的即构件功能的实现方式和过程;语境是描述构件的运行的 环境如外围的运行环境、实现环境等,为构件的使用和修改提供知道信息。参 照3 c 模型本文对构件进行规约,对于构件我们给出两种描述方法:一种是利用语 法进行描述,另一种是用u m l 对构件进行描述。语法描述是基于构件形式化开发 的基础,也便于构件库中构件的管理。用u m l 描述构件便于我们在基于构件的开 发中,表示系统结构和构件的特性。 ( 1 ) 构件b n f 的语法描述 下面利用用b n f 文法来对构件结构进行详细描述,构件的语法如下: 1 5 第3 章网构软件组装过程中相关体系结构模型 := := := := := :2 := 一个构件一般由两部分组成,一个是构件说明,另一个是构件实现部分, 构件接口的具体实现方法和过程放在构件的实现部分,有时它也可以为空。把 构件说明和构件实现分开对构件的开发者和使用者都是有好处的,使用者不需 要知道构件的实现细节,而开发者也可以用不同的程序设计语言和不同的算法 来实现构件的功能。 一个构件可能有多个接口,一个是属性集包含属性名称,属性类型;一个 是操作集包含操作名、操作参数串和操作返回类型三部分。操作参数串是由几 个参数组成的,参数的数目是可以变的,可以有几个参数,也可以没有参数。 属性的取值也就是相当于是一个参数,给属性赋值相当与带一个参数的操作, 其内部的本质是一样的。 ( 2 ) 构件的x m l 描述 构件组装的实质就是把选取的构件组装成满足系统要求的整体。包括一系 列的活动如构件之间的组装,构件之间的数据传递等,它们之间关系的描述可 以用体系结构描述语言来实现。为了准确描述构件的组装,首先要清晰地描述 构件信息,一般分为两类,一类是构件的一般信息描述,如构件名称,来源, 功能等;另一类是构件内部结构的详细说明,包括操作的名称及参数列表等。 构件描述如下: 1 ) c o m p n a m e ( 构件名) :代表构件有用性的正规名称,也是构件的唯 一性标识:这样可以方便地存储、管理、检索构件。 2 ) f u n c t i o n ( 构件功能) :对构件功能抽象描述; 3 ) c o m p l o c a t i o n ( 构件位置) :说明构件来源信息,如有的构件是远程 1 6 第3 章网构软件组装过程中相关体系结构模型 节点的构件,有的是从构件库中选取的,一般是说明构件的获取方 式; 4 ) i n p u t p a r a m e t e r ( 输入参数) :一般包括两个项,分别是构件操作的输 入参数数据类型p a r a m e t e r t y p e 以及参数名p a r a m e
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论