




已阅读5页,还剩59页未读, 继续免费阅读
(计算机软件与理论专业论文)构件化软件开发及聚合应用的研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
大连理工大学硕士学位论文 摘要 随着软件规模及复杂性的不断提高,如何提高软件的生产效率和质量以满足软件系 统不断增长、日趋复杂的需求,成为软件产业当前要解决的问题。而软件复用被认为是 提高软件生产效率和质量现实可行的途径。基于构件的复用是软件复用的主要形式,也 是软件复用的关键技术之一。随着i n t e r n e t 网络的发展普及,越来越多以构件为软件实 体的服务被部署在i n t e m e t 的各个节点上,允许第三方以聚合服务的方式来进行应用开 发,形成与直接复用构件实体不同的复用方式。 本文首先研究了构件技术、软件复用中的一些基本问题和相互关系,以及在i n t e m e t 环境下软件开发方法的变迁。接着以交通领域中已实现的典型应用为基础,采用面向特 征建模方法对互联网交通地理信息系统( w e b g i s t ) 进行建模,提取了w e b g i s t 中 的特征模型。然后,本文给出了一个w e b g i s t 总体架构原型,作为系统的开发蓝图; 在总体架构和特征模型指导下,采用相应的构件实现模型,设计并实现了w e b g i s t 中 的一些可复用构件,包括交通信息构件、电子地图、数据缓存、交通路网分析等。最后, 在w e b g i s - t 总体架构下,本文通过聚合这些构件提供的服务和i n t e m e t 上其它服务完 成了先进的交通信息服务系统中一些应用的开发。 本文的研究表明通过领域分析,建立服务的特征模型能够更好地对特定领域内变化 性需求进行封装、隔离和抽象,指导构件的设计与实现,提高构件复用性;软件架构能 够提供比构件更大粒度的复用,并且能够指导构件的部署与聚合;基于构件或服务的聚 合是一种自底向上的软件开发过程,它能够大幅度减少软件开发的重复工作,提高软件 开发效率;本文的研究对基于构件的软件开发和软件复用具有一定的借鉴意义,特别是 交通领域基于构件的软件开发。 关键词:软件构件;软件复用;服务聚合;互联网交通地理信息系统 大连理工大学硕士学位论文 r e s e a r c ho 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 ta n dm a s h u p a p p l i c a t i o n a b s t r a c t w i t l it h es o f t w a r es c a l e sc o n t i n u o u sg r o w i n ga n di t sm o r ea n dm o r ec o m p l e x i t y h o wt o i m p r o v et h ep r o d u c t i v i t yh a sb e c o m et h em o s tc r i t i c a lp o i n ti nt h es o f l t w a r ei n d u s t r y t h e r e f o r e ,s o f t w a r er e u s ew a sc o n s i d e r e da sap o s s i b l ei m p r o v e m e n t s of a r , c o m p o n e n t - b a s e ds o f t w a r er e u s es t i l lt a k e sal e a d i n gr o l e w i mt h ed e v e l o p m e n to fi n t e r n e t , m o r ea n dm o r ec o m p o n e n t - b e i n g - t h e e n t i t ys e r v i c e sa r ed e p l o y e dt os o m en o d e so ft h e i n t e m e t , m e a n w h i l eh a v i n ga l l o w e dt h et i l i r dp a r t i e sa b l et od e v e l o ps o f t w a r et h r o u g hs e r v i c e c o m b i n a t i o n ,a n dr e s u l t e dd i f f e r e n tr e u s i n gm e t h o df r o mt h ed i r e c tc o m p o n e n tr e u s e f i r s t l y ,t h i sp a p e rh a sab a s i cr e s e a r c ho nc o m p o n e n ta n ds o f t w a r er e u s et e c h n o l o g y , t h e ns t u d i e st h e i rr e l a t i o n s h i pa n da n a l y z e st h es o f t w a r ed e v e l o p i n ge v o l u t i o nu n d e ri n t e r n e t e n v i r o n m e n t ;s e c o n d l yb a s e do nc l a s s i c a la p p l i c a t i o ni nt r a n s p o r t a t i o n , t h i sp a p e ra p p l i e s f o d mt ob u i l dm o d e lf o rw e b g i s - t ,a n de x t r a c t ss o m ef e a t u r em o d e l sf r o mw e b g i s t ; c o n s e q u e n t l y w e p r o p o s e a g e n e r a l w e b g i s - ta r c h i t e c t u r e p r o t o t y p e a st h e s y s t e m - d e v e l o p i n gb l u e p r i n t i na d d i t i o n , u n d e rt h eg u i d a n c eo fg e n e r a la r c h i t e c t u r ea n d f e a t u r em o d e l ,w ed e s i g na n di m p l e m e n ts o m er e u s a b l ew e b g i s - tc o m p o n e n t s ,i n c l u d i n g t r a n s p o r t a t i o ni n f o r m a t i o nc o m p o n e n t ,e l e c t r o n i cm a p ,d a t ac a c h ea n dr o a d - n e t w o r ka n a l y s i s f i n a l l y t h i sp a p e ri m p l e m e n t ss o m es u b - s y s t e m so ft h ea t i sw i t i lac o m b i n a t i o no fs e r v i c e s f r o mb o t ht h ec o m p o n e n ta n do t h e ra r e a so f t h ei n t e r a c t a st h er e s u l t so ft h i sp a p e ri n d i c a t e ,t h r o u g ht h ed o m a i na n a l y s i s ,b u i l d i n gs p e c i f i c f e a t u r em o d e lc a l l e n c a p s u l a t e ,i s o l a t ea n da b s t r a c tt h ev a r i a b l er e q u i r e m e n t ,i n s t r u c tt h e c o m p o n e n td e s i g na n di m p l e m e n t a t i o n , a n de n h a n c et h ec o m p o n e n tr e u s i n ge x t e n t s o f t w a r e a r c h i t e c t a r ec a np r o v i d eh i g h e rg r a n u l a r i t yr e u s a b i l i t yt h a nc o m p o n e n t s ,a n dc a ni n s t r u c tt h e c o m p o n e n t sd e p l o y m e n ta n dc o m b i n a t i o n s o f t w a r eo rs e r v i c eb a s e dc o m b i n a t i o ni sa b o t t o m u pp r o c e s s ,i tr e d u c e st h er e p e t i t i v ew o r ka n dr a i s e ss o f t w a r ed e v e l o p m e n te f f i c i e n e y 1 1 ”r e s e a r c hi nt h i sp a p e rm a k e sas e l l s ef r o mt h ea n g l eo fc o m p o n e n t - b a s e ds o f t w a r e d e v e l o p m e n ta n ds o f t w a r er e u s e ,e s p e c i a l l yi nt h ec o n t e x to f t r a n s p o r t a t i o n k e yw o r d s :s o f t w a r ec o m p o n e n t ;s o f t w a r er e u s e ;s e r v i c ec o m b i n a t i o n ;w e b g l s - t 独创性说明 作者郑重声明:本硕士学位论文是我个人在导师指导下进行的研究工 作及取得研究成果。尽我所知,除了文中特别加以标注和致谢的地方外, 论文中不包含其他人已经发表或撰写的研究成果,也不包含为获得大连理 工大学或者其他单位的学位或证书所使用过的材料。与我一同工作的同志 对本研究所做的贡献均已在论文中做了明确的说明并表示了谢意。 作者签名:j 煎逸整日期:翻:! :2 大连理工大学硕士研究生学位论文 大连理工大学学位论文版权使用授权书 本学位论文作者及指导教师完全了解“大连理工大学硕士、博士学位论文版权使用 规定”,同意大连理工大学保留并向困家有关部门或机构送交学位论文的复印件和电子 版,允许论文被查阅和借阅。本人授权大连理工大学可以将本学位论文的全部或部分内 容编入有关数据摩进行检索,也可采用影印、缩印或扫描等复制手段保存和汇编学位论 文。 作者签名: 导师签名 i 互逸挺 兰1 2 年上月同 大连理工大学硕士学位论文 1 绪论 西方计算机界科学家把软件开发和维护过程中遇到的一系列严重问题统称为“软件 危机”。软件危机最早出现于六十年代末期,主要表现是:软件质量差,可靠性不能保 证;软件成本的增长难以控制,在成本预算内往往不能完成任务;软件开发进度不易控 制,周期延长;软件维护困难,维护人员和维护费用不断增加【1 捌。据美国国家标准和技 术研究院的一份报告显示,占据世界软件销售额8 5 的是大型的专用软件,而其开发的 失败率却高达7 0 。例如,i b m 公司开发的o s 3 6 0 系统,耗资数千万美元,花费五千 多人年,拖延了几年才交付使用,之后还不断发现错误。 如何才能提高软件生产效率? 如何保障软件产品质量? 如何减少重复劳动? 软件 的生产方式有待一次根本性的转变。众所周知,人类社会的生产方式从1 9 世纪的手工 式单件生产进化到后来的大工业生产,一个决定性的飞跃就是出现了标准化的零部件。 产品可由现成的零部件装配而成,从而使生产走向了规模化。那么,软件生产是否也能 脱离传统手工业的单件生产模式,转向建筑在标准化零部件基础上的高效率、高质量的 新型生产方式呢? 软件构件化( s o f t w a r ec o m p o n e n t ) 技术此时就应运而生,其目的是 彻底改变软件生产方式,从根本上提高软件生产的效率和质量,提高开发大型软件系统 尤其是商用系统的成功率。有了软件构件之后,应用开发人员就可以利用现成的软件构 件装配成适用于不同领域、功能各异的应用系统。并且,随着i n t e r n e t 和软件技术的发 展,有些构件在开发出来后被一次性部署在i n t e m e t 中,所有应用只需要能够连入r i n t e m e t ,就能集成和使用其提供的服务p l 。 1 1 研究的背景与意义 考察软件模型的发展可以发现,在高级语言出现以前,汇编语言( 机器语言) 是编 程的工具,软件模型的基本单元是指令,指令序列构成程序,其控制机制主要是顺序和 转移。那时,程序设计没有什么方法可以遵循,程序的好坏完全由程序员个人的经验和 能力所决定。 高级语言的问世,使得软件模型向人类的思维模式靠近了一步,人们可以直接使用 算术表达式来编程实现其科学和工程计算任务,这种基本计算单元抽象程度的提高不仅 改善了人们的编程效率,而且大大拓宽了计算机的应用领域;高级语言的发展,使得程 序员可以在一个更高的抽象层次上进行程序设计,从而提高了开发效率也提高了开发质 量。随着高级语言的出现和软件系统复杂度不断增大,到了2 0 世纪6 0 年代中期出现了 一些大型复杂的软件系统,这些大型复杂系统因为软件错误而引起的信息丢失、系统报 构件化软件开发及聚合应用的研究 废事件屡有发生。为此,到2 0 世纪6 0 年代末,人们开始注重对程序结构的研究,软件 工程的思想和概念也是这时候被提出的。在这个时期,荷兰的一位物理学家e w d i j k s t r a 采用了数学的解题方法,就是把软件开发看作数学求解,沿用数学上的枚举、 抽象、归纳、类比等思维方式,提出了一种称为结构化软件开发方法,应用于开发大型 软件系统时称为“结构化分析和结构化设计”。 结构化软件开发方法的出现,使得任意计算流程均可用顺序、循环和条件等三种基 本控制结构来描述,而函数( 过程) 等程序元素的出现又为信息隐蔽和封装提供了机制, 这样的软件模型不仅基本计算单元粒度增大,而且控制流程结构化。与非结构化设计、 编码相比,结构化方法设计、编码的最大特征是模块化,模块是软件功能的划分,模块 问是自顶向下,逐步细化的关系。根据软件需求分析方法的不同,结构化方法又可分为 面向数据流的和面向数据结构两大类软件开发方法: ( t ) 1 9 7 8 年,y o u r d o n e 和c o n s t a n t i n e l 提出了面向数据流的结构化软件开发方 法,1 9 7 9 年t o md em a r c 对此方法作进一步完善。 ( 2 ) 1 9 7 4 年w a m i e rjd 提出w a m i e r 的方法与1 9 7 5 年j a c k s o nma 提出j a c k s o n 的方法都是面向数据结构的结构化软件开发方法。 然而,由于结构化软件开发方法在分析阶段和设计阶段分别采用了数据流图和模块 结构图的不同表示,从分析到设计阶段必须经历这两种表示之间的转换,这种转换直接 导致了结构化方法难以在分析阶段和设计阶段之间平滑过渡。另外,结构化软件开发方 法没有给出确定系统实体和活动的准则;没有区分客观世界模型和软件系统模型,两者 之间不能直接映射,其结果是系统结构混乱、效率低,软件成份复用性差。 面向对象技术最早出现于6 0 年代的s i m u l a6 7 系统,并且在7 0 年代保罗阿托实验 室开发的s m a l l t a l k 系统中发展成熟。面向对象的软件开发方法是在8 0 年代得到迅速发 展,面向对象的思想方法越来越接近人们的思维方式,把对于复杂系统的认识归结为对 一批对象及其关系的认识,使用户以更自然、更简便的方式进行软件开发。面向对象的 基本思想可以归纳为以下四点: ( 1 ) 客观世界的任何事物都是对象( o b j e c t ) ,它们都有一些静态属性( 相应于数 据结构) ,也都有一些有关的操作( 相应于程序模块) 。作为一个整体,对外不必公开 这些属性与操作,这称为“封装性”( e n c a p s u l a t i o n ) 。 ( 2 ) 对象之间有抽象与具体、群体与个体、整体与部分等几种关系,这些关系构 成对象的网络结构。 ( 3 ) 较大的对象所具有的性质自然地成为它的子类的性质,不必加以说明和规定, 这称为“继承性”( i n h e r i t a n c e ) 。 大连理工大学硕士学位论文 ( 4 ) 对象之间可以互相传送“消息”( m e s s a g e ) 并进行联系,一个消息可以传送 一个参数,也可以使一个对象开始某个操作。 利用面向对象方法设计程序,实际上是利用抽象方法定义各种各样的“类”,通过 将“类”实例化为对象和通过在对象之间传递消息来完成。其中,通过模块和封装将对 象的定义和对象的实现分开,通过继承体现类与类之间的关系,以及由此带来的动态链 接性和并行性,从而构成面向对象的基本特征。 虽然,面向对象方法解决了结构化方法客观世界模型与软件系统模型不一致的问 题,也被大家所接受,成为当前一种主流技术,但是面向对象方法也有一些弱点: ( 1 ) 模型和概念尚未统一,不同的人对系统和对象的理解不一致,导致了各种对 象语言均有很大差异,且语言自身与纯面向对象理论有许多不一致的地方,就难以形成 统一的标准和开发规范; ( 2 ) 技术要求较高,一般技术人员( 软件开发人员) 很难学会掌握,技术人员需 要掌握各种技术细节,包括了解要使用的类的细节。 ( 3 ) 复用层次低、复用粒度小,面向对象方法强调对象一级的设计,因此其可复 用成分主要是在对象层,更高层次的可复用成分相对较少。 ( 4 ) 面向对象的一些基础机制对复用性是有害的或是必须小心使用的【4 】。面向对象 方法中一个很重要的机制是继承机制,由于父类的实现会通过继承机制直接影响到所有 下层的子类,父类的实现可能不适合复用子类于不同的问题领域,换句话说,继承机制 对类树的制作者而言是一种方便,只是对类的使用者而言却是一种困扰。 为进一步提高软件开发的效率、质量,解决“软件危机”,人们在面向对象方法基 础上提出了构件技术,这种思想来自汽车制造业和建筑业等传统行业,采用流水线生产 方式的预制件装配方式,它的预制件要求并不苛刻,只要能重用就可以了,所以称为构 件。在软件生产流水线上各阶段,可以由不同专业人员去完成不同的工作,社会有了分 工,效率和质量都有了保证,这种开发技术称为“基于构件的软件开发方法”。在软件 技术中,通过封装一定的功能来提供第三方构件,构件本身不需编程改动就能被使用或 重用。构件通常比传统的对象具有更大的粒度,这种特性使得构件能够复合多个对象的 功能,协同对外提供服务。基于构件的软件开发方法的实际意义可以归纳为以下几点: ( 1 ) 基于构件的开发构建在过去的基础上。作为一种方法,基于构件的开发是在 过去所有最成功的技术、原则和最佳实践上构建的,从而给出大规模软件制造和支持产 业化的软件开发理论和实践。基于构件的开发不仅包含以前所有方法,包括面向对象和 分布式对象方法的优点,而且还突破了这些方法的局限性。 构件化软件开发及聚合应用的研究 ( 2 ) 基于构件的开发能够实现部件的自治开发。系统将以一组准自治可部署的构 件构成,从而支持高层的并发开发、测试和部署。 ( 3 ) 基于构件的开发能够控制系统维护的负责度。围绕构件组织整个开发过程, 是降低所有开发阶段复杂性和成本的有力机制。这种降低在系统演化中是特别明显的, 因为很多系统修改和更正只会影响一个构件。若采用传统方法构建的系统,修改可能从 概念上只影响一个模块,但实际上一个小的修改通常会影响到多个模块。 ( 4 ) 基于构件的开发能够缩短系统开发所需的时间。基于构件的开发很容易通过 现有的构件组装新的系统,可以缩短系统开发周期。尤其是运用构件框架和构件的模板, 进行大粒度的复用时。 ( 5 ) 基于构件的开发能够增加软件复用度。基于构件的开发是组装已有的构件形 成新的系统,是对已有的软件部件进行复用。 随着网络的发展,越来越多的应用建立在网络这样一个开放、异构的环境下。构件 技术也随之发展,出现了分布式构件技术;与传统的计算服务模式不同,分布式构件之 间的关系是对称的,不同构件之间可以位置透明、语言独立和平台独立地互相发送消息、 请求和提供服务。随着网络进一步发展到i n t e m e t ,以软件构件技术支持的软件实体以 开放、自主的方式存在于i n t e r a c t 的各个节点之上,对外提供各种服务( 功能) 1 5 。通 过聚合分布在各处的服务和数据来进行应用的开发是一种新的方式。 1 2 国内外研究现状 基于构件的软件开发技术作为种解决“软件危机”的有效途径,在国内外都有相 应的研究和应用。 在国外,美国、日本等国家相继提出,软件构件技术是提升软件开发效率、降低软 件开发成本的关键技术之一,并提出国家应该建立国家级的软件构件库。美国军方与政 府资助的项目中,已经建立了若干构件库系统,如c a r d s 、a s s e r t 、d s r s 等。由 d a r p a 发起,由美国军方、s e i 和m i t r e 支持的s t a r s 项目在此基础上考虑了开放 式体系结构的构件库之间共享资源和无缝互操作的问题,并于1 9 9 2 年提交了a l o a f v e r s i o n1 2 版本【“。北大西洋公约组织( n a t o ) 参与国和承包商制订了软件复用的标准 包括“可复用构件标准”、“可复用构件库标准”、“软件复用过程标准”,制定这些 标准的目标是供n a t o 及其参与国的项目管理部门使用它们来建立复用计划需求和向 承包商提供复用计划向导,承包商则将它们用于特定项目的开发实践1 7 1 。 国内的相关研究也较多,如青鸟构件管理系统( j b c l m s ) 是北京大学软件工程研 究所在杨芙清院士领导下的研究成果,它的目标是致力于软件复用,以构件作为软件复 大连理工大学硕士学位论文 用的基本单位,提供一种有效的管理和检索构件的工具。并在一些领域开发了一系列的 构件,并且将这些构件应用于具体的系统中,例如,桂林百货大楼、北京前门商场等 p o s 系统。上海构件库于2 0 0 2 年初筹建,是国家8 6 3 计划和上海市科委支助的重大专 项,也是8 6 3 上海软件基地的主要技术支撑之一,由上海软件中心、复旦大学、北京大 学等科研院所及在构件开发方法方面有相当实践的软件公司共同承建,主要提供软件构 件、构件库、构件相关技术与方法的共享、交流和推广传播等,旨在促进软件知识共享, 减少产业范围内低层次的重复劳动。据上海构件库的4 家示范企业统计,如果自己设计 开发系统,一般要1 8 个月后才能收回成本,通过上海构件库的平台服务,不到1 年就 收回了成本。例如,上海普元公司要竟标房地产管理系统,软件制作页面多达2 0 0 0 个, 以往至少要做半年时间,如今5 个软件设计人员通过上海构件库的平台服务仅用5 天就 完成了。随着i n t e r a c t 的发展,成为新一代软件的运行平台,为了应对i n t e r n e t 开发的异 构、开放、动态和多变的特征,北京大学杨芙清院士等人进一步扩展了软件构件技术, 提出新的软件形态:网构软件( i n t e m e t w a r e ) 限9 】。 在国内外的研究与应用中,软件构件技术都是作为软件复用研究的焦点,被视为是 成功实现软件复用的关键因素之一。同时,在分布式对象领域c o r b a 、c o m d c o m 、 e j b 等规范的制订和相关支持产品的出现,为软件构件的实现提供了技术支持。软件复 用技术的广泛应用将促进软件产业的变革,使其重组分工,软件构件的生产必将成为独 立的行业而存在,其基本模式均是符合标准的零部件( 构件) 的生产,以及基于标准零 部件的软件产品的生产( 组装) ,其中构件是核心和基础,“复用”是必要的手段。实 践表明,这种模式是软件产业工程化、工业化的必由之路。标准零部件生产业的发展是 产业形成规模经济的前提。机械、建筑等传统行业以及年轻的计算机硬件产业的成功发 展均是基于这种模式并充分的证明了这种模式的可行性和正确性。这种模式是软件产业 发展的良好借鉴,软件产业要发展并形成规模经济,标准构件的生产和复用是关键i l 。 1 3 本文的主要工作 本文首先论述软件构件技术、软件复用的基本理论和相关概念,并讨论了软件在 i n t e m e t 环境下的开发方法的变迁。然后将这些理论方法应用于指导交通地理信息系统 的领域中软件构件开发和聚合应用: ( 1 ) 使用领域工程的方法对交通地理信息系统领域进行分析,采用面向特征的领 域分析方法( f o d a - f e a t u r eo r i e n t e dd o m a i na n a l y s i s ) 和面向特征的领域建模 ( f o d m f e a t u r eo r i e n t e dd o m a i nm o d e l i n g ) 技术,提取了交通地理系信息系统中的一 些构件的特征模型,这些特征模型较好地封装、隔离和抽象了构件的可变性; 构件化软件开发及聚合应用的研究 ( 2 ) 给出了交通地理信息系统中一种w e b g i s t 的总体架构,作为系统的设计蓝 图;并在总体架构和特征模型的指导下,进行构件的设计和实现,在实现的过程使用设 计模式、反射机制等方法增加构件的可复用性; ( 3 ) 选取先进的交通信息服务系统中两个常用的子服务,通过复用本文实现的构 件或其它公司在i n t e m e t 上提供的服务,使用聚合的方式,快速完成应用的开发。 1 4 本文的组织结构 本文主要研究内容是软件复用,构件技术和聚合应用,以及这些技术在w e b g i s t 中的应用,本文剩余的部分组织如下: 第2 章论述了软件构件技术的基本理论和概念,构件技术对软件复用的支持;讨论 了在i n t e m e t 新环境下,软件开发方法的变迁;以及目前常用的构件实现技术。 第3 章介绍了面向特征的领域分析和领域建模的方法;并将其用于对交通地理信息 系统进行领域分析和建模,得到交通地理信息系统中一些构件的特征模型。 第4 章分析了w e b g i s t 的系统构成和设计原则,设计了w e b g i s - t 的总体架构。 并根据领域分析得到的特征模型,采用j 2 e e 的构件实现模型,设计并实现了相应的构 件。 第5 章选取先进的交通信息服务系统中两个子服务,在w e b g i s - t 架构下,聚合相 应构件提供的服务来完成应用的开发,体现了构件技术对软件复用的支持。并在i n t e m e t 环境下,聚合本文所实现的构件提供的服务与灵图公司提供的地图服务,完成应用的开 发。 最后对全文进行了总结,并指出需要进一步研究的内容。 6 一 大连理工大学硕士学位论文 2 基于构件的软件开发 2 1 软件构件技术 2 0 世纪8 0 年代以来,软件复用已经成为现代软件工程的一个重要目标,这是因为 现在的软件系统规模越来越大,涉及的功能越来越多,设计与开发的复杂度越来越大, 维护难度也越来越大,而软件复用技术能比较好解决这些问题。 面向对象技术的发展与应用,在提高软件可复用性方面起了积极的推动作用。面向 对象技术把现实世界中的事物抽象为“对象”,把数据以及相关方法( 对数据的操作) 封装在一起,使用继承特性并利用已有对象功能来构造新的对象,有效地提高了软件的 开发效率。但是,面向对象的软件开发设计并没有发挥出它应有的最大力量。首先,它 支持的软件重用是源代码级别的,某一面向对象语言的类只能用于同一语言中;其次, 在开发大型软件系统时,它的粒度粗细难以有效控制;另外,不同软件开发商所提供的 对象( 指语言的类) 不易交互合作,难以支持系统的集成。因此,从理论上讲,面向对 象技术是应能支持软件的重用和集成,但在实际上,因为本质特征的限制,面向对象技 术只能作为一种基础。 软件构件技术以面向对象技术为基础,并很好的发展了面向对象技术。它的目的是 将对象、包括其用户界面、对外接口等属性以及对象的功能实现封装成一个规范的、标 准的、可以方便地被构件容器所操纵和使用的整体,使其成为一个通用、高效的软件部 件,是开发出高效、低成本、可重用软件系统重要现实途径。 软件构件( s o f t w a r ec o m p o n e n t ,又称为软件组件) 在不同上下文中有不同含义, 例如,功能模块、类、对象或一组相关函数;另外的定义还包括标准类库、框架、c a s e 模型,以及任何可重用的软件制品等等不一而足。通常人们所提到的软件构件具有以下 特点:软件构件是具有一个或一组定义良好的接口的一段自包含软件,具有二进制可重 用性,遵从某种软件构件规范,可以与其它构件组合成一个系统并是可替换的。它具有 运行时和开发时的两个内涵,即既有运行时可访问的接口;又具有开发时可独立提交与 安装的特性。 面向对象技术常常把重点放在封装以及代码重用方面,而软件构件技术支持二进制 重用,侧重于构件的可插入性。软件构件技术将封装运用到了极限,它通过只暴露公用 接口来实现这一点,构件的实际实现被隐藏起来。于是,首先,它可以独立于实现语言: 一个j a v a 客户不会感觉到所使用的构件是用c + + 来实现的;其次,它可以是位置透明 的:客户不会感觉到所使用的构件是运行在相同的进程中,还是运行在不同的进程中, 构件化软件开发及聚合应用的研究 甚至是位于不同的机器上。使用高层次的封装,对于外界的好处在于,设计合理的软件 构件可以插入到不同的客户程序中,而客户程序无需关心构件的实现。构件的客户只需 关心该构件所提供的接口( 即约定) 在理想的设置中,支持相同接口的不同构件可以 互换使用。 以下阐述软件构件技术的一些相关概念和问题。 2 1 1 构件的定义 ( 1 ) n a t o 在其颁布的可复用的软件构件标准川中给出的定义为:构件是用于复 用的软件实体; ( 2 ) 构件之父c l e m e n t ss z y p e r s k i 指出构件具有以下三个特性【l l 】:独立可部署的单 元,可作为第三方的组装单元,没有( 外部的) 可见状态。这些特性有几重含义。一个 构件是独立可部署的,意味着它必须能跟它所在的环境及其他构件完全分离。并且,构 件作为一个部署单元,具有原子性,是不可拆分的。 ( 3 ) 卡内基梅隆大学软件工程研究所的b a t c h m a n 等人给出的定义:是可在物理 或逻辑设备上运行的软件实现。构件遵照某种构件模型,可在不修改构件的前提下按照 构件的组装标准,部署到特定的软件架构中。 ( 4 ) 计算机百科全书中给出定义为:软件系统中具有相对独立功能、可以明确辨 识、接口由契约指定、和语境有明显依赖关系可独立部署、多由第三方组装的可组装软 件实体。 ( 5 ) 北京大学杨芙清等给出的定义【1 0 1 :构件是指应用系统中可以明确辨识的构成 成分。而可复用构件( r e u s a b l ec o m p o n e n t ) 是指具有相对独立的功能和具有复用价值 的构件。 ( 6 ) b r o w n 等人给出的定义【1 2 1 :构件是一个独立发布的功能部分,可以通过它的 接口访问它的服务。它具有以下三个特征:构件为一个可交付的单元;构件会提供一些 有用的功能,这些功能集合到一起会满足一些需求;构件通过接口提供服务。 一般认为,构件是具有一定功能、能够独立工作或者同其它构件组合起来协调工作 的程序实体,一经产生就与它具体的实现语言无关,因此可以被认为是一段二进制代码 或数据段。 2 1 2 构件的获取途径 基于构件的软件开发的基础元素是构件,在使用基于构件的软件开发方法时,必须 具备大量可供选择的可复用构件。构件的获取成为基于构件的软件开发必需解决的问 题。 8 大连理工大学硕士学位论文 构件的获取手段有多种,既可以商业采购得到c o t s ( c o m m e r c i a l l y - o f f - t h e s h e l f ) 构件,也可以利用项目承包商和合作伙伴开发的n d i 构件( n o n - d e v e l o p m e n t a li t e m ) , 或者针对新需求和新技术从头自主开发新构件。这些可复用软件构件的获取,归根结底 主要有两种途径: ( 1 ) 从已有的遗留系统中抽取出可以复用的构件; ( 2 ) 重新开发新的可以复用的构件。 为了实现复用,构件必须具有一定的、面向领域的通用性,构件所提供的功能能够 为多个系统所复用。而软件复用实践表明,在一个成熟的应用领域内进行软件复用会收 到良好的效果,也就是在一个成熟的应用领域进行构件获取所得到的软件构件将具有较 大的复用价值。要开发出能在一个成熟的应用领域进行复用的软件构件,可以先对这个 领域进行领域工程的实施。 2 1 3 软件架构 软件架构( 又称软件体系结构) 是对系统整体结构设计的刻画,也是实现软件复用 和软件演化的关键技术之一。其研究内容是如何快速、可靠地从可复用构件构造系统, 着重于软件系统自身的整体结构和构件间的互联。其中主要包括:软件架构原理和风格, 软件架构的描述和规约,特定领域软件架构,构件面向软件架构的组装机制等。特别重 要的是,在基于复用的软件开发中,为复用而开发的软件架构可以作为一种大粒度的、 抽象级别较高的软件构件进行复用,而且软件架构还为软件的组装提供基础。 软件架构是一个程序或系统的构件的组织结构、它们之间的关联关系以及支配系统 设计和演变的原则和方针。一般地,一个系统的软件体系结构描述了该系统中的所有构 件,构件之间的交互、连接件以及如何将构件和连接件结合在一起的约束。按构件的集 成方式,l u c k h a m 等在文献 1 3 1 d o 将软件体系结构划分为3 种不同的体系结构类型:对 象连接式体系结构、接口连接式体系结构和插头插座式体系结构。 ( 1 ) 对象连接式体系结构。在这种类型的体系结构中,构件的接口只定义了其对 外提供的功能,而没有定义构件对外要求的功能,其中以面向对象中的对象接口为典型 代表,所以称这种类型的体系结构为对象连接式体系结构。 ( 2 ) 接口连接式体系结构。在这种类型的体系结构中,构件的接口不但定义了对 外提供的功能,而且定义了对外要求的功能,从而显式地表达了构件对环境的依赖,提 高了构件接口规约的表达能力。是目前基于构件的软件开发使用的一种常见的体系结 构。在这种体系结构中,接口定义满足通信完整性,可以较好地支持接口处的构件组装。 但是,当接口连接式体系结构把连接关系显式地标识出来以后,功能连接的数量就成为 构件化软件开发及聚合应用的研究 一个显著的问题。也就是说,当接口定义的功能数量很大时,就带来了规模上的问题。 在接口处标明构件要求的服务更是加剧了这种严峻的形势,而一个功能又往往同几个构 件要求的功能连接起来,所以连接的数目也非常大。 ( 3 ) 插头插座式体系结构。插头插座式体系结构是接口连接式体系结构的一个特 例。因为构件之间的通信往往涉及到构件接口中功能的成组连接,并且在这组功能之间 通常存在着一定的语义约束关系,所以如果把这样的彼此间关系紧密的功能( 包括提供 的功能和要求的功能) 组织成组,并封装为服务,就能使接口中直接包含的内容减少, 从而降低接口中功能的规模。只有在两个对偶的服务之间才可以连接,对偶的服务是指 所包括的功能完全相同,但其中所提供的功能和需要的功能恰好是方向相反的两个服 务。这样就进一步降低了接口连接的规模,并且易于检查两个对偶的服务之间连接的正 确性。通过对偶的服务进行连接,是计算机硬件领域中非常普遍的思想,例如串行接口、 并行接口等。 2 1 4 构件的组装 基于构件的开发方法最终是通过组装构件得到应用系统,构件的组装必须以某个框 架或架构为蓝图,实际可以看作是用构件实例将软件架构具体化的过程。构件组装技术 以构件模型,构件与架构描述和开放系统技术为基础。成功的组装必须以开放构件模型 和规范的架构描述( 包括对构件连接和交互协议的严格定义) 为基础,构件实例必须符 合系统中其他部分的要求。分布式软件总线,事件登记和回调,架构描述语言,脚本语 言和代码生成技术都为架构组装指出了希望之路,d c o m ,j a v a b e a n s 等运行级的分布 式构件模型的出现和o i m 与i n t e m e t 的引入,使构件之间的独立性和互操作性变得更强, 这些技术为构件组装。尤其是运行级的构件组装提供了有力的支持。 从软件体系结构设计层次上看,构件通过接口定义了同外界的信息传递以及所承担 的系统责任,构件接口包括了构件同周围环境的全部可交互的内容,也是构件同外界唯 一的交互途径。除此之外,环境不应对构件作任何其他与接口无关的假设,例如实现细 节等。因此,构件之间的集成可以在接口处定义,从而支持理想的构件集成方式。所以, 接口的定义成为了构件组装的关键内容。 构件组装的开发过程主要包括三个步骤: ( 1 ) 构件的选取。根据软件开发的需求,在已有的构件库或商业构件中选择适当 的构件,或者自己开发构件。 ( 2 ) 构件的自适应,或者称之为构件的演化。选取的构件不一定满足复用上下文 的需求,所以,在它们与其他构件连接之前,需要根据复用上下文对其作相应的适应性 1 0 大连理工大学硕士学位论文 调整。可以使用构件的包装、构件代理和构件继承等技术对原有的构件进行演化,使其 达到复用上下文的需求。 ( 3 ) 体系结构的配置。通过相应的通信机制可以将构件连接起来。不同类型的通 信机制,其具体实现也是不同的。 2 2 软件复用与构件演化 2 2 1 软件复用 软件复用概念的第一次引入是在1 9 6 8 年n a t o 软件工程会议上m c l l r o y 的论文“大 量生产的软件构件”0 4 1 0 而在此以前,子程序的概念也体现了复用的思想,但其目的是 为了节省当时昂贵的机器内存资源,并不是为了节省开发软件所需的人力资源。然而子 程序的概念可以用于节省人力资源的目的,从而出现了通用子程序库,供程序员在编程 时使用,数学程序库就是非常成功的子程序复用的例子。在其后的发展过程中,有许多 复用技术的研究成果和成功的复用实践活动。但是,复用技术在整体上对软件产业的影 响却并不尽如人意。这是由技术方面和非技术方面的种种因素造成的,其中技术上的不 成熟是一个主要原因。近十几年来,面向对象技术出现并逐步成为主流技术,为软件复 用提供了基本的技术支持。软件复用研究重新成为热点,被视为解决软件危机,提高软 件生产效率和质量现实可行的途径。 分析传统产业的发展,其基本模式均是符合标准的零部件( 构件) 生产以及基于标 准构件的产品生产( 组装) ,其中,构件是核心和基础,“复用”是必需的手段。实践 表明,这种模式是产业工程化、工业化的必由之路。标准零部件生产业的独立存在和发 展是产业形成规模经济的前提。机械、建筑等传统行业以及年轻的计算机硬件产业的成 功发展均是基于这种模式并充分证明了这种模式的可行性和正确性。这种模式是软件产 业发展的良好借鉴,软件产业要发展并形成规模经济,标准构件的生产和构件的复用是 关键因素。这正是软件复用受到高度重视的根本原因。 软件复用是指重复使用“为了复用目的而设计的软件”的过程【”l 。相应地,可复用 软件是指为了复用目的而设计的软件。与软件复用的概念相关,重复使用软件的行为还 可能是重复使用“并非为了复用目的而设计的软件”的过程,或在一个应用系统的不同 版本间重复使用代码的过程,这两类行为都不属于严格意义上的软件复用。 以下的类比有助于进一步说明软件复用的概念。在软件演化的过程中,重复使用的 行为可能发生在三个维上: ( 1 ) 时间维:使用以前的软件版本作为新版本的基础,加入新功能,适应新需求, 即软件维护。 构件化软件开发及聚合应用的研究 ( 2 ) 平台维:以某平台上的软件为基础,修改其和运行平台相关的部分,使其运 行于新平台,即软件移植。 ( 3 ) 应用维:将某软件( 或其中构件) 用于其他应用系统中,新系统具有不同功 能和用途,即真正的软件复用。 这三种行为中都重复使用了现有的软件,但是,真正的复用是为了支持软件在应用 维的演化,使用“为复用而开发的软件( 构件) ”来更快、更好地开发新的应用系统。 软件构件技术是支持软件复用的核心技术。实现可复用的软件构件,并使用这些可 复用的软件组装成新的软件系统体现了软件复用的核心思想。所以近年来,软件构件技 术在学术和业界都得到很高的重视,主要的研究内容有i l o j : ( 1 ) 构件获取:有目的的构件生产和从已有系统中挖掘提取构件; ( 2 ) 构件模型:研究构件的本质特征及构件间的关系; ( 3 ) 构件描述语言:以构件模型为基础,解决构件的精确描述、理解及组装问题; ( 4 ) 构件分类与检索:研究构件分类策略、组织模式及检索策略,建立构件库系 统,支持构件的有效管理; ( 5 ) 构件复合组装:在构件模型的基础上研究构件组装机制,包括源代码级的组 装和基于构件对象互操作性的运行级组装。 2 2 2 构件演化 基于构件的软件开发,软件系统由软件构件组装而成,被选用的构件不一定满足复 用上下文的需求,因此对构件进行演化以满足新系统的需求是不可避免的。构件的演化 是指修改或升级实现特定功能的软件构件。构件演化是软件演化中的一部分,软件
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年教师招聘之《幼儿教师招聘》考试题库及参考答案详解【黄金题型】
- 智能门铃视频通话创新创业项目商业计划书
- 电动汽车充电网络智能调度与分配创新创业项目商业计划书
- 仙客来创新创业项目商业计划书
- 教师招聘之《小学教师招聘》试卷附完整答案详解(夺冠系列)
- 教师招聘之《小学教师招聘》自我提分评估附答案详解(b卷)
- 教师招聘之《幼儿教师招聘》考试历年机考真题集附答案详解(能力提升)
- 教师招聘之《小学教师招聘》能力检测(典型题)附答案详解
- 教师招聘之《小学教师招聘》考试黑钻押题带答案详解(培优b卷)
- 教师招聘之《小学教师招聘》考前冲刺测试卷讲解及参考答案详解1套
- 蒙氏教育小班家长会课件
- 2025至2030高压去毛刺机行业市场占有率及投资前景评估规划报告
- GB/T 16271-2025钢丝绳吊索插编索扣
- DB44T 1643-2015 广东省LED 路灯、隧道灯产品评价标杆体系管理规范
- 静脉血栓疑难病例讨论
- 肾性骨病的护理
- 【课件】角的平分线+课时1+角平分线的性质+课件+2025-2026学年人教版八年级数学上册
- 【课件】轴对称及其性质+课件2025-2026学年人教版八年级数学上册
- 2025年贵州省中考英语真题含答案
- 护理人员同理心
- 2025-2030水务工程行业并购重组机会及投融资战略研究咨询报告
评论
0/150
提交评论