1
 软件工程
1.11.4.1 9.4.1 软件构件

9.4.1 软件构件

从当前世界软件发展来看,提高软件生产率的手段主要有3个:程序自动化生成、CASE工具环境和软件复用。经过几十年的发展来看,软件复用已经被证明是解决软件危机、提高软件生产率和软件质量与规范、推进软件工程化开发和工业化生产的最为现实可行的途径。

软件复用一直是软件工程研究和实践的重要方向之一。由于软件具有知识密集、生产特殊等性质,工业化生产较困难。20世纪90年代以来,随着面向对象方法的普及及软件体系结构、领域工程等研究的深入,构件-构架开发方法已成为新一代软件开发方法的前沿发展方向,并正在走向成熟。基于构件-构架技术,可以在更高抽象层次上实现大粒度的软件复用,奠定了现实可行的软件工业化生产技术基础。由此可见,基于构件-构架复用的软件开发技术是实现软件产业工业化生产的核心技术,也是形成软件产业规模化生产的技术基础。

另一方面,随着网络规模、技术与应用的快速发展,软件技术与系统也日益体现出网络化、分布性等特性,如图9-3所示。在各类分布对象技术(如CORBA、EJB、COM+等)的发展基础上和在高速网络环境下,应用服务技术为新一代的软件系统发展奠定了基础,通过直接提供应用服务,使得软件产品供应商能够适应人们对技术服务的需求,这些服务构件在有效管理、广泛复用的基础上,可以产生更好的效能。

软件复用是软件产业工业化生产的基础,软件构件作为软件系统中的可复用、有机构成成分,已成为软件产业的核心资源,也是信息产业的关键资产。有效管理、应用相关构件、形成大规模的复用,将会提升软件产业的整体实力。构件库系统作为软件复用的基础设施,提供软件资源管理、应用和共享的机制。

20世纪90年代以来,构件化开发成为软件工程中的重要开发方法,其主要研究与应用现状如下。

(1)在领域工程方面,代表性的方法有卡内基梅隆大学软件工程研究所提出的FODA方法、Will Tracz提出的DSSA方法、贝尔实验室提出的FAST方法、Mark Simos提出的ODM方法。但目前没有广泛适用的领域建模标准与相关工具支持。

(2)在软件体系结构方面,Kruchten提出的“4+1”模型是软件体系结构描述的一个经典范例。Booch则从UML角度给出了一种由设计视图、过程视图、实现视图和部署视图,再加上一个用例视图构成的体系结构描述模型。2007年通过的国际标准ISO/IEC 42010综合了体系结构描述研究成果,并参考业界的体系结构描述的实践,规定了软件架构的描述方法与模型。

(3)在建模技术方面,由OMG负责组织修订和发行的UML是在多种面向对象建模方法的基础上发展起来的建模语言,已成为实际上的建模语言技术工业标准,可以描述现今软件系统中存在的许多技术,如模型驱动架构(MDA)和面向服务的架构(SOA)。目前已有众多的UML建模支持工具。

img176

图9-3 软件开发模式的转变

(4)在构件组装技术方面,有基于架构的构件组装方法,以北京大学梅宏提出ABC组装为代表,并已有了相应的支持工具;有基于框架的构件组装和基于工作流的组装。构件的组装方式目前主要有对象连接式、接口连接式、插头插座式及面向连接基于消息的方式。

近年来,在国家科技攻关计划、863计划等的支持下,我国在软件构件化开发方面取得了一批重要成果,形成了若干个关键技术产品,并进行了示范推广,具体如下。

国家科技攻关计划支持的青鸟工程研制,完成了基于构件-构架的应用系统集成组装环境(青鸟软件生产线系统),由系列化标准规范和工具组成,对基于构件的软件开发方法进行了较全面的研究和支持,其中有面向企业和行业的构件库管理系统JBCLMS、面向对象开发工具集JBOO、基于构件的配置管理系统JBCM、变化管理系统JBCCM、过程管理系统JBPM和软件度量工具、面向对象逆向工具、构件制作与组装工具等。上述系统已在西安飞机研究所、上海证券交易所、海军大连研究所等单位得到应用。

基于复用的软件开发已成为国际软件开发技术的发展潮流。随着软件复用技术的成熟和推广,公共软件资源库逐渐受到政府、公共事业组织的重视,国际上出现了许多公共软件资源库系统,如OnePlus、PALAda、REBOOT、AIRS、Universal、SALMS、LID等。对于公共软件资源库的产业整体基础设施地位,美国政府也有明确的定位,在1999年2月美国总统信息顾问委员会的报告中,明确提出了研究和建立国家级软件资源库的任务。随着网络技术的不断发展,出现了许多基于Internet环境的资源库系统,如ComponentSource、Download.com、Active-X.com、Netlib,以及国内由863计划支持并发展的中关村软件园构件库和上海软件构件库等。由国家863计划和上海市攻关计划支持的上海构件库(见图9-4)对构件库、构件化开发方法、构件库运行服务、构件组装技术等进行了研究与实践。

img177

图9-4 上海构件库平台服务框架