已阅读5页,还剩59页未读, 继续免费阅读
(计算机应用技术专业论文)基于构件的软件复用技术的研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中北大学学位论文 基于构件的软件复用技术的研究 摘要 软件复用是软件业界为解决日益严重的“软件危机”和日趋复杂的软件需求而提出的 一种对策。软件复用技术随着面向对象技术和分布式对象技术的应用而得到迅猛的发展, 在当前的软件技术领域中,基于构件的软件复用技术被视为最成功的软件复用的实现技 术。 本文介绍了软件复用技术产生的历史背景和软件复用技术的概述,以及软件复用的关 键技术。从构件的定义、分类、特点、获取、评价、管理和构件模型以及构件描述语言 等方面对构件技术进行了阐述。本文还论述了构件的实现技术,分析比较了三种主流分布 式对象技术在软件构件应用方面的特点。 论文研究了基于构件的软件开发方法和开发周期,并通过对地下综合管线信息系统 ( u i p i s ,u n d e r g r o u n di n t e g r a t e dp i p e l i n e si n f o r m a t i o ns y s l c m ) 领域进行领域分析,提出 了一个基于地下综合管线信息系统领域的软件构件体系结构模型,设计恩想是基于c o m + 的良好的事务处理和分布式组件服务的特点,符合c o m + 结构体系结构模型,它能从领 域软件构件体系结构的高度上指导该领域内的构件和系统开发。最后,本文还给出地下综 合管线信息系统领域的基于构件开发的部分开发实例。 关键词:软件复用,构件,基于构件的软件开发,c o m + ,u i p i s 中北大学学位论文 s t u d y o nt h e t e c h n o l o g y o fs o f t w a r er e u s e b a s e do n c o m p o n e n t a b s t r a c t s o f t w a r er e u s ei sak i n do fc o u n t e r m e a s u r ef o rs e r i o u si n c r e a s i n g l y “s o f t w a r ec r i s i s ”a n d c o m p l e x i n g s o f t w a r e r e q u i r e m e n t i ns o f t w a r et r a d e t h et e c h n o l o g yo fs o f t w a r er e u s e d e v e l o p sr a p i d l y w i t ht h ea p p l i c a t i o no f o r i e n t e d o b j e c tt e c h n o l o g y a n d d i s t r i b u t e d o b j e c t t e c h n o l o g y ,a n d t h et e c h n o l o g yo fs o f t w a r er e u s eb a s e do i lc o m p o n e n ti st h em o s ts u c c e s s f u l i m p l e m e n t i ns o f t w a r er e u s e t h i s p a p e r i n t r o d u c e st h eh i s t o r i c a lb a c k g r o u n d ,s u m m a r i z a t i o n ,a n dk e y t e c h n o l o g yo f s o f t w a r er e u s e ,a n ds p e c i f i e st h ec o m p o n e n tt e c h n o l o g yi nd e t a i lf r o mt h ed e f i n i t i o n , c l a s s i f i c a t i o n ,c h a r a c t e r i s t i c ,g e t t i n g ,e v a l u a t i o na n dm a n a g e m e n t o fc o m p o n e n t ,m o d u l eo f c o m p o n e n t ,d e s c r i p t i o nl a n g u a g e o f c o m p o n e n t t h ei m p l e m e n t o fc o m p o n e n tt e c h n o l o g yi s d i s c u s s e d ,a n dt h ea p p l i e dc h a r a c t e r i s t i co f t h r e em a i nd i s t r i b u t e d o b j e c tt e c h n o l o g yi nt h e s o f t w a r ec o m p o n e n ti sa n a l y z e da n dc o m p a r e di nt h ep a p e r t h em e t h o da n dc y c l eo fd e v e l o p m e n tb a s e do ns o f t w a r ec o m p o n e n ti ss t u d i e di nt h ep a p e r a n dam o d u l eo fs o f t w a r ea r c h i t e c t u r eb a s e do nt h ed o m a i no fu i p i s ( u n d e r g r o u n di n t e g r a t e d p i p e l i n e si n f o r m a t i o ns y s t e m ) i sp r o d u c e dt h r o u g ht h e d o m a n i a la n a l y s i so fu i p i s t h ei d e a o fd e s i g nf o rt h em o d u l ei so nt h eb a s i so fc o m + sc h a r a c t e r i s t i co f f i n et r a n s a c t i o n p r o c e s s a n dd i s t r i b u t e dc o m p o n e n ts e r v e ,a n di sa c c o r dw i t ha r c h i t e c t u r eo fc o m + ,w h i c h d i r e c t st h e d e v e l o p m e n t o f c o m p o n e n t a n ds o f t w a r ei nt h ef i e l d sf r o mt h ef i e l do fs o f t w a r ec o m p o n e n t a r c h i t e c t u r e u l t i m a t e l y ,s o m ei n s t a n c e s o fu i p i sb a s e do nc o m p o n e n td e v e l o p m e n ti s e x p r e s s e d i nt h e p a p e r k e y w o r d s :s o f t w a r er e t l s c ,c o m p o n e n t ,c b s d ,c o m + ,u i p i s 中北大学学位论文 本人声明 我声明,本论文及其研究工作是由本人在导师指导下独立完成的,在完成论文时所 利用的一切资料均已在参考文献中列出。 中北大学学位论文 1 1 引言 1 绪论 复用( r e u s e ) 一词是指将以前的经验、思想、方法和产品应用到正在进行的研究、开发、 生产和创作中去的一系列活动。 现实世界中充满了复用,有些时候人们甚至不知不觉地应用它。我们每天早晨起来, 就会习惯地进行刷牙、洗脸等活动,几乎不用意识的干预,这是因为长期的、固定的工作, 会在人的头脑中形成固定的模式,而我们每天正是在复用这些模式。 纵观人类社会的发展史,复用也起到推动历史发展的巨大作用,没有复用就没有人类 社会的发展。一代人总是继承上一代人的生理特征、文化传统、生存技能和生产经验, 并在此基础上发展和完善。复用的形式是多种多样的画家作画、作家写作、作曲家谱 曲的时候,他们都在有意无意的复用他人或者自己以前的作品,并且以一种尽可能隐藏起 来的形式表现出来,尽量不使别人看出来。但现在,产业部1 1 f 1 3 i 定的标准却恰恰相反,它 们的制定者的目的是为了别人容易发现可复用的东西,以通过复用来提高生产效率,创造 更多的价值。 无论大到整个社会还是小到具体的人,复用总能使我们趋乐避苦,从未知走向已知。 从野蛮走向文明,从必然走向自由。社会、国家、民族及个人的成功与否,在某种程度 上取决于复用能力的大小。 1 2 软件复用技术产生的历史背景 随着计算机应用的逐步扩大,软件需求量迅速增加,规模也日益增长,软件规模的快 速增长,带来了软件的复杂程度的增加和程序代码的几何级增长。即使是富有经验的程序 员,也难免对编写数万行的软件顾此失彼,其结果是:大型软件的开发费用经常超出预算, 完成时间也常常超过预期。庞大的软件开发和维护费用,加上不可避免的软件质量下降, 对计算机应用的继续扩大构成巨大的威胁。面对这种严峻的形势,软件界的有识之士发出 了“软件危机”的警告。1 9 6 8 年北大西洋公约组织( n 朋的) 的计算机科学家在前联邦 中北大学学位论文 德国召开的国际学术会议上第一次提出了“软件危机”( s o f t w a r ec r i s i s ) 。 概括来说,软件危机包含两方面问题1 2 1 : ( 1 ) 如何开发软件,以满足不断增长、同趋复杂的需求。 ( 2 ) 如何维护数量不断膨胀的软件产品。 具体地说,软件危机主要有以下表现: ( 1 ) 对软件开发成本和进度的估计不准确。 ( 2 ) 用户对“已完成”系统不满意的现象发生。 ( 3 ) 软件产品的质量不稳定。 ( 4 ) 软件的可维护程度低。 ( 5 ) 软件没有适当的文档资料。 ( 6 ) 软件的成本不断提高。 ( 7 ) 软件开发生产率的提高赶不上硬件的发展和人们需求的增长。 针对日趋复杂的软件需求的挑战,软件业界发展出了软件复用技术。作为针对“软件 危机”的最佳对策,软件复用技术已经引起人们的普遍关注。 1 3 软件复用技术概述 可复用性是人类解决问题时普遍使用的一个概念,比如说机械行业的螺钉生产。螺钉 一般是在专业制造螺钉的标准件机械工厂中生产的,而且该类机械工厂本身并不需要生产 出来的所有螺钉,生产的最主要目的是为了将螺钉销售给其他机械行业的机器制造企业用 来装配机器。当然机械行业比软件行业成熟得多,而且生产软件产品过程和工艺要比生产 螺钉的过程和】:艺复杂的多,但这恰恰推是我们用成熟的、分工专业的机械行业的经验来 思考目前软件行业的作坊式的生产流程的理由,几个世纪前的人们正是在手工作坊晕加工 这些机械零件的。目前的软件行业状况是一方面有大量的软件需要开发和维护,软件危机 依然严重存在,另一方面是有大量的重复工作存在,例如美国普渡大学1 9 9 1 年的一项调 查报告发现,该校图书管理系统的5 0 多个分类程序中,重复实现同一个算法的有十几个。 现在越来越多的人已认识到,解决软件危机一个重要途径是采用软件复用技术。 2 中北大学学位论文 1 3 1 软件复用技术的定义 目前对于软件复用还没有一个形式化的定义,许多研究人员从各自不同角度对软件复 用这个概念作了说明。b i g g e r s t a f f 和r i t c h e r 认为软件复用( s o f t w a r er e u s e ) 是在新的开发 项目中使用以前已有的概念和对象。t r a c z 对软件复用定义是:复用特别为复用目的而设 计的软件的过程,这个定义认为软件复用具有事先性,而把使用不是特别为复用目的的设 计的软件称为软件挽救l 引,把在多个应用中使用相同的构件称作软件复用,不区分软件复 用和软件挽救之间的区别。本文认为:软件复用是将已有的软件及其有效成分用于构造新 的软件或系统。它不仅是对软件程序的复用,还包括对软件生产过程中其它劳动成果的复 用,如项目计划书、可行性报告、需求分析、概要设计、详细设计、编码( 源程序) 、测试 用例、文档与使用手册等等。 1 3 2 软件复用技术研究历史和现状 软件复用并不是一个新的概念早在1 9 6 8 年在前联邦德国举行的n a t o 软件工程会 议上,d o u g hm c l l r o y 在其论文“m a s sp r o d u c e ds o f t w a r ec o m p o n e n t s ”中就提出了软件 复用的概念,希望通过代码复用达到软件开发的大规模生产,m c l l r o y 设想构件可根据它 们的通用型、性能、应用平台等进行分类,使复杂的软件系统开发可以像硬件的设计一样, 通过组合标准的构件得到。值得注意的是,当时m c l l r o y 正在b e l l 实验室工作,此后不久 u n i x 在b e l l 实验室开发成功,u n i x 中的s h e l l 语言和管道组合方法可以说是对m c l l r o y 提出的复用思想的一种体现。此后十年里,有关软件复用的研究并没有取得很大进展,直 到1 9 7 9 年l a n e f g a n 发表论文,对其在r g h e nm i s s i l ed i v i s i o n 的一项软件复用的项目研 究进行总结,才使得有关软件复用的研究重新引起人们的注意,l a n e f g a n 报告称,他们 分析了5 0 0 0 个c o b o l 源程序,发现在设计和代码中有6 0 的冗余,因此可以标准化并 被复用。他们还发现大部分的商业应用系统的逻辑结构或设计模式属于编辑、修改、报 表等这些类型,通过对这些模块的重新设计、标准化等,在c o b o l 商业应用程序中获得 了1 5 8 5 的复用率。 1 9 8 3 年,由n t 赞助,t e db i g g e r s t a f f 和a l a np e r l i s 在美国的n e w p o r t 组织了第一 次有关软件复用的研讨会,随后在1 9 8 4 年和1 9 8 7 年,国际上权威的计算机杂志t e e e 3 中北大学学位论文 t r a n s a c t i o n so ns o f t w a r ee n g i n e e r i n g 和i e e es o f t w a r e 分别出版了有关软件复用的专辑, 1 9 9 1 年第一届软件复用国际研讨会( 1 w s ) 在德国的多特蒙德举行,第二届i w s r 于1 9 9 3 年在意大利的l u c c a 举行,从1 9 9 4 年的第三届开始,改称软件复用国际会议。美国国防 部的s t a r s ( s o f t w a r et e c h n o l o g y f o ra d a p t a b l ea n dr e l i a b l es y s t e m s ) 计划是较早的一 个由政府资助的有关软件复用研究项目。s t a r s 的目标是在大幅度提高系统可靠性和可 适应性的同时提高软件生产率,虽然该计划的目标是要构造一个软件开发支撑环境,但计 划的重点之一是软件复用技术1 4 j 。 e s f ( e u r e k as o f t w a r ef a c t o r y ) 是欧洲在软件复用方面的一个研究项目,该项目玎始 于1 9 8 6 年9 月,主要目标是提供软件复用的工具支持。欧洲的e p r i t ( e u r o p e a n p r o g r a m f o rr e s e a r c hi ni n f o r m a t i o nt e c h n o l o g y ) 是开始于1 9 8 4 年的一个十年研究计划,其中的两 个重点项目p c t e ( p o r t a b l ec o m m o nt o o l sa n de n v i r o n m e n t ) 和g r a s p i n 都支持复用,另 一个项目r e b o o t ( r e u s eb a s e do no b j e c t o r i e n tt e c h n i q u e s ) 通过面向对象的方法来支 持复用。 国内的相关研究也较多,如青鸟构件库管理系统( j b c l m s ) 是北京大学软件工程研 究所在杨芙清院士领导下的研究成果,它的目标是致力于软件复用,以构件作为软件复用 的基本单位,提供一种有效的管理和检索构件的工具。 j b c l m s 作为企业级的构件管理工具,可以管理软件丌发过程中的不同阶段( 分析、 设计、编码、测试等) 、不同形态( 如分析设计文档、源代码、二进制代码、测试报告等) 、 不同表示( 如文本、图形等) 的构件。提供多种检索途径,以便于快速检索所需构件。 据估计,到2 0 0 6 年至少7 5 的新应用程序将会由构筑模块( b u i l d i n gb l o c k ) 构成, 这些构筑模块( 如构件和应用程序框架) 加快了产品的开发速度和企业的应变能力。以设 计模式、框架和商业构件形势出现的构件可以通过复用显著的提升开发品质和生产力,复 用反过来也可以显著的降低成本、降低软件开发风险和缩短软件开发周期。未来应用程序 的开发依存于一+ 个开放的便于构件选择和装配的综合体系结构。构件技术正被许多国家的 政府部门所青睐,认为是软件产业的发展方向而大力支持。美国总统信息顾问委员会向美 国总统提出构建“美国国家级构件库”的建议。美国空军电子系统中心与美国航空航天 局合作建立了“可复用防务软件的中央档案库”项目,以促进国防项目中的软件复用。 中国信息产业部也做出构建“中国国家级构件库”的决定。 4 中北大学学位论文 近几年,国内外软件复用技术的研究取得了长足的发展,这主要表现在1 5 1 : ( 1 ) 世界上流行的软件开发工具( 如:v i s u a lc + + 、v i s u a lb a s i c 、d e l p h i 等) 都建立 了基于本系统的类库、构件、模板。a c t i v e x 控件可跨系统使用。 ( 2 ) 统一建模语言( u m l ) 的产生及推广,为在软件生命周期的各个阶段实现复用提 供了基础及统一标准。 ( 3 ) 产生了基于u m l 语言的c a s e 工具。如s p a r xs y s t e m s 公司的e n t e r p r i s e a r c h i t e c t ( e a ) 、i b m 公司的r a t i o n a lr o s e 和b o r l a n d 公司的t o g e t h e r 等,它们可以根据 用户给出的u m l 图符( 系统分析模型) 自动生成代码框架。 ( 4 ) 在设计模式及逆工程领域也出现了很多c a s e 工具。 1 3 3 软件复用技术的分类 软件复用按抽象程度的高低,可以划分为如下的复用级别1 6 1 : ( 1 ) 代码的复用 包括目标代码和源代码的复用。其中目标代码的复用级别最低。历史也最久。当前 大部分编程语言的运行支持系统都提供了连接( l i n k ) 、绑定( b i n d i n g ) 等功能来支持这种 复用。源代码的复用级别略高于目标代码的复用,程序员在编程时把一些想复用的代码段 复制到自己的程序中,但这样往往会产生一些新旧代码不匹配的错误。大规模地实现源程 序的复用只有依靠含有大量可复用构件的构件库。如“对象链接及嵌入”( o l e ) 技术,既 支持在源程序级定义构件并用以构造新的系统,又使这些构件在目标代码的级别上仍然是 一些独立的可复用构件,能够在运行时被灵活的得新组合为各种不同的应用。 ( 2 ) 设计的复用 设计结果比源程序的抽象级别更高,因此它的复用受实现环境的影响较少,从而使可 复用构件被复用的机会更多。并且所需的修改更少。这种复用有三种途径,第一种途径是 从现有系统的设计结果中提取一些可复用的设计构件,并把这些构件应用予新系统的设 计;第二种途径是把一个现有系统的全部设计文档在新的软硬件平台上重新实现,也就是 把一个设计运用于多个具体的实现:第三种途径是独立于任何具体的应用。有计划地开发 一些可复用的设计构件。 ( 3 ) 分析的复用 5 中北大学学位论文 这是比设计结果更高级别的复用,可复用的分析构件是针对问题域的某些事物或某些 问题的抽象程度更高的解法,受设计技术及实现条件的影响很少,所以可复用的机会更大。 复用的途径也有三种,第一种途径是现有系统的分析结果中提取可复用构件用于新系统的 分析:第二种途径是用一份完整的分折文档作输入产生针对不同软硬件平台和其它实现条 件的多项设计;第三种途径是独立于具体应用,专门开发一些可复用的分析构件。 ( 4 ) 测试信息的复用 主要包括测试用例的复用和测试过程信息的复用。前者是把一个软件的测试用例在 新的软件测试中使用,或者在软件修改时在新的一轮测试中使用。后者是在测试过程中通 过软件工具自动地记录测试的过程信息,包括测试员的每个操作、输入参数、测试用例 及运行环境等一切信息。这种复用的级别,不便和分析、设计、代码的复用级别作准确 的比较,因为被复用的不是同一事物的不同抽象层次,而是另一种信息,但从这些信息的 形态看,大体处于与程序代码相当的级别。 从对复用产品的了解程度和复用方式看,可以将复用分为【7 1 : ( 1 ) 黑盒复用 黑盒复用指对已有产品或构件不需作任何修改,直接进行复用,这是理想的复用方式。 它主要基于二进制代码的复用,包括可执行程序的复用和基于库( 包括动态链接库和静态 库) 的复用。 ( 2 ) 白盒复用 白盒复用指根据用户需求对已有产品进行适应性修改后才。可使用。白盒复用一般为源 代码级的复用,以及相应的测试用例、文档等的复用。 另外按复用方法分,软件复用可分为组合式复用和生成式复用。按照软件复用所应用 的领域范围,软件复用可以分为横向复用和纵向复用。 1 3 3 1 库函数 库函数是很早的软件复用技术。很多编程语言为了增强自身的功能,都提供了大量的 库函数。对于库函数的使用者,他只要知道函数的名称,返回值的类型,函数参数和函数 功能就可以对其进行调用。 1 3 3 2 面向对象技术 面向对象技术通过方法、消息、类、继承、封装和实例等机制构造软件系统,并为 6 中北大学学位论文 软件复用提供强有力的支持。与函数库对应,很多面向对象语言为应用程序开发者提供了 易于使用的类库,如v c + + 中的m f c 、d e l p h i 中的v c l j a v a 的j d k 。 面向对象( 0 0 ) 的软件开发模式作为针对“软件危机”的对策,0 0 的实际发展却 是始于1 9 6 6 年。当时k i s t e nn i g g a r d 和o l ej o h a nd a h l 开发了具有更高级抽象机制的 s i m u l a 语割羽。s i m u l a 提供了比子程序更高一级的抽象和封装,为仿真一个实际问题, 引入了数据抽象和类的概念。7 0 年代初期,p a l oa l t o 研究中心( p a r c ) 开发出s m a l l t a l k 语言。1 9 7 2 年p a r c 发布了s m a l l t a l k 的第一个版本。大约在此时,“面向对象”这一术 语f 式确定。s m a l l t a l k 被认为是第一个真正面向对象的语言。面向对象的应用领域也被 进一步拓宽,对象不再仅仅与名词相联系,还包括事件和过程。 面向对象程序设计朝着人们期望的目标i ;i 进了一大步。但是,却无法解决下列问题, 因而面向对象技术潜在的优势未能充分发挥出来。 ( 1 ) o o p ( o 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 l ) 和选用 不同类库开发的应用程序很难进行集成。 ( 2 ) 对于运行时的系统未说,不同应用程序中的软件对象即使在同一进程空间也不能 通信,更不要说跨越进程空间和网络边界进行通信。 ( 3 ) 如果对一个对象的实现部分做了修改,需重新编译相关的模块,并在网络坏境下 重新安装各个子系统,这在实际应用中是不现实的。 在面向对象程序设计给解决软件危机带来一丝曙光之时,上述问题被摆在软件开发的 面前,软件开发仍处于高风险状态。此类难题要求软件实现跨空间、跨时间、跨设备、 跨用户的共享,导致软件在规模、复杂度、功能上的极大增长,迫使计算机软件要向异构 协同工作、各层次上集成、可反复复用的工业化大生产的道路上前进。 1 3 3 3 构件 从抽象程度来看,面向对象技术已达到了类级复用( 代码复用) ,它以类为封装的单 位。这样的复用粒度还太小,不足以解决异构互操作和效率更高的复用。软件构件 ( s o f t w a r ec o m p o n e n t ) ,也即构 件( c o m p o n e n t ) 将抽象的程度提到一个更高的层次,它是 对一组类的组合进行封装,并代表完成一个或多个功能的特定服务,也为用户提供了多个 接i s l 。整个构件隐藏了具体的实现,只用接1 2 1 提供服务。这样,在不同层次上,构件均可 7 中北大学学位论文 以将底层的多个逻辑组合成高层次上的粒度更大的新构件,甚至直接封装到一个系统,使 模块的复用从代码级、对象级、架构级到系统级都可能实现,从而使软件像硬件一样,能 任意装配定制而成的梦想得以实现。 1 3 3 4 中间件 中间件( 通用的构件标准) 是一种独立的系统软件或服务程序,是位于平台( 硬件和 操作系统) 和应用之问的通用服务。中间件在操作系统、网络和数据库之上,应用软件之 下,其主要功能是帮助用户灵活、高效地开发和集成复杂的应用软件。这些服务具有标准 的程序接口和协议,针对不同的操作系统和硬件平台,它们可以有符合接口和协议规范的 多种实现。因此中间件是类软件,而非一种软件。中间件不仅仅实现互连,还要实现 应用之间的互操作。中间件是基于分布式处理的软件,并特别强调了网络通讯功能一j 。 1 3 3 5 库函数、面对对象和构件的比较 在库函数、面对对象和软件构件三种软件复用技术中,库函数和面向对象技术虽能实 现软件一定程度上的复用,但是出于它们是基于代码的、原始的、低级别的软件复用,不 能很好的支持对系统更新和替换功能,不能彻底解决软件危机,而构件技术属于大粒度的 软件复用,使得软件体系结构可以在各个层次上支持软件复用,可随时升级软件系统中的 某些构件而不影响整个软件系统的运行,这样,软件产品就可以从软件工厂中生产出来, 从而彻底解决软件危机。 1 3 3 6 中问件与构件的区别 中闻件,本质上是对分布式应用的抽象,它抛开了与应用相关的业务逻辑细节,保留 了典型的分布交互模式的关键特征。经过抽象,将纷繁复杂的分布式系统经过提炼和必要 的隔离后,以统一的层面形式呈现给应用。应用在中间件提供的环境中可以更好地集中予 业务逻辑,并以构件化的形式存在,最终自然而然地在异构环境中实现良好的协同工作。 构件与中间件是不同的概念。中间件的目的是为了更好的达到基于构件的复用,消除构件 对处理平台和开发语言的依赖。 构件作为软件复用的最小单位,所包括的范围取决于构件设计及实现时抽象的功能范 围。理想状况下,整个系统由若干个构件组合而成,构件和构件之间的联系方式通过接口 定义。中间件则是对多层结构中间那个剖面中符合一定规范构件集合的通称,换言之,中 间件不是物理上的存在,而是一系列构件的逻辑组合。而中间件本身优劣取决于构成这个 8 中北大学学位论文 中间件剖面的构件功能、组合方式等因素,最终将中间件变成一个较高层次的大构件,也 就是说把中间件整个剖面上的构件以及之间的联系看成一个构件,只暴露出若干接口让其 他构件来连接。 1 3 4 软件复用技术的优点 采用软件复用技术有如下优点1 1 0 1 : ( 1 ) 软件复用能够提高软件生产率,从而减少开发代价。用可复用的构件构造系统还 可以提高系统的性能和可靠性,因为可复用构件经过了高度的优化,并且在实践中经受过 考验。 ( 2 ) 软件复用能够减少系统的维护代价。由于使用经过检验的构件,减少了可能的错 误,同时软件中需要维护的部分也减少了。例如,要对多个具有公共图形用户界面的系统 进行维护时,对界面的修改只需要一次,而不是在每个系统中分别进行修改。 ( 3 ) 软件复用能够提高系统间的互操作性。通过使用统一的接口,系统将更为有效地 实现与其他系统之间的互操作性。例如,若多个通讯系统都采用同一个软件包来实现x 2 5 协议,那么它们之闻的交互将更为方便。 ( 4 ) 软件复用能够支持快速原型设计,利用可复用构件和构架可以快速有效地构造出 应用程序的原型,以获得用户对系统功能的反馈。 ( 5 ) 软件复用还能够减少培训开销。如同硬件工程师使用相同的集成电路块设计不同 类型的系统一样,软件工程师也将使用一个可复用构件库来构造系统,而其中的构件都是 他们所熟悉和精通的。 i b m 的r e u s e t e c h n o l o g ys u p p o r t c e n t e r 采用软件复用技术后取得较好的效果,一些 项目可节约数百万美元;东芝公司在其电力系统应用中,把软件复用率从1 9 7 9 年的1 3 提高到1 9 8 5 年的4 8 ,生产率提高了5 7 :瑞典的n o b e l t e c hs y s t e m s 决定把嵌入式 的舰船应用系统臼勺歼发作为一个系列而不是单独应用来开发,结果获得了7 0 的复用率。 生产率提高了一借,仅在一个系统中节省的费用就达2 0 0 0 万美元。 采用软件复用技术对软件质量也有很大的提高,在l e n z 等人的报告称在功能测试时, 使用复用技术的每行平均错误数比不使用复用技术的少9 倍,在部件和系统测试时大约要 少4 5 倍。s c h a c h 认为软件复用除了能降低开发费用外,也能大幅度降低维护费用,在维 9 中北大学学位论文 护阶段节省的费用几乎是开发阶段的两倍。 1 3 5 软件复用的根本因难 软件复用各方面的困难,无论是技术问题还是非技术问题,都影响着软件复用的广泛 实行。这些困难主要表现在f 1 1 f : ( 1 ) 技术因素 构件与应用系统之间的差异。一些开发者开发的构件,要做到被另一些人开发的系 统中使用正好合适,从内容到对外接口都恰好相符。或者作很少的修改,这不是一件简单 的事;构件要达到一定的数量,才能支持有效的复用,而大量构件的获碍需要有很高的投 入和长期的积累;发现合用构件很困难,当构件达到较大的数量时,使用者要从中找到一 个自己想要的构件,并断定它确实是自己需要的,不是一件轻而易举的事:基于复用的软 件开发方法和软件过程是一个新的研究实践领域,需要一些新的理论、技术及支持环境。 ( 2 ) 人的因素 软件开发是一种创造性工作,长期从事这个行业的人们形成了一种职业习惯:喜欢自 己仓q 造而不喜欢使用别人的东西,特别是当要对别人开发的软件作些修改再使用时,他 们常常喜欢自己另写一个。 ( 3 ) 管理因素 在软件生产的管理中,沿习了一些与复用的目标很不协调的制度与政策如计算工作 量时,对复用的部分打很大的折扣,甚至不算工作量:另外,不是在项目开始时自觉地向 着造就可复用构件的方向努力。而是在它完成之后,看看是否能从中找到一些可复用构件。 这些弊端妨碍了复用水平的提高和复用规模的扩大,甚至会挫伤致力于复用的人员的积极 性。 ( 4 ) 教育因素 在软件科学技术的教育与培训中,缺乏关于软件复用的内容,很少有这方面的专门教 材及课程,即使在其它教材及课程中提到软件复用,其篇幅及内容也相当薄弱。 ( 5 ) 法律因素 在法律上还存在些问题,例如,一个可复用构件在某个应用系统中出现了错误,而 构件的开发者和应用系统的开发者不是一个厂商,那么责任应该由准负? 此外,在版权、 l o 中北大学学位论文 政府政策等方面也存在一些悬而未决的问题。 另外,软件产品是一种精神产品,它的产生几乎完全是人脑思维的结果,它的价值, 也几乎完全在于其中所凝结的思想;它的物质载体的制造过程与价值含量都是微不足道 的。物质产品的生产受到人类制造能力的限制,现有的一切物质产品的复杂性都没有超过 这种限度,软件却没有这种限制,只要人的大脑能想到的问题。都可能要求软件去解决, 人脑所能思考的问题的复杂性,远远超出了人类能制造的物质产品的复杂性,因而使软件 的复用更为困难。 1 4 本文研究内容 木文的第一章归纳总结了软件复用技术的产生背景、软件复用技术概述,第二章简单 介绍了软件复用的关键技术,然后在第三章系统阐述构件的基础上,第四章论述了基于构 件软件开发的方法,第五章则结合地下综合管线信息系统,针对地下管线领域的特点,详 细说明了基于构件的软件开发的过程。最后是对全文的总结及对以后进一步研究工作的展 望。 中北大学学位论文 2 软件复用的关键技术概述 实现软件复用的关键因素( 技术和非技术困素) 主要包括:软构件技术、领域工程、 软件构架、软件再工程、开放系统、软件过程、c a s e 技术等,以及各种非技术因素。实 现软件复用的各种技术因素和非技术因素是互相联系的,它们结合在一起,共同影响软件 复用的实现【1 2 】,如图2 1 所示。 2 1 软件构件技术 刚2 1 软件复川实现的关键技术 软件构件( s o f t w a r e c o m p o n e n t ) 技术是支持软件复用的核心技术。软件构件,也即 构件( c o m p o n e n t ) 将在下一章中重点讲述。 2 2 领域工程 领域工程是为一组相似或相近系统的应用工程建立基本能力和必备基础的过程它覆 盖了建立可复用软构件的所有活动。领域工程包括三个主要的阶段:领域分析、领域设计 以及领域实现。 1 2 中北大学学位论文 2 3 软件体系结构 软件体系结构( s o f t w a r ea r c h i t e c t u r e ) 也称为架构,它是对软件系统的系统组织,是对 构成系统的构件的接口、行为模式、协作关系等体系问题的决策总和。它不仅涉及到结 构与行为,而且还涉及到系统的使用、功能、性能、适应性、重用性、可理解性、经济 性和技术约束的权衡和美学考虑。 研究软件体系结构有利于发现不同系统的高层共性,保证灵活和正确的系统设计,对 系统的整体结构和全局属性进行规约、分析、验证和管理。将构架作为系统构造和演化 的基础,可以实现大规模、系统化的软件复用。 2 4 软件再工程 软件复用中的一些问题与现有系统密切相关,如:现有软件系统如何适应当前技术的 发展及需求的变化,采用更易于理解的、适应变化的、可复用的系统软件构架井提炼出可 复用的构件;现存大量的遗产软件系统由于技术的发展正逐渐退出使用,如何对这些系 统进行挖掘和整理,得到有用的构件:己有的构件随着时间的流逝会逐渐变得不可使用, 如何对它们进行维护,以延长其生命期等等。软件再工程正是解决这些问题的主要技术手 段。 2 5 开放系统技术 开放系统技术为软件复用提供了良好的支持。特别是分布式对象技术使得符合接口标 准的构件可以方便地以“即插即用”的方式组装到系统中,实现黑盒复用。这样,在符 合接口标准的前提下,构件就可以独立地进行开发,从而形成独立的构件镣造业。 2 6 软件过程 基于构件复用的软件开发过程和传统的一切从头开始的软件开发过程有着实质性的 不同,所以探讨适应于软件复用的软件过程成为迫切的问题 1 3 中北大学学位论文 2 7 c a s e 技术 c a s e 技术对软件工程的很多方面都可以提供有力的自动或半自动支持。软件复用同 样需要c a s e 技术的支持。c a s e 技术中与软件复用相关的主要研究内容包括:在面向复 用的软件开发( d e v e l o p m e n tf o rr e u s e ) 中,可复用构件的抽取、描述、分类和存储;在基 于复用的软件开发( d e v e l o p m e n t w i t hr e u s e ) q q ,可复用构件的检索、提取组装、可复用构 件的度最等等。 中北大学学位论文 3 构件 软件构件技术( s o f t w a r ec o m p o n e n tt e c h n o l o g y ) 是支持基于构件的软件复用的核 心技术。基于构件的软件开发是当前软件开发的发展趋势,利用构件组装成为一个系统与 从头到尾写代码“写”成一个系统相比,它的高效率是可想而知的,但其效率的发挥必须 有大量的“构件群”来支持,而这些“构件群”要想在具体的应用领域中发挥作用,必 须要有一个高效的构件库管理这些种类繁多的构件。 3 1 构件的定义 1 9 9 8 年,l a n g r a h a m 给出的构件定义如下:构件( c o m p o n e n t ) 是指一个对象( 接 口规范或二进制代码) ,它被用于复用,接口被明确定义。本文认为构件的定义应该分为 狭义的和广义的。狭义的定义认为构件是由c o m + 、f a b 、c o r b a 提供的二进制代码单 元。而广义的定义认为较少关注它的具体组成的= 进制代码、类或者包【】= ;l 。 可复用构件应具备的属性: ( 1 ) 有用性。构件必须提供有用的功能。 ( 2 ) 可用性。构件必须易于理解和使用。 ( 3 ) 质量。构件必须能正确工作。 ( 4 ) 适应性。构件应该应用在不同语境中装配。 ( 5 ) 移植性。构件应能在不同的运行平台上工作。 3 2 构件的分类 按照自顶向下设计、自底向上组装的思想可将构件分为四类:系统构件、组织构件、 分子构件和原予构件【1 5 】。 ( 1 ) 系统构件和组织构件 系统构件是指系统总体框架构件,类似于微机中的主扳。系统构件的开发必须在一定 规范下进行,这种规范类似于硬件中总线的概念,因此可称其为软件总线。软件总线规范 不仅是系统构件的开发规范,而且包括嵌入到系统构件中的子构件的开发规范。对每一应 1 5 中北大学学位论文 用领域一般需要开发一个系统构件,并将系统构件存放到系统构件库中,系统构件应主要 由软件制造商在一定的软件总线规范下开发。系统构件属于软件体系结构层次上的抽象, 属于最高层次上的软件复用抽象,因此其复用性最好。 组织构件是嵌入到系统构件中的子构件,类似于微机主板上的插板。一个或几个组织 构件可完成一个特定的任务。系统构件负责协调各个组织构件的工作,从而构成整个应用 系统。组织构件一般是一个已调试成功的软件子系统,它是按一定的软件总线规范开发的, 不同构件制造商开发的组织构件可兼容在一种系统构件下工作。随着加入软件总线规范的 构件制造商的增加,开发人员可选择的组织构件资源也会大大增加。每个系统构件对应一 个组织构件库。而所有系统构件所公用的组织构件构成公共组织构件库。如图形界面组织 构件库就是一种公用组织构件库。系统构件和组织构件一般都具有可继承性。通过系统构 件和组织构件这两类构件的合理组装,就可形成新的应用系统。 ( 2 ) 分子构件和原子构件 分子构件和原子构件是构成系统构件、组织构件的子构件,它们可类比于微机硬件结 构中的集成电路芯片( i c ) 。其中,分子构件又可复用原于构件,通过原子构件组装而成。 原予构件是最小粒度的构件,它不能通过复用方式构造,一般包括一些最基本的数掘结构 以及与相关算法封装在一起的基本类。系统构件和组织构件可复用分子构件、原子构件构 造自己,而分子构件和原子构件只能参与系统构件、组织构件的组装,但不参与最后新的 应用系统的组装。 从不同的角度出发,还可将构件分为如下几类: ( 1 ) 根据构件复用方式,分为黑厦构件和自匣构件。前者可以即插即用,后者须经 修改方可使用。 ( 2 ) 根据使用范围,分为通用构件和专用构件。 ( 3 ) 根据构件粒度大小,分为小、中、大型构件。小型构件包括窗口、按钮等基本 构件:中型构件包括录入、查询、插入、删除等功能构件:大型构件包括档寨管理、财 务管理等子系统级构件。 ( 4 ) 根据构件复用时状态,分为动态构件和静态构件。如o l e 和d l l f 禹于动态构件, 原代码属于静态构件;根据构件功能用途,分为系统构件、支撑构件和领域构件。系统构 件运行于整个构件集成环境和运行环境;支撑构件在构件集成环境和构件库管理中使用; 1 6 中北大学学位论文 领域构件则是为专用领域而开发的构件。 ( 5 ) 根据构件的来源,可将构件分为自开发构件和第三方构件。 3 3 构件的特点 构件具有以下几个特点【1 6 1 : ( 1 ) 自描述。构件必须能够识别其属性、存取方法和事件,这些信息可以使丌发环境 将第三方软件构件无缝地结合起来。 ( 2 ) 可定制。允许提供一个典型的图形方式环境,软件构件的属性只能通过控制面板 来设罱。 ( 3 ) 可集成。构件必须可以被编程语言直接控制。构件也可以和脚本语言或者与从代 码级访问构件的环境连接,这个特点使得构件可以在非可视化开发项目中使用。 ( 4 ) 连接机制。构件必须能产生事件或者具有让程序员从语义上实现相互连接的其他 机制。这意味着程序员可以很容易地向按钮添加代码,使点击按钮就可以影响其他构件的 动作。 采用构件软件不需要重新鳙泽,也不需要源代码并且不局限于某一种编程语菪。该过 程叫做二进制复用( b i n a r yr e u s e ) ,因为它是建立在接e l 而不是源代码级别的复用之上的。 虽然软件构件必须遵守一致的接口,但是它们的内部实现是完全自动的。因此,可以用过 程语言和蔼向对象语言创建构件。 构件可以用一个四元组
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 客户服务与沟通技巧测试卷及参考答案详解
- 建水中学期中考试试题及答案
- 2025党的纪律知识测试题及答案
- 2025年学党章党规知识竞赛题库及答案
- 创新科研项目申请书
- 部编版三年级道法下册第一单元摸底卷
- 2025年公共图书馆资源共享协议
- 老年人乐观心态
- 2025年工业自动化数据安全合同协议
- 2025年工业智能工厂租赁协议
- 职业健康体检报告
- 青年创新创业协会建设方案
- 高中与大学知识衔接
- 天津高考英语词汇3500
- GB/T 41247-2023电子商务直播售货质量管理规范
- GilAir-Plus高低流量空气采样泵操作规程和维护程序
- 培训2.0材料mncrm pcmtpm财务部分
- SB/T 11016-2013足部保健按摩服务规范
- GB/T 4062-2013三氧化二锑
- 科学出版社专著编写要求
- 江苏省南通市通州区川姜镇公开招考4名人力资源和社会保障基层公共服务平台工作人员【共500题附答案解析】模拟试卷
评论
0/150
提交评论