(北京大学计算机科学技术系,北京100871
=提要>软件复用是在软件开发中避免重复劳动的解决方案.通过软件复用,可以提高软件开发的效率和质量.近十几年来,面向对象技术出现并逐步成为主流技术,为软件复用提供了基本的技术支持.软件复用研究重新成为热点,
被视为解决软件危机,提高软件生产效率和质量的现实可行的途径.它通常可分为产品复用和过程复用两条途径.基于构件的复用是产品复用的主要形式,也是当前复用研究的焦点.同时,在分布对象研究领域,软件构件技术也是一个重要内容.当前软件构件技术被视为实现成功复用的关键因素之一.软件复用技术的广泛应用将促进软件产业的变革,使其重组分工,软件构件生产必将成为独立的行业而存在.这种变革对我国软件产业的发展将是一个很好的机遇.本文将对软件复用技术的发展作一全面综述,介绍软件复用的基本概念及关键技术,同时介绍国内外在软件复用方面的成功的研究和实践活动,包括我国政府支持的国家重点科技攻关项目青鸟工程,并对我国如何加强相关技术研究和应用,推动软件产业发展提出一些思路.
关键词:软件工程,软件复用,软件构件技术,计算机辅助软件工程(CASE Software Reuse and Software Compon ent Techn ology Yang Fuqing,M ei Hong,Li Keqin
(Dept.of Computer Science&T echnology,Peking U niversity,Beijing100871 Abstract:Software reuse offers a solution to eliminate r epeated work and improve efficiency and quality in the software development.In the recent ten years,object-oriented technology has appeared and become a mainstream technolog y,thereby providing fundamental technology suppor t for software reuse.Software r euse regains more attention in softw ar e engineer ing research and is consider ed a pratical and feasible
approach to solving the software crisis.Software reuse i s gener ally classified into tw o catalogues:pro duct reuse and process r euse.Reuse based on software components is the important form o f product reuse and i s the major area of software reuse resear ch.A t the same time,softw are component technology plays an important role in distr ibuted object research.T herefore,software component technology is regarded as a key factor of successful software reuse.T he development and application of software r euse technology w ill facilitate the revolution of software development and reor ganize softw are industry.As a result,the dev elopment o f software components w ill become an independent and insepar able industr y.T he r evo lution offers a good chance for Chinese software development.T his paper i s a summarizat ion on the develop-ment of software reuse technology.It presents fundamental concepts and key techniques of software r euse.After introducing sev eral successful resear ch and pr actice in software r
euse,including Jade Bird Project,a Chinese national key project suppor ted by the go ver nment,it proposes some ideas on how to reinforce research and application of related techniques and facilitate t he development of software industry in China.
Key words:Softw ar e Engineering,Softw ar e Reuse,Softw ar e Component T echnology,CASE
一、引言 11为什么要复用
通常情况下,应用软件系统的开发过程包含以下几个阶段:需求分析、设计、编码、测试、维护等.当每个应用系统的开发都是从头开始时,在系统开发过程中就必然存在大量的重复劳动,如:用户需求获取的重复、需求分析和设计的重复、编码的重复、测试的重复和文档工作的重复等.
探讨应用系统的本质,可以发现其中通常包含三类成分:¹通用基本构件:是特定于计算机系统的构成成分,如基本的数据结构、用户界面元素等,它们可以存在于各
种应用系统中;º领域共性构件:是应用系统所属领域的共性构成成分,它们存在于该领域的各个应用系统中;»应用专用构件:是每个应用系统的特有构成成分.
应用系统开发中的重复劳动主要在于前两类构成成分的重复开发. 第2期1999年2月 电子学报
ACT A ELECTRONICA SINICA Vol.27No.2 Feb.1999
X1998年6月收到,1998年10月修改定稿.国家/九五0科技攻关项目及863高技术计划资助课题
软件复用是在软件开发中避免重复劳动的解决方案,其出发点是应用系统的开发不再采用一切/从零开始0的模式,而是以已有的工作为基础,充分利用过去应用系统开发中积累的知识和经验,如:需求分析结果、设计方案、源代码、测试计划及测试案例等,从而将开发的重点集中于应用的特有构成成分.
通过软件复用,在应用系统开发中可以充分地利用已有的开发成果,消除了包括分析、设计、编码、测试等在内的许多重复劳动,从而提高了软件开发的效率,同时,通过复用高质量的已有开发成果,避免了重新开发可能引入的错误,从而提高了软件的质量.
21复用的基本概念
软件复用是指重复使用/为了复用目的而设计的软件0的过程[22].相应地,可复用软件是指为了复用目的而设计的软件.与软件复用的概念相关,重复使用软件的行
为还可能是重复使用/并非为了复用目的而设计的软件0的过程,或在一个应用系统的不同版本间重复使用代码的过程,这两类行为都不属于严格意义上的软件复用.
以下的类比有助于进一步说明软件复用的概念.在软件演化的过程中,重复使用的行为可能发生在三个维上:
(1时间维:使用以前的软件版本作为新版本的基础,加入新功能,适应新需求,即软件维护.
(2平台维:以某平台上的软件为基础,修改其和运行平台相关的部分,使其运行于新平台,即软件移植.
(3应用维:将某软件(或其中构件用于其他应用系统中,新系统具有不同功能和用途,即真正的软件复用.
这三种行为中都重复使用了现有的软件,但是,真正的复用是为了支持软件在应用维的演化,使用/为复用而开发的软件(构件0来更快、更好地开发新的应用系统.复用概念的第一次引入是在1968年N AT O 软件工程会议上,M cIlroy 的论文/大量生产的软件构件0中.在此以前,子程序的概念也体现了复用的思想.但其目的是为了节省当时昂贵的机器内存资源,并不是为了节省开发软件所需的人力资源.然而子程序的概念可以用于节省人力资源的目的,从而出现了通用子程序库,供程序员在编程时使用.例如,数学程序库就是非常成功的子程序复用的例子.
在其后的发展过程中,有许多复用技术的研究成果和成功的复用实践活动.但是,复用技术在整体上对软件产业的影响却并不尽如人意.这是由于技术方面和非技术方面的种种因素造成的,其中技术上的不成熟是一个主要原因.近十几年来,面向对象技术出现并逐步成为主流技术,为软件复用提供了基本的技术支持.软件复用研究重新成为热点,被视为解决软件危机,提高软件生产效率和质量的现实可行的途径[12].
分析传统产业的发展,其基本模式均是符合标准的零部件(构件生产以及基于标准构件的产品生产(组装,其中,构件是核心和基础,/复用0是必需的手段.实践表明,这
种模式是产业工程化、工业化的必由之路.标准零部件生产业的独立存在和发展是产业形成规模经济的前提.机械、建筑等传统行
业以及年轻的计算机硬件产业的成功发展均是基于这种模式
并充分证明了这种模式的可行性和正确性.这种模式是软件产业发展的良好借鉴,软件产业要发展并形成规模经济,标准
构件的生产和构件的复用是关键因素.这正是软件复用受到高度重视的根本原因.
软件复用可以从多个角度进行考察[18].依据复用的对象,可以将软件复用分为产品复用和过程复用.产品复用指复用已有的软件构件,通过构件集成(组装得到新系统.过程复用指复用已有的软件开发过程,使用可复用的应用生成器来自动或半自动地生成所需系统.过程复用依赖于软件自动化技术的发展,目前只适用于一些特殊的应用领域.产品复用是目前现实的、主流的途径.依据对可复用信息进行复用的方式,
可以将软件复用区分为黑盒(Black -box 复用和白盒(White -box 复用.黑盒复用指对已有构件不需作任何修改,直接进行复用.这是理想的复用方式.白盒复用指已有构件并不能完全符合用户需求,需要根据用户需求进行适应性修改后才可使用.而在大多数应用的组装过程中,构件的适应性修改是必需的.
31如何实现复用
软件复用有三个基本问题,一是必须有可以复用的对象;二是所复用的对象必须是有用的,三是复用者需要知道如何去使用被复用的对象.软件复用包括两个相关过程:可复用软件(构件的开发(Development for Reuse和基于可复用软件(构件的应用系统构造(集成和组装(Dev elo pment with Reuse.解决好这几个方面的问题才能实现真正成功的软件复用.
与以上几个方面的问题相联系,实现软件复用的关键因素(技术和非技术因素主要包括:软件构件技术(Software Component T echnolo gy、领域工程(Do main Eng ineering、软件构架(Software Architecture、软件再工程(Softw are Reeng-i neering、开放系统(Open System、软件过程(Software Pro -cess、CASE 技术等以及各种非技术因素.
二、实现软件复用的关键因素
实现软件复用的各种技术因素和非技术因素是互相联系的.如图1所示,它们结合在一起,共同影响软件复用的实现.
图1 实现软件复用的关键因素 11软件构件技术
构件(Component是指应用系统中可以明确辨识的构成 69
第 2 期杨芙清:软件复用与软件构件技术
成分.而可复用构件(Reusable Component 是指具有相对独立的功能和可复用价值的构件.
可复用构件应具备以下属性[22]:¹有用性(U sefulness:构件必须提供有用的功能;º可用性(U sability :构件必须易于理解和使用;»质量(Quality:构件及其变形必须能正确工作;¼适应性(A daptability:构件应该易于通过参数化等方式在不同语境中进行配置;½可移植性(Por tabilit y:构件应能在不同的硬件运行平台和软件环境中工作.
随着对软件复用理解的深入,构件的概念已不再局限于源代码构件,而是延伸到需求、系统和软件的需求规则约、系统和软件的构架、文档、测试计划、测试案例和数据以及其他对开发活动有用的信息.这些信息都可以称为可复用软件构件.
软件构件技术是支持软件复用的核心技术,是近几年来迅速发展并受到高度重视的一个学科分支.其主要研究内容包括:
(1构件获取:有目的的构件生产和从已有系统中挖掘提取构件;
(2构件模型:研究构件的本质特征及构件间的关系;(3构件描述语言:以构件模型为基础,解决构件的精确描述、理解及组装问题;(4构件分类与检索:研究构件分类策略、组织模式及检索策略,建立构件库系统,支持构件的有效管理;
(5构件复合组装:在构件模型的基础上研究构件组装机制,包括源代码级的组装和基于构件对象互操作性的运行级组装;
(6标准化:构件模型的标准化和构件库系统的标准化. 21软件构架
软件构架是对系统整体结构设计的刻划,包括全局组织与控制结构,构件间通讯、同步和数据访问的协议,设计元素间的功能分配,物理分布,设计元素集成,伸缩性和性能,设计选择等[9].
研究软件构架对于进行高效的软件工程具有非常重要的意义:通过对软件构架的研究,有利于发现不同系统在较高级别上的共同特性;获得正确的构架对于进行正确的系统设计非常关键;对各种软件构架的深入了解,使得软件工程师可以根据一些原则在不同的软件构架之间作出选择;从构架的层次上表示系统,有利于系统较高级别性质的描述和分析.特别重要的是,在基于复用的软件开发中,为复用而开发的软件构架可以作为一种大粒度的、抽象级别较高的软件构件进行复用,而且软件构架还为构件的组装提供了基础和上下文,对于成功的复用具有非常重要的意义.
软件构架研究如何快速、可靠地从可复用构件构造系统的方式,着重于软件系统自身的整体结构和构件间的互联.其中主要包括:软件构架原理和风格,软件构架的描述和规约,特定领域软件构架,构件向软件构架的集成机制等.
31领域工程
领域工程是为一组相似或相近系统的应用工程建立基本
能力和必备基础的过程,它覆盖了建立可复用软件构件的所
有活动[22].领域是指一组具有相似或相近软件需求的应用系统所覆盖的功能区域.领域工程包括三个主要的阶段.
(1领域分析:这个阶段的主要目标是获得领域模型(Do -main M odel.领域模型描述领域中系统之间的共同的需求[17].这个阶段的主要活动包括确定领域边界,识别信息源,分析领域中系统的需求,确定哪些需求是被领域中的系统广泛共享的,哪些是可变的,从而建立领域模型.
(2领域设计:这个阶段的目标是获得领域构架(Domain -Specific Software Architecture,缩写为DSSA .DSSA 描述在领域模型中表示的需求的解决方案,它不是单个系统的表示,而是能够适应领域中多个系统的需求的一个高层次的设计[17].建立了领域模型之后,就可以派生出满足这些被建模的领域需求的DSSA.由于领域模型中的领域需求具有一定的变化性,DSSA 也要相应地具有变化性.
(3领域实现:这个阶段的主要行为是定义将需求翻译到由可复用构件创建的系统的机制.根据所采用的复用策略和领域的成熟和稳定程度,这种机制可能是一组与领域模型和DSSA 相联系的可复用构件,也可能是应用系统的生成器.
这些活动的产品(可复用的软件构件包括:领域模型、领域构架、领域特定的语言、代码生成器和代码构件等.在领域工程的实施过程中,可能涉及的人员包括[5]:
(1最终用户:使用某领域中具体系统的人员;
(2领域专家:提供关于领域中系统信息的人员,他应该熟悉该领域中系统的软件设计和实现、硬件限制、未来的用户需求及技术走向;
(3领域分析员:收集领域信息、完成领域分析并提炼出领域产品(可复用软件构件的人员,他应该具有完备的关于复用的知识,并对分析的领域有一定程度的了解.
(4领域分析产品(构件、构架的使用者:包括最终用户、应用系统的需求分析员和软件设计者.
领域工程的主要产品和人员如图2所示. 图2 领域工程 41软件再工程
软件复用中的一些问题与现有系统密切相关,如:现有软件系统如何适应当前技术的发展及需求的变化,采用更易于理解的、适应变化的、可复用的系统软件构架并提炼出可复用的软件构件?现存大量的遗产软件系统(Legacy Software由于技术的
发展,正逐渐退出使用,如何对这些系统进行挖掘、整理,得到有用的软件构件?已有的软件构件随着时间的流逝会逐渐变得不可使用,如何对它们进行维护,以延长其生命
70 电 子 学 报1999年
期,充分利用这些可复用构件?等等.软件再工程(Software R eengineering正是解决这些问题的主要技术手段.
软件再工程是一个工程过程,它将逆向工程、重构和正向工程组合起来,将现存系统重新构造为新的形式[7].再工程的基础是系统理解,包括对运行系统、源代码、设计、分析、文档等的全面理解.但在很多情况下,由于各类文档的丢失,只能对源代码进行理解,即程序理解.
再工程的主要行为如图3所示
.
图3 软件再工程 51开放系统技术
开放系统技术的基本原则是在系统的开发中使用接口标准,同时使用符合接口标准的实现.这些为系统开发中的设计决策,特别是对于系统的演化,提供了一个稳定的基础,同时,也为系统(子系统间的互操作提供了保证.开放系统技术具有在保持(甚至是提高系统效率的前提下降低开发成本、缩短开发周期的可能.对于稳定的接口标准的依赖,使得开发系统更容易适应技术的进步[8].当前,以解决异构环境中的互操作为目标的分布对象技术是开放系统技术中新的主流技术.开放系统技术为软件复用提供了良好的支持.特别是分布对象技术使得符合接口标准的构件可以方便地以/即插即用0的方式组装到系统中,实现黑盒复用.这样,在符合接口标准的前提下,构件就可以独立地进行开发,从而形成独立的构件制造业.
61软件过程
软件过程又称软件生存周期过程,是软件生存周期内为达到一定目标而必须实施的一系列相关过程的集合.一个良好定义的软件过程对软件开发的质量和效率有着重要影响.当前,软件过程研究以及企业的软件过程改善已成为软件工程界的热点,并已出现了一些实用的过程模型标准,如CM M 、ISO 9001/T ickIT 等.
然而,基于构件复用的软件开发过程和传统的一切从头开始的软件开发过程有着实质性的不同,探讨适应于软件复用的软件过程自然就成为一个迫切的问题.
71C ASE 技术
随着软件工程思想的日益深入人心,以计算机辅助开发软件为目标的CA SE(Computer Aided Software Engineer ing 技术越来越为众多的软件开发人员所接受,CA SE 工具和CASE 环境得到越来越广泛的应用.CASE 技术对软件工程的很多方面,例如分析、设计、代码生成、测试、版本控制和配置管理、再工程、软件过程、项目管理等等,都可以提供有力的自动或半自动支持.CA SE 技术的应用,可以帮助软件开发人员控制软件开发中的复杂性,有利于提高软件开发的效率和质量.
软件复用同样需要CASE 技术的支持.CA SE 技术中与软件复用相关的主要研究内容包括:在面向复用的软件开发中,可复用构件的抽取、描述、分类和存储;在基于复用的软件开发中,可复用构件的检索、提取和组装;可复用构件的度量等等.
81非技术因素
除了上述的技术因素以外,软件复用还涉及众多的非技术因素,如:机构组织如何适应复用的需求;管理方法如何适应复用的需求;开发人员知识的更新;创造性和工程化的关系;开发人员的心理障碍;知识产权问题;保守商业秘密的问题;复用前期投入的经济考虑;标准化问题等等.这些因素超出了本文的范围,这里不再详细讨论.
三、复用的研究与实践活动 11领域工程
研究实践表明,软件复用在特定领域内更容易获得成功.因此,领域工程受到高度重视,已有许多研究成果.这里将介绍三个有代表性的工作.
卡内基#梅隆大学的软件工程研究所(CM U /SEI提出了面向特征的领域分析方法(F eature -O riented Domain Analysis
M ethod,缩写为FODA 方法[8]
.它支持对某领域中系统共性和个性的发现、分析和文档记录.FODA 的过程分为三个阶段:上下文分析(Context A nalysis、领域建模(Domain M ode-l ing、构架建模(A rchitecture M odeling.
(1上下文分析:上下文分析的目标是定义领域的范围.在这个阶段要分析领域与外部元素间的关系,例如不同的操作环境,不同的数据需求等,还要对可变性进行评价.上下文分析的结果是上下文模型.
(2领域建模:领域的范围确定后,领域建模阶段提供了一些步骤来分析领域中的应用的共同性和差异,并产生领域模型.领域建模阶段主要包含三种行为:
#特征分析(F eature Analysis.在特征分析阶段,要获得客户或最终用户对一类系统的一般能力的理解,即特征.特征描述了领域应用的上下文、需要的操作和属性、以及表示的变化.
#信息分析(I nformation A nalysis.在信息分析中,要定义和分析为实现领域中应用所需的领域知识和数据需求.信息分析的目标是用领域实体及其相互之间的关系表示领域知识,并使它们在操作分析和构架建模中可以用来派生对象和数据定义.
#操作分析(Oper ational A nalysis.在操作分析中,要识别领域中应用的行为特性,例如数据流和控制流的共同性和差异、有限状态自动机模型等.
(3构架建模:这个阶段为领域中的应用提供软件解决方案.在这个阶段中开发出构架模型,即领域中应用的高层设计.这个阶段的焦点是识别并发进程和面向领域的共同模块.这个阶段中定义进程,并将定义在领域模型中的特征、功能和数据对象分配到进程和模块中.
F ODA 方法已成功地应用于美国空军运动控制等领域. 71
第 2 期杨芙清:软件复用与软件构件技术
在美国国防部高级研究项目署(AR PA 资助下,W ill T racz 提出了领域构架方法(Domain -Specific Software Arch-i
tecture,缩写为(DSSA 方法[22]
.在最高的级别上,该方法有五个阶段.每个阶段可以进一步划分为一些步骤或子阶段.每个阶段包括一组需要回答的问题,一组需要的输入、一组将产生的输出和验证标准.该方法的领域工程过程是并发的(con -curr ent、递归的(recursive和反复的(iterativ e.或者可以说,它是螺旋型的(spiral.完成该过程可能需要对每个阶段经历几遍,每次增加更多的细节.
该领域工程过程的五个阶段是:
(1定义领域范围:重点是确定领域中包含哪些元素以及领域工程过程到何时结束.这个阶段的一个主要输出是领域中的应用需要满足的一系列用户的需求;
(2定义领域特定的元素:目标是制订领域字典和领域术语的同义词词典.在领域工程过程的前一个阶段产生的高层次块图中增加更多的细节,特别是识别领域中应用间的共同性和差异性;
(3定义领域特定的设计和实现需求约束:目标是描述解空间中的特性.不仅要识别约束,并且要记录约束对设计和实现决定造成的后果,还要记录对处理这些问题时产生的所有问题的讨论;
(4定义领域模型和构架:目标是产生DSSA,并说明构成它的模块或构件的语法和语义;
(5产生、搜集可复用产品:目标是为DSSA 增加构件使得它可以被用来产生问题域中的新应用.
ST AR S 领域分析过程(Domain A nalysis Process分四个阶段,每个阶段用结构化分析与设计技术描述,使用SADT 图
[22] :
(1准备领域信息:定义领域,按自顶向下方式完成高级功能分析;
(2分类领域实体:按自底向上方式识别和描述对象及操作,并构造领域字典; (3导出领域模型:结合上述信息,构造基于可复用构件的类属功能模型; (4扩展模型并分类:应用并确认模型.
21产品线系统
产品线系统(Product L ine System是CM U /SEI 提出的产品开发的组织方式.产品线集中体现了软件复用思想.经验表明,单靠技术方法并不能保证成功的产品线生产能力,经济、组织、管理和过程在建立和维护产品线中起到了关键作用.一个产品线是共享一组共同设计及标准的产品族,从市场角度看是在某市场片断中的一组相似的产品.建立产品线是根据生产的经济学,使产品族可复用构件能达到最大限度的复用目的.产品线方法可以通过各种可复用软件构件,如需求、需求规约、构架、代码构件、文档、测试策略和计划、测试案例和数据、开发人员的知识和技能、过程、方法及工具等,支持最大限度的软件复用.产品线也是基于在相同产品价格条件下提高竞争力的商业考虑.
产品线系统已有成功的应用实例.图4和图5分别是瑞典CelsiusT ech System 公司和美国空军电子系统中心(ESC
的产品线系统[3、6]
.这两个产品线系统的共同特点是构架组、构件组和集成组的分离.构架组负责产品线系统构架的定义和演化.构件组负责根据产品线系统构架,生产和管理可复用构件.集成组则根据具体客户的需求,利用产品线系统构架和可复用构件进行具体的系统集成
.
图4 瑞典CelsiusTech System 公司的产品线 图5 美国空军电子系统中心(ESC的产品线 图6 ALOAF 参考模型
31构件及构件库的标准化
美国军方与政府资助的项目中,已建立了若干构件库系统,如CARDS 、ASSET 、DSRS 等.由DA RPA 发起,由美国军方、SEI 和M I T RE 支持的ST ARS 项目在此基础上考虑了开放体系结构的构件库之间共享资源和无缝互操作的问题,并于1992年提交了AL OAF (Asset L ibrary O pen Architecture F ramew ork,开放体
系结构的构件库框架V ersion112版本.这一报告体现了ST ARS 对可复用构件库系统的认识,给出了一个构件库框架的参考模型,并就此实现了A LOAF 规约作为该参考模型的实例,由此证明以公共元模型为基础,在构件库之间交换信息和创建易于移植的复用工具是可能的和必要的.AL OAF 参考模型如图6所示[21].
AL OAF 的短期目标是尽快实现不同复用库间的构件共享,长期目标是实现异质构件库间的无缝互操作,包括构件及其描述的共享及丰富的构件库工具集的易移植性.其基本观点是软件系统的开发将演化成一种过程驱动的、特定于领域的和基于复用的技术支持范型.ST ARS 认为构件库是软件工程环境(SEE的子系统之一,其提供的功能应与SEE 框架的参考模型一致.构件库系统利用SEE 提供的服务,并向上层提供服务.A LOA F 更关注构件库框架而非更广泛的SEE 框架.A LOA F 包括构件库参考模型及其服务规约和数据描述规约.A LOAF 在构件库和复用服务方面对SEE 参考模型进行补充.A LOA F 与SEE 的关系如图7所示.
可复用库互操作组织(Reuse libr ar y Interoper ability 72 电 子 学 报1999年
第 2 期 杨芙清: 软件复用与软件构件技术 73 G roup, 缩写为 R IG 是一个志愿的基于一致意见的组织, 由来 自政府、 学校和私人企 业的成 员组成. RI G 认 为, 当前几 乎没 有有效的方法在众多的政府和企业界软件复用库间共享软件 构件, 其结果是低效和 不必要 的冗余. 可互 操作性, 即复 用库 间软件构件的共享, 可能是在短期内提高效率、 增加复用库的 价值和影响, 并在长期中 避免不 兼容协 议的爆 炸性增 长的关 键. 因此, R IG 的目标 是致力于 开发可 互操作 性的解 决方 案. R IG 的成果 包括 BI DM 和 U DM [ 19~ 20] . U DM 是基于 ALOA F 的三层数据 模型 的统 一数 据模 型. BI DM 是 UDM 的 一 个子 集, 定义了为了实现互操作, 复用库交换软件构件时所需的信 息的最小集. BIDM 已被 I EEE 采纳为标准. 北大西洋公 约组 织( N AT O 针对 N AT O、 AT O 参 与国 N 和承包商制定了一组关于软件复用的标准, 其中包括/ 可复用 构件开发标准0 、 可复用软件构件库管理标准0 、 软件复用过 / / [ 13~ 15] 程标准0 . 制订这些标准的目标是供 N AT O 及其参与国 的项目管理部门
使用它们来建立复用计划需求和向承包商提 供指导. 承包商则将它们用于特定项目的开发 实践. 4 构件组装技术 1 CORBA 是公共对 象请求 代理 体系 结构 ( Common Object R equest Broker A rchitecture 的缩写, 是对 象管理 组织( OM G 开发的一套分布式对象技术标准, 涉及接口、 注册、 数据 库、 通 信和 出 错 处 理 等 方 面 的 问 题 [ 16] . 和 对 象 管 理 体 系 结 构 ( OM A 定义的其他 对象 服务相 结合, CORBA 成为 支持 分布 式系统中对 象技 术的 中间 件设 施. CO RBA 的 对象 请 求代 理 ( ORB 作为转发消息的 中间件, 实现 了对象 间的无 缝集成 和 互操作. 因此, CORBA 可作为 面向对象 的软件 构件 在运行 级 上组装的技术基础, 从而实现构件的黑盒复用. 当前已有许多 符 合 CORBA 的 OR B 产 品, 如 ORBIX、N EO、V isiBroker、 Pow er Broker、SmallT alkBroker、SOM / DSO M 、DA IS、NonStop 等. OL E 是微软公司开发的支持对 象连接 嵌入的机 制, 其初 旨是解决复 合文 档问 题 [ 10] . OL E 为 构件 对象 的互 操 作提 供 了基础支 持, 因 此, 也 为构 件 的 黑盒 复 用 提供 了 技 术 基础. OL E 是 主 要 的 不 符 合 CORBA 标 准 的 对 象 连 接 中 间 件. DCOM 是微软公司开发的分 布式构件 对象模 型, 支持分 布式 系统中的面向对象技术 [ 11] . JAVA 是近几年随着 WEB 风行 全球 而发 展起来 的一 种 新语言. 它是 一 种 纯 OO 的 语 言, 外 观 象 C + + , 内 核 类 似 Smalltalk. JA VA 和 WEB 的结合带来了移动的对象、 可执行的 内容等关键概念. JA VA 具有 体系结构中立 的特性, 从而 使得 JA VA 程序可不需修 改甚至 重编 译而运 行于 不同 平台 之上. JA VA 的新版还加入了 远程 方法 调用 ( RM I 的特 性, 在效 果 上, RM I 提供 了类似 CORBA 的 ORB 的功能. JA VA 的这些特 性使其成为软件构 件技术 的良好 支持工 具. 用 JA VA 书写 的 构件将具有平台独立性 和良好的互操作性. 图7 ALO AF 与 SEE 的关系 图8 一种基于复用的软件生产方式 图 9 青鸟软件生产线 这些技 术的流行为构 件组装提 供了很 好的技 术支持, 同 时它们也为 构件提供了实 现标准. 软件 复用和 分布对 象技术 的结合使得即插即用的构件黑盒组装成为可能. 5 基于复用的软件开发过程 1 Caldier i 和 Basili 提出了一 种工 厂化的 软件 生产 方式 [ 4] , 如图 8 所示. 在这种模型中, 构件生 产组和 系统开 发组间 严格按 照生 产者 消费者关系进行任务分工, 经验工厂负责生产 、 提供 构件, 项目组不再编程, 而是通过从经验工厂中请求所需的构 件集成组装 而得到最终所 需的系统 . 经 验工厂 的活动
分为同 步活动和异步活动. 同步活动指配合项目组的活动, 接收构件 查找请求或定制请求, 为项目组服务. 异步活动指有目的的构 件生产或对同步活动中的构件进行再工程以提高构件的可复 用性. 6 复用成熟度模型( RMM 1 受 SEI 的能力成熟 度模 型( Capability M aturity M odel, 缩 写为 CM M 的启 发, 已出 现 了 几 个复 用 成 熟 度模 型 ( Reuse M aturity M odel, 缩写为 RM M , 作为对 企业 内复 用水平 层次 的度量. 在 I BM 的 RM M 中, 将企 业的 软件 复用 水平 分为 五级. 随着复用成熟度级别的提高, 复用的范围、 复用使用的工具和 复用的对象都有变化: ¹ 初始级( Initial : 不协调 的复用努力. 复用是个人的行为, 没有库的支持, 主要的 复用对象是子程序 和宏; º 监 控级 ( M onitored : 管 理 上 知 道复 用, 但不 作 为 重 点. 复用是小组的行为, 有非正式 的、 无监控的数据库, 复用的 对象包括模块 和包; » 协调 级( Coo rdinated : 鼓励 复用, 但 没 有投资. 复用的范围包括整个部门, 有配置 管理和构件文档的 数据 库, 复 用 的 对 象 包 括 子 系 统、 式 和 框 架; ¼ 计 划 级 模 ( Planned : 存在组织上的复用支 持. 在项目 级别支持 复用, 有 复用库, 复用的对 象包 括应用 生成 器; ½ 固 有级 ( Ing rained : 规范化的复用支持. 复用成为整个企业范围的行为, 有一组领 域相关的复用库, 复用的对象包括 DSSA . L oral Federal System 公 司的 RM M 也 分为 五级: ¹ 初 始 级: 偶尔的开发过程复用; º 基 本级: 在项目 级上定 义的开 发 过程复用; » 系统化级: 标准的开 发过程复用; ¼面向领域级: 大规模的 子 系 统 复 用; ½ 软 件 制 造 级: 可 配 置 的 生 成 器 及
74 DSSA. 电 子 学 报 1999 年 件复用者负责进行基于构件的软 件开发, 包括构件查询、 构件 理解、 适应性修改、 构件组装以及 系统演化. 其技术路线是以现 有的青 鸟软件 开发环 境为基 础, 研 究 构件 构架模式的软件生产技术 , 制定符合国情、 国际兼容的 青鸟构件标准规范; 支持专业化的构件生产, 即有目的的构件 开发和采用再工程技 术从已 有系统中 获取构 件; 采用领 域工 程技术, 支持专业化的构 架开发; 强有 力的构 件库、 构架库 管 理; 支持软件过程设计和 控制; 支持基 于构件、 构架 复用的 应 用系统集成( 组装 . 青鸟 Ó 型系统 支持的 软件开 发过程 如图 10 所示. 青鸟 Ó 型系统的体 系结构如图 11 所示: HP 的 RM M 将复用成熟度与复用率联系起来, 也分为五 级: ¹ 无复用: - 20% 至 20% 的复 用率; º 挖 掘整 理: 15% 至 50% 的复用率; » 计划复用: 30% 至 40% 的复用率; ¼系统化 复用: 50% 至 70% 的复
用率; ½ 面向领域的复用: 80% 至 90% 的复用率. 四、 青鸟软件生产线 青鸟工 程是国家重点 支持的科 技攻关 课题, 已有 十余年 的发展历程./ 七五0、 八五0 期间, 青鸟 工程面 向我国 软件产 / 业基础建设的需求, 以实用的软件工程技术为依托, 研究开发 具有自主 版 权的 软 件 工程 环 境, 为 软件 产 业提 供 基 础设 施 软件工具、 平台和环 境, 建 立工业 化生产 的基本 手段, 促 进我国软件 开发由手工作 坊式转向 用计算 机辅助 开发, 以提 高软件开发效率, 改善软件产品质量. 大型软件开发环境青鸟 系统便是这一阶段攻关工作的成果 [ 1] . / 九五0期间, 青鸟工 程的任 务是在前 期攻关 工作的 基础 上, 为形成我国软件产业规模提供技术支持. 重点是研究软件 的工业化生产技术, 开发软件 工业化 生产系 统 青鸟 软件 生产线系统, 即基于 构件 构架 模式的 软件开 发技术 及系 统, 为软件开发 提供 整体 解决 方案, 推 行软 件工 业化 生 产模 式, 促进软件产业规模的形成. 作为研究成果之一, 青鸟工程开发了基于异构平台 、 具有 多信息源接口的应用系统集成( 组 装 环境青 鸟 Ó 型( JB3 系 统. 青鸟 Ó 型系统研制的目标是针对软件工业化生产的 需求, 完善并初步 实现青鸟软件 生产线的 思想, 制定 软件工 业化生 产标准和规 范, 研究 基于/ 构件 构 架0 模式的 软件工 业化 生产技术, 研制支持面 向对象 技术, 支持软 件复用 的, 基 于异 构平台、 具有多信息源接口的应用系统集成( 组装 环境 . 其最 终目标是要构造如图 9 所示的软件生产线系统 [ 2] . 图 11 青鸟 Ó 型系统的体系结构 在对国际相关标准 规范进 行比较 研究的 同时, 青鸟工 程 对国际上学术界关于软 件复用和软件构件技术的一些主要成 果进行了分析研究, 结合 前期攻 关和 863 课 题研究 的实践 和 基础, 提出了一套青鸟构件标准规范. 这套 标准规范保持了和 国际标准规范的接轨 和兼容, 同时 也融进 了一些 国际上 重要 研究成果和自己的研究成果, 具有自身特色和优点. 这些规范 包括: 青鸟可复用构件制 作指南、 青鸟 领域工 程方法 指南、 青 鸟构件模型、 青鸟构件描 述语言、 青鸟 构件库 概念模 型、 于 基 复用的软件开发过程. 青鸟构件 构架模 式的软件开发技术已在北大青鸟商用 系统公司开发的若干 商场管 理系统中 进行试 用. 青鸟公 司先 后开 发了桂林 百货大 楼、 北京前 门商场等 POS 系统, 积累 了 丰富 的领域信 息和经 验, 通过领 域工程, 提炼 出 PO S 系统 的 类属构架及 120 多个构 件. 现 正使用 这些构 架和构 件进行 新 的 POS 系统的集成组装工作. 五、 结束语 图 10 青鸟软件开发过程 在青鸟软件生产线
中, 软件的 生产过 程划分 为三类 不同 的生产车间, 即 应用 构架 生产 车间、 件生 产车 间和 基 于构 构 件、 构架复用的应用集成( 组装 车间, 从而形成软件产业内部 的合理分工, 实现软件的工业化生产. 软件开发人员被划分成 三类: 构件生产者、 件库管 理者和 构件复 用者. 这三种 角色 构 所需完成的 任务 是不 同的, 构 件生 产者 负责 构 件的 生产、 描 述; 构件库管理者负责构件分类以及构件库的管理工作 ; 而构 自软件复用被提 出以来, 人们 进行了 许多复 用的实 践活 动. 归纳起来, 复用项目 的成功 主要发 生于以 下几种 情形: ¹ 在较小的特定领域; º 在理解充分的领域; » 当领域知识变动 缓慢时; ¼当 存在构件互 联标准时; ½ 当 市场规模形 成时( 大 量的项目可以分担费用 ; ¾当 技术规 模形成时 ( 有大量 可用 的、 可获利的构件 . 而复用项目失败的 原因主 要包括: ¹ 缺 乏对复 用的管 理 支持; º 没有对开发可复用软件及复用已有软件的激励措施;
第 2 期 杨芙清: 软件复用与软件构件技术 75 » 没有强调复用问题的规程 或过程; ¼没有足 够的可 复用资 源; ½ 没有 良好的分 类模式, 使得构件 查找比较困 难; ¾没有 良好的构件库支持和控制复 用; ¿ 构件 库中的 构件没 有良好 的接口; À已有的部件不是为了复用而开发的 . 经过软件复用的研究和 实践方 面的努 力, 在 构件开 发方 面已经取得一定的成果. 当前已存在一些政府、 军方或企业自 己拥有的构 件库, 在某 些领域, 如科 学计算, 已有 商用的 构件 存在. 同时, 存在大量独立于应用领域的计算机特定的软件构 件, 如: 程序 设计语言的类库、 函数库、 VBX、 OCX、 用户界面构 件等. 但对大多数特定 领域来 说, 可 复用构 件仍十 分短缺, 从 而形成了一个巨大的应用软件构件市场. 软件复用技术将促进软 件产业 的变革, 使软 件产业 真正 走上工程化、 工业化的发展轨道. 软件复用将造成软件产业的 合理分工, 专业化的构件生产将成为独立的产业而存在 , 软件 系统的开发 将由软件系统 集成商通 过购买 商用构 件, 集成组 装而成. 软件复用所带来 的产业 变革将 会带来 更多的 商业契 机, 形成新的增长点. 在当前的情况下, 我国的软件产业发展一定要结合 国情、 抓住机遇. 软件构件技术的应用, 正在促进软件产业改革和重 组分工, 这对我国软件产业的发展是一个良好的机遇. 我国正 在大力加强国家信息化工作, 具有广大的信息市场. 由于具体 的国情, 大多数 信息 系统 的开 发工 作是 由国 内 公司 承担, 因 此, 也就培养了一大批 领域专 家, 为 推行软 件构件 技术、 发展 软件构
件生 产业奠定了 良好的基 础. 同时, 在构件 技术方 面, 多年的攻关 研究已使我们 具有良好 的技术 积累. 我们 应在国 家支持下, 在行业部门的领导下, 以政府或行业行为的方式推 广软件构件技术, 促进软件构件企业的发展. 我国已失去了较 多的信息产品市场, 目前, 正面临振兴的机遇, 如何抓住 机遇, 也是严峻的挑战. 在软件产业的发展策略 上, 应 由政府 或行业 主管部 门组 织构件标准 规范的制定和 发布: 选择若 干领域 进行软 件构件 技术的推广 和软件构件企 业建设的 试点工 作, 推行基 于构件 构架模式的软件生产线的工程化、 工业化软件生产技 术; 加 快软件复用和软件构件技术的普及、 培训工作, 培养一批高质 量的领域分析员队伍; 制定合理措施及政策, 激励软件构件技 术的采用和推广; 建立软件风险投资机制和软件生产基 金, 激 励构件专门 企业的形成和 零散构件 的开发; 尽 快完成 试点工 作, 及早进军国际应用构件市场. 11 杨芙清 中国 科学院院 士, 教授, 博 士生导 12 13 1 2 李克勤 1973 年 3 月 出 生. 北 京大 学计 算 机科学技术系博士研究生. 主要从事软件 工程和 软件工程环境、 软件复用和软件构件技术 等方面 的研究工作. 梅 宏 教授. 1963 年 5 月出 生. 1992 年于 上海交通大学计算机科 学及工 程系获 工学 博士 学位, 1994 年 10 月从北 京大学计 算机科学 技术 系博士后出站. 主要研究领域为软件工程 和软件 工程环境、 新型程序设 计语言、 软件复 用和 软件 构件技术等. 已发表论文 50 多篇. 参 考 文 献 杨芙清, 邵维忠, 梅 宏. 面 向对象 CA SE 环境 J B Ò 型系 统的 设计 和实现. 中国科学, 1995, 5 杨芙清. 青鸟过程现状与 发展 兼论我 国软件产 业发展途 径. 第 六次全国软件工程学术 会议论文 集, 软件工 程进展 技术、 方法 和实践. 杨芙清, 何新贵主编, 清华大学出版社, 1996, 5 3 4 5 6 7 Lisa Brownsw ord, Paul Clement s. T echnical Report , CM U / S EI 96 - T R 016, O ct ober 1996 Caldiera, V . R . Basili. IEEE Com put er, Feb. 1991, 24( 2 : 61~ 70 Sholom G . Cohen et al. Technical Report , CM U / SEI -T R -91 -28, ESD -T R -91 -28, June 1992 Sholom Coh en et al. Technical Report , CM U / SEI - TR -96 -018, Sept ember 1996 Pet er H. Feiler. R eengineering: An engineering problem. T echnical Report CM U / SEI 93 -5, Pitt sburgh , PA : Soft ware Engineering - -SR Inst it ut e, Carnegie M ellon U n iversit y, July 1993 8 9 10 John Foreman, Kimberly Brune, Pat ricia M cM illan, R obert R osen st ein. Sof tw are Technology R eview , CM U / SEI, June 1997 David Garlan, M ary Shaw . A dvances in
Soft w are Engineering and K now ledge Engin eering, volume I, World Scient ific Publishing, 1993 M icrosof t Corporat ion . The component object model specification. V ersion 0. 9, O ct ober 24, 1995 [ online] . A vailable WWW 3U R L: ht t p: Mw w w . mocrosof t. com/ oledev/ 4( 1995 M icrosoft Corporat ion. Dist ribut ed component object model protocol COM / 1. 0. draf t, N ovember 1996[ online] . Available WWW3U R L: htt p: Mw ww . microsof t. com/ oledev4( 1996 Haf edh M ili et al. IEEE T ransact ions on Soft ware Engineering, Jun e 1995, 21( 6 : 528~ 562 N A TO . NA TO st andard f or developing reusable sof tw are compo nent s. V ol. 1 of 3 volumes, N A TO cont act number CO -5957 DA , -A 1991 师, 中国电子学会、 计算机学会副理事长, 北京大 学计 算机 科学技 术系主 任. 1932 年 生于江 苏无 锡, 1958 年北京大学研究生毕 业. 主要研 究领域 为系统软件、 软件工 程和软 件工程 环境、 件复 软 用和软件构件技术、 软件工 业化生 产技术 等. 已 发表论文 70 多篇, 出版专著 5 部. 14 N ATO . N AT O standard for managem ent of a reusable sof tw are com ponent library. V ol. 2 of 3 volumes, NA TO contact number CO 5957 DA , 1991 -A ( 下转第 51 页
第 2 期 印建平: 低 于量子破坏性测量理论极限的闭环光电流噪声压缩 51 探测器的量子效率 G 无关. ( 2 与光电流不同的是在闭环光场中, 量子噪声分量与经 典调制分量 之间的反相关 是不完全 的, 其总的 强度起 伏可以 是亚泊松的, 也 可以 是超 泊松 或泊 松的, 这 取决 于反 馈 增益 G 和光探测器的量子 效率 G. 当 G> 50% 时, 不论 G 多大, 闭 环光场总的强度起伏总是亚泊松的( 也即振幅 压缩态光场 . ( 3 在闭合反馈回路 中光电 流噪声 的压缩 与光场 强度噪 声的压缩包 含着不同的内 容, 前 者不仅 包含了 被观测 到的光 场强度噪声的压缩( 即后 者 , 而 且还包 含了由 经典调 制分量 中与光探测 器噪声之间的 反相关效 应所导 致的压 缩, 因而光 电流噪声的压缩可望突破由探测器量子效率所决定的理论极 限. 此外, 由于本实验中 GE 85% , 故我们所观测到 的深度压 缩的闭环光 场是一个反相关 态光场 ( 在 量子噪 声分量 与经典 调制分量之 间存在着高度 的反相关 效应, 由于 这种反 相关效 应导致了量 子噪声压缩, 故我们 称之为 非经典 的光子 反相关 效应 , 其总的 强度起伏 是亚泊松的, 也即 是一个闭 环的振幅 压缩态光场. 参 1 6 7 8 9 2 elect ron st at istics in a negative feedback semiconductor laser. Opt . Commun. , 1986, 57( 4 : 290~ 296 Y . Y
amamot o, N . Imot o. A mplitude squeezing in a semiconducior laser using quant um nondemolit ion measurement and negat ive feed back. Phys. Rev. , 1986, A 33( 5 : 3243~ 3261 3 K . Tsubona and S. M oriw aki. S hot noise lim it ed low frequency in t ensit y noise of a N d: YA G laser. Jan . J . A ppl. Phys. , 1992, 31: 1241 ~ 1242 4 M . S . Taubman, H. Wiseman, H . A . Bachor. Q uant um imit ed prop -l ert ies of an int ensit y noise eat er. 1993: 1 ~ 12 ( Privat e Communi cat ion 5 Y in Jianping and W ang Y uzhu. Generat ion of sub Poissonian light in an open -loop L ED s syst em by t he quantum correlat ion. Chin. Phys. Let t. , 1993, 10( 12 : 724~ 727 J. H. Shapiro, et al . S emiclassical t heory of light detect ion in t he pre sent of feedback. Phys. Rev. Let t . , 1986, 56( 11 : 1136~ 1139 J. H . Shapiro, et al. T heory of light det ect ion in t he present of feed back. J. O pt . Soc. Am . , 1987, B4( 10 : 1604~ 1619 H . M . W iseman. Q uant um t heory of cont inous f eedback. Phys. Rev. , 1994, A49( 3 : 2133~ 3150 P. J . Edw ards. S ub -Poisson light f rom GaA lAs in frared emitt ing diodes. Int . J. O ptoelectr. , 1991, 6( 42 : 23~ 28 考 文 献 S. M ashida and Y. Yamamoto. O bservation of sub -Poissonian phot o - ( 上接第 75 页 15 16 17 NA TO . N AT O stan dard for soft ware reuse procedures. V ol. 3 of 3 volumes, NA TO cont act number CO -5957 -ADA , 1991 O bject M anagement G roup home page [ online] . A vailable WW W 3U R L: htt p Mww w . omg. org4( 1996 Jam es Pet ro, et al. Proc. S eventh Int ernat ional Workshop on CA SE, July 10~ 14, 1995, Toront o, O nt ario, Canada, IEEE Com put er Soci et y Press, Los Alamitos, California, U SA : 60~ 69 18 Ruben Prieto iaz. St at us report : sof tw are reusability. IEEE Soft-D w are, M ay 1993, 10( 3 : 61~ 66 22 21 20 19 R IG . Basic Int eroperability dat a model ( BIDM . R PS -0001, Reus e Library Int eroperabilit y G roup, April, 1993 R IG. U nif orm dat a model for reuse libraries ( U DM . RPS -0002, R euse Library Int eroperability Group, Jan. , 1994 S TAR S. A sset library open archit ect ure framework version 1. 2. In f ormal T echnical Report ST AR S C -T -04041/ 001/ 02, 1992/ 8 Will Tracz. Conf essions of a U sed Program Salesman Inst itut ionaliz ing Soft w are R euse. Addison -Wesley Publishing Co. , N ew Y ork, N Y, A pril 1995
因篇幅问题不能全部显示,请点此查看更多更全内容