软件复用与软件构件技术.docx
- 文档编号:15524000
- 上传时间:2023-07-05
- 格式:DOCX
- 页数:21
- 大小:136.78KB
软件复用与软件构件技术.docx
《软件复用与软件构件技术.docx》由会员分享,可在线阅读,更多相关《软件复用与软件构件技术.docx(21页珍藏版)》请在冰点文库上搜索。
软件复用与软件构件技术
软件复用与软件构件技术X
杨芙清梅宏李克勤
(北京大学计算机科学技术系,北京100871
=提要>软件复用是在软件开发中避免重复劳动的解决方案.通过软件复用,可以提高软件开发的效率和质量.近十几年来,面向对象技术出现并逐步成为主流技术,为软件复用提供了基本的技术支持.软件复用研究重新成为热点,
被视为解决软件危机,提高软件生产效率和质量的现实可行的途径.它通常可分为产品复用和过程复用两条途径.基于构件的复用是产品复用的主要形式,也是当前复用研究的焦点.同时,在分布对象研究领域,软件构件技术也是一个重要内容.当前软件构件技术被视为实现成功复用的关键因素之一.软件复用技术的广泛应用将促进软件产业的变革,使其重组分工,软件构件生产必将成为独立的行业而存在.这种变革对我国软件产业的发展将是一个很好的机遇.本文将对软件复用技术的发展作一全面综述,介绍软件复用的基本概念及关键技术,同时介绍国内外在软件复用方面的成功的研究和实践活动,包括我国政府支持的国家重点科技攻关项目青鸟工程,并对我国如何加强相关技术研究和应用,推动软件产业发展提出一些思路.
关键词:
软件工程,软件复用,软件构件技术,计算机辅助软件工程(CASE
SoftwareReuseandSoftwareComponentTechnology
YangFuqing,MeiHong,LiKeqin
(Dept.ofComputerScience&Technology,PekingUniversity,Beijing100871
Abstract:
Softwarereuseoffersasolutiontoeliminaterepeatedworkandimproveefficiencyandqualityinthesoftwaredevelopment.Intherecenttenyears,object-orientedtechnologyhasappearedandbecomeamainstreamtechnology,therebyprovidingfundamentaltechnologysupportforsoftwarereuse.Softwarereuseregainsmoreattentioninsoftwareengineeringresearchandisconsideredapraticalandfeasibleapproachtosolvingthesoftwarecrisis.Softwarereuseisgenerallyclassifiedintotwocatalogues:
productreuseandprocessreuse.Reusebasedonsoftwarecomponentsistheimportantformofproductreuseandisthemajorareaofsoftwarereuseresearch.Atthesametime,softwarecomponenttechnologyplaysanimportantroleindistributedobjectresearch.Therefore,softwarecomponenttechnologyisregardedasakeyfactorofsuccessfulsoftwarereuse.Thedevelopmentandapplicationofsoftwarereusetechnologywillfacilitatetherevolutionofsoftwaredevelopmentandreorganizesoftwareindustry.Asaresult,thedevelopmentofsoftwarecomponentswillbecomeanindependentandinseparableindustry.TherevolutionoffersagoodchanceforChinesesoftwaredevelopment.Thispaperisasummarizationonthedevelop-mentofsoftwarereusetechnology.Itpresentsfundamentalconceptsandkeytechniquesofsoftwarereuse.Afterintroducingseveralsuccessfulresearchandpracticeinsoftwarereuse,includingJadeBirdProject,aChinesenationalkeyprojectsupportedbythegovernment,itproposessomeideasonhowtoreinforceresearchandapplicationofrelatedtechniquesandfacilitatethedevelopmentofsoftwareindustryinChina.
Keywords:
SoftwareEngineering,SoftwareReuse,SoftwareComponentTechnology,CASE
一、引言
11为什么要复用
通常情况下,应用软件系统的开发过程包含以下几个阶段:
需求分析、设计、编码、测试、维护等.当每个应用系统的开发都是从头开始时,在系统开发过程中就必然存在大量的重复劳动,如:
用户需求获取的重复、需求分析和设计的重复、编码的重复、测试的重复和文档工作的重复等.
探讨应用系统的本质,可以发现其中通常包含三类成分:
¹通用基本构件:
是特定于计算机系统的构成成分,如基本的数据结构、用户界面元素等,它们可以存在于各种应用系统中;º领域共性构件:
是应用系统所属领域的共性构成成分,它们存在于该领域的各个应用系统中;»应用专用构件:
是每个应用系统的特有构成成分.
应用系统开发中的重复劳动主要在于前两类构成成分的重复开发.
第2期1999年2月
电子学报
ACTAELECTRONICASINICA
Vol.27No.2
Feb.1999
X1998年6月收到,1998年10月修改定稿.国家/九五0科技攻关项目及863高技术计划资助课题
软件复用是在软件开发中避免重复劳动的解决方案,其出发点是应用系统的开发不再采用一切/从零开始0的模式,而是以已有的工作为基础,充分利用过去应用系统开发中积累的知识和经验,如:
需求分析结果、设计方案、源代码、测试计划及测试案例等,从而将开发的重点集中于应用的特有构成成分.
通过软件复用,在应用系统开发中可以充分地利用已有的开发成果,消除了包括分析、设计、编码、测试等在内的许多重复劳动,从而提高了软件开发的效率,同时,通过复用高质量的已有开发成果,避免了重新开发可能引入的错误,从而提高了软件的质量.
21复用的基本概念
软件复用是指重复使用/为了复用目的而设计的软件0的过程[22].相应地,可复用软件是指为了复用目的而设计的软件.与软件复用的概念相关,重复使用软件的行为还可能是重复使用/并非为了复用目的而设计的软件0的过程,或在一个应用系统的不同版本间重复使用代码的过程,这两类行为都不属于严格意义上的软件复用.
以下的类比有助于进一步说明软件复用的概念.在软件演化的过程中,重复使用的行为可能发生在三个维上:
(1时间维:
使用以前的软件版本作为新版本的基础,加入新功能,适应新需求,即软件维护.
(2平台维:
以某平台上的软件为基础,修改其和运行平台相关的部分,使其运行于新平台,即软件移植.
(3应用维:
将某软件(或其中构件用于其他应用系统中,新系统具有不同功能和用途,即真正的软件复用.
这三种行为中都重复使用了现有的软件,但是,真正的复用是为了支持软件在应用维的演化,使用/为复用而开发的软件(构件0来更快、更好地开发新的应用系统.复用概念的第一次引入是在1968年NATO软件工程会议上,McIlroy的论文/大量生产的软件构件0中.在此以前,子程序的概念也体现了复用的思想.但其目的是为了节省当时昂贵的机器内存资源,并不是为了节省开发软件所需的人力资源.然而子程序的概念可以用于节省人力资源的目的,从而出现了通用子程序库,供程序员在编程时使用.例如,数学程序库就是非常成功的子程序复用的例子.
在其后的发展过程中,有许多复用技术的研究成果和成功的复用实践活动.但是,复用技术在整体上对软件产业的影响却并不尽如人意.这是由于技术方面和非技术方面的种种因素造成的,其中技术上的不成熟是一个主要原因.近十几年来,面向对象技术出现并逐步成为主流技术,为软件复用提供了基本的技术支持.软件复用研究重新成为热点,被视为解决软件危机,提高软件生产效率和质量的现实可行的途径[12].
分析传统产业的发展,其基本模式均是符合标准的零部件(构件生产以及基于标准构件的产品生产(组装,其中,构件是核心和基础,/复用0是必需的手段.实践表明,这种模式是产业工程化、工业化的必由之路.标准零部件生产业的独立存在和发展是产业形成规模经济的前提.机械、建筑等传统行
业以及年轻的计算机硬件产业的成功发展均是基于这种模式
并充分证明了这种模式的可行性和正确性.这种模式是软件产业发展的良好借鉴,软件产业要发展并形成规模经济,标准
构件的生产和构件的复用是关键因素.这正是软件复用受到高度重视的根本原因.
软件复用可以从多个角度进行考察[18].依据复用的对象,可以将软件复用分为产品复用和过程复用.产品复用指复用已有的软件构件,通过构件集成(组装得到新系统.过程复用指复用已有的软件开发过程,使用可复用的应用生成器来自动或半自动地生成所需系统.过程复用依赖于软件自动化技术的发展,目前只适用于一些特殊的应用领域.产品复用是目前现实的、主流的途径.依据对可复用信息进行复用的方式,可以将软件复用区分为黑盒(Black-box复用和白盒(White-box复用.黑盒复用指对已有构件不需作任何修改,直接进行复用.这是理想的复用方式.白盒复用指已有构件并不能完全符合用户需求,需要根据用户需求进行适应性修改后才可使用.而在大多数应用的组装过程中,构件的适应性修改是必需的.
31如何实现复用
软件复用有三个基本问题,一是必须有可以复用的对象;二是所复用的对象必须是有用的,三是复用者需要知道如何去使用被复用的对象.软件复用包括两个相关过程:
可复用软件(构件的开发(DevelopmentforReuse和基于可复用软件(构件的应用系统构造(集成和组装(DevelopmentwithReuse.解决好这几个方面的问题才能实现真正成功的软件复用.
与以上几个方面的问题相联系,实现软件复用的关键因素(技术和非技术因素主要包括:
软件构件技术(SoftwareComponentTechnology、领域工程(DomainEngineering、软件构架(SoftwareArchitecture、软件再工程(SoftwareReeng-ineering、开放系统(OpenSystem、软件过程(SoftwarePro-cess、CASE技术等以及各种非技术因素.
二、实现软件复用的关键因素
实现软件复用的各种技术因素和非技术因素是互相联系的.如图1所示,它们结合在一起,共同影响软件复用的实现.
图1实现软件复用的关键因素
11软件构件技术
构件(Component是指应用系统中可以明确辨识的构成
69
第2期杨芙清:
软件复用与软件构件技术
成分.而可复用构件(ReusableComponent是指具有相对独立的功能和可复用价值的构件.
可复用构件应具备以下属性[22]:
¹有用性(Usefulness:
构件必须提供有用的功能;º可用性(Usability:
构件必须易于理解和使用;»质量(Quality:
构件及其变形必须能正确工作;¼适应性(Adaptability:
构件应该易于通过参数化等方式在不同语境中进行配置;½可移植性(Portability:
构件应能在不同的硬件运行平台和软件环境中工作.
随着对软件复用理解的深入,构件的概念已不再局限于源代码构件,而是延伸到需求、系统和软件的需求规则约、系统和软件的构架、文档、测试计划、测试案例和数据以及其他对开发活动有用的信息.这些信息都可以称为可复用软件构件.
软件构件技术是支持软件复用的核心技术,是近几年来迅速发展并受到高度重视的一个学科分支.其主要研究内容包括:
(1构件获取:
有目的的构件生产和从已有系统中挖掘提取构件;
(2构件模型:
研究构件的本质特征及构件间的关系;(3构件描述语言:
以构件模型为基础,解决构件的精确描述、理解及组装问题;(4构件分类与检索:
研究构件分类策略、组织模式及检索策略,建立构件库系统,支持构件的有效管理;
(5构件复合组装:
在构件模型的基础上研究构件组装机制,包括源代码级的组装和基于构件对象互操作性的运行级组装;
(6标准化:
构件模型的标准化和构件库系统的标准化.
21软件构架
软件构架是对系统整体结构设计的刻划,包括全局组织与控制结构,构件间通讯、同步和数据访问的协议,设计元素间的功能分配,物理分布,设计元素集成,伸缩性和性能,设计选择等[9].
研究软件构架对于进行高效的软件工程具有非常重要的意义:
通过对软件构架的研究,有利于发现不同系统在较高级别上的共同特性;获得正确的构架对于进行正确的系统设计非常关键;对各种软件构架的深入了解,使得软件工程师可以根据一些原则在不同的软件构架之间作出选择;从构架的层次上表示系统,有利于系统较高级别性质的描述和分析.特别重要的是,在基于复用的软件开发中,为复用而开发的软件构架可以作为一种大粒度的、抽象级别较高的软件构件进行复用,而且软件构架还为构件的组装提供了基础和上下文,对于成功的复用具有非常重要的意义.
软件构架研究如何快速、可靠地从可复用构件构造系统的方式,着重于软件系统自身的整体结构和构件间的互联.其中主要包括:
软件构架原理和风格,软件构架的描述和规约,特定领域软件构架,构件向软件构架的集成机制等.
31领域工程
领域工程是为一组相似或相近系统的应用工程建立基本
能力和必备基础的过程,它覆盖了建立可复用软件构件的所
有活动[22].领域是指一组具有相似或相近软件需求的应用系统所覆盖的功能区域.领域工程包括三个主要的阶段.
(1领域分析:
这个阶段的主要目标是获得领域模型(Do-mainModel.领域模型描述领域中系统之间的共同的需求[17].这个阶段的主要活动包括确定领域边界,识别信息源,分析领域中系统的需求,确定哪些需求是被领域中的系统广泛共享的,哪些是可变的,从而建立领域模型.
(2领域设计:
这个阶段的目标是获得领域构架(Domain-SpecificSoftwareArchitecture,缩写为DSSA.DSSA描述在领域模型中表示的需求的解决方案,它不是单个系统的表示,而是能够适应领域中多个系统的需求的一个高层次的设计[17].建立了领域模型之后,就可以派生出满足这些被建模的领域需求的DSSA.由于领域模型中的领域需求具有一定的变化性,DSSA也要相应地具有变化性.
(3领域实现:
这个阶段的主要行为是定义将需求翻译到由可复用构件创建的系统的机制.根据所采用的复用策略和领域的成熟和稳定程度,这种机制可能是一组与领域模型和DSSA相联系的可复用构件,也可能是应用系统的生成器.
这些活动的产品(可复用的软件构件包括:
领域模型、领域构架、领域特定的语言、代码生成器和代码构件等.在领域工程的实施过程中,可能涉及的人员包括[5]:
(1最终用户:
使用某领域中具体系统的人员;
(2领域专家:
提供关于领域中系统信息的人员,他应该熟悉该领域中系统的软件设计和实现、硬件限制、未来的用户需求及技术走向;
(3领域分析员:
收集领域信息、完成领域分析并提炼出领域产品(可复用软件构件的人员,他应该具有完备的关于复用的知识,并对分析的领域有一定程度的了解.
(4领域分析产品(构件、构架的使用者:
包括最终用户、应用系统的需求分析员和软件设计者.
领域工程的主要产品和人员如图2所示.
图2领域工程
41软件再工程
软件复用中的一些问题与现有系统密切相关,如:
现有软件系统如何适应当前技术的发展及需求的变化,采用更易于理解的、适应变化的、可复用的系统软件构架并提炼出可复用的软件构件?
现存大量的遗产软件系统(LegacySoftware由于技术的发展,正逐渐退出使用,如何对这些系统进行挖掘、整理,得到有用的软件构件?
已有的软件构件随着时间的流逝会逐渐变得不可使用,如何对它们进行维护,以延长其生命
70电子学报1999年
期,充分利用这些可复用构件?
等等.软件再工程(SoftwareReengineering正是解决这些问题的主要技术手段.
软件再工程是一个工程过程,它将逆向工程、重构和正向工程组合起来,将现存系统重新构造为新的形式[7].再工程的基础是系统理解,包括对运行系统、源代码、设计、分析、文档等的全面理解.但在很多情况下,由于各类文档的丢失,只能对源代码进行理解,即程序理解.
再工程的主要行为如图3所示
.
图3软件再工程
51开放系统技术
开放系统技术的基本原则是在系统的开发中使用接口标准,同时使用符合接口标准的实现.这些为系统开发中的设计决策,特别是对于系统的演化,提供了一个稳定的基础,同时,也为系统(子系统间的互操作提供了保证.开放系统技术具有在保持(甚至是提高系统效率的前提下降低开发成本、缩短开发周期的可能.对于稳定的接口标准的依赖,使得开发系统更容易适应技术的进步[8].当前,以解决异构环境中的互操作为目标的分布对象技术是开放系统技术中新的主流技术.开放系统技术为软件复用提供了良好的支持.特别是分布对象技术使得符合接口标准的构件可以方便地以/即插即用0的方式组装到系统中,实现黑盒复用.这样,在符合接口标准的前提下,构件就可以独立地进行开发,从而形成独立的构件制造业.
61软件过程
软件过程又称软件生存周期过程,是软件生存周期内为达到一定目标而必须实施的一系列相关过程的集合.一个良好定义的软件过程对软件开发的质量和效率有着重要影响.当前,软件过程研究以及企业的软件过程改善已成为软件工程界的热点,并已出现了一些实用的过程模型标准,如CMM、ISO9001/TickIT等.
然而,基于构件复用的软件开发过程和传统的一切从头开始的软件开发过程有着实质性的不同,探讨适应于软件复用的软件过程自然就成为一个迫切的问题.
71CASE技术
随着软件工程思想的日益深入人心,以计算机辅助开发软件为目标的CASE(ComputerAidedSoftwareEngineering技术越来越为众多的软件开发人员所接受,CASE工具和CASE环境得到越来越广泛的应用.CASE技术对软件工程的很多方面,例如分析、设计、代码生成、测试、版本控制和配置管理、再工程、软件过程、项目管理等等,都可以提供有力的自动或半自动支持.CASE技术的应用,可以帮助软件开发人员控制软件开发中的复杂性,有利于提高软件开发的效率和质量.
软件复用同样需要CASE技术的支持.CASE技术中与软件复用相关的主要研究内容包括:
在面向复用的软件开发中,可复用构件的抽取、描述、分类和存储;在基于复用的软件开发中,可复用构件的检索、提取和组装;可复用构件的度量等等.
81非技术因素
除了上述的技术因素以外,软件复用还涉及众多的非技术因素,如:
机构组织如何适应复用的需求;管理方法如何适应复用的需求;开发人员知识的更新;创造性和工程化的关系;开发人员的心理障碍;知识产权问题;保守商业秘密的问题;复用前期投入的经济考虑;标准化问题等等.这些因素超出了本文的范围,这里不再详细讨论.
三、复用的研究与实践活动
11领域工程
研究实践表明,软件复用在特定领域内更容易获得成功.因此,领域工程受到高度重视,已有许多研究成果.这里将介绍三个有代表性的工作.
卡内基#梅隆大学的软件工程研究所(CMU/SEI提出了面向特征的领域分析方法(Feature-OrientedDomainAnalysis
Method,缩写为FODA方法[8]
.它支持对某领域中系统共性和个性的发现、分析和文档记录.FODA的过程分为三个阶段:
上下文分析(ContextAnalysis、领域建模(DomainMode-ling、构架建模(ArchitectureModeling.
(1上下文分析:
上下文分析的目标是定义领域的范围.在这个阶段要分析领域与外部元素间的关系,例如不同的操作环境,不同的数据需求等,还要对可变性进行评价.上下文分析的结果是上下文模型.
(2领域建模:
领域的范围确定后,领域建模阶段提供了一些步骤来分析领域中的应用的共同性和差异,并产生领域模型.领域建模阶段主要包含三种行为:
#特征分析(FeatureAnalysis.在特征分析阶段,要获得客户或最终用户对一类系统的一般能力的理解,即特征.特征描述了领域应用的上下文、需要的操作和属性、以及表示的变化.
#信息分析(InformationAnalysis.在信息分析中,要定义和分析为实现领域中应用所需的领域知识和数据需求.信息分析的目标是用领域实体及其相互之间的关系表示领域知识,并使它们在操作分析和构架建模中可以用来派生对象和数据定义.
#操作分析(OperationalAnalysis.在操作分析中,要识别领域中应用的行为特性,例如数据流和控制流的共同性和差异、有限状态自动机模型等.
(3构架建模:
这个阶段为领域中的应用提供软件解决方案.在这个阶段中开发出构架模型,即领域中应用的高层设计.这个阶段的焦点是识别并发进程和面向领域的共同模块.这个阶段中定义进程,并将定义在领域模型中的特征、功能和数据对象分配到进程和模块中.
FODA方法已成功地应用于美国空军运动控制等领域.
71
第2期杨芙清:
软件复用与软件构件技术
在美国国防部高级研究项目署(ARPA资助下,WillTracz提出了领域构架方法(Domain-SpecificSoftwareArch-i
tecture,缩写为(DSSA方法[22]
.在最高的级别上,该方法有五个阶段.每个阶段可以进一步划分为一些步骤或子阶段.每个阶段包括一组需要回答的问题,一组需要的输入、一组将产生的输出和验证标准.该方法的领域工程过程是并发的(con-current、递归的(recursive和反复的(iterative.或者可以说,它是螺旋型的(spiral.完成该过程可能需要对每个阶段经历几遍,每次增加更多的细节.
该领域工程过程的五个阶段是:
(1定义领域范围:
重点是确定领域中包含哪些元素以及领域工程过程到何时结束.这个阶段的一个主要输出是领域中的应用需要满足的一系列用户的需求;
(2定义领域特定的元素:
目标是制订领域字典和领域术语的同义词词
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 构件 技术