软件构件化(Software Component)技术是在大工业生产模式的启发下应运而生的,是软件技术跨世纪的一个发展趋势,其目的是彻底改变软件的传统生产方式,从根本上提高软件生产的效率和质量,提高开发大型软件系统尤其是商用信息系统的成功率。
有了软件构件之后,应用开发人员就可以利用现成的软件构件(软件复用),装配成能够适用于不同领域、功能各异的应用软件系统。复用软件一直是整个世界软件业所追求的梦想,软件构件化为实现这一梦想指出了一条切实可行的道路,而中间件(middleware)正是构件化软件的一种形式。
基于构件的信息系统开发(Component Based System Development,CBSD)即是在这种情况下产生的一种信息系统开发方法。运用基于构件的方法开发信息系统,涉及两个核心基础概念:即构件和中间件。
1)构件
所谓构件是一块单独封装的、具有特定的独立功能、可复用的固化软件,其支持灵活的即插即用要求,可以方便地插入网络、语言、应用、工具或操作系统中工作。它具有如下基本特点:
①构件是具有通用功能或特定功能的可复用的软件模块;
②构件遵循二进制标准制作,不依赖于某种特定的高级语言,它可以由面向对象语言或非面向对象语言实现,从而实现在不同软硬件环境下的应用;
③构件通过接口输出其功能,外界仅能通过接口访问构件,向构件输入需要处理的数据,并借助构件的输出获取处理结果;
④构件支持相互调用操作,它可跨越地址空间、网络、语言、操作系统的异构环境下被调用,与其他构件协同工作;
⑤构件不是一个完整的应用,但是多个构件可以通过彼此调用组合构造一个完整的应用。
而构件技术则是指通过组装一系列可复用的软件构件(Reusable Software Component)来构造应用软件系统的软件技术。通过运用构件技术,系统开发人员可以有效地进行软件复用,减少重复开发,缩短软件的开发时间,降低软件的开发成本。
1968年NATO(北大西洋公约组织)软件工程会议,D.Mcllroy在提交会议的论文《大量生产的软件构件(Mass-Produced Software Componen)》中,首次提出了“软件组装生产线”的思想。从那以后,采用构件技术实现软件复用,采用“搭积木”的方式生产应用软件,成为软件开发人员长期的梦想与追求。
所谓软件复用是指重复使用“为了复用目的而设计的软件”的过程。就软件开发而言,软件复用包括:早期的函数复用、面向对象言语中的“类”的复用,以及互联网时代的完整软件体系的构件复用。
因此,软件复用其实就是为了达到复用目的而重复使用预先设计并实现的专业软件。其中,重复使用该软件不但是为了“有复用目的”软件的在不同应用环境下的重复使用,而且也有可能是为了“非复用目的”软件的重复使用而设计的软件,抑或是在某个特定的应用系统中新、旧版本之间进行重复使用代码的行为与过程。一般来讲,在重复软件的不断更新发展过程中,软件重复使用的行为大概可以总结为在3个维度上发生,即时间维(在不同的时间应用)、平台维(在不同的系统平台上应用)和应用维(应用于不同的目的)。
其中,时间维是指使用以前的软件版本作为新版本的基础,加入新的功能,适应新的需求,即软件维护;平台维是指以某平台上的软件为基础,修改其和运行平台不相适应的部分,使其能够运行于新的平台,即软件的移植;应用维是指将特定软件用于其他的应用系统中,新系统具有不同功能和用途,即真正的软件复用。这3种行为中都重复使用了现有的软件,但是,真正的复用是为了支持软件在应用维的演化,使用“为复用而开发的软件(构件)”来更加快捷、高效地开发新的应用系统。
分析传统产业的发展,其基本模式均是以符合标准的零、部件(构件)生产以及基于标准构件的产品生产(组装)为基本特征的。其中,构件是核心和基础,而“复用”则是必需的手段。实践表明,这种模式是产业工程化、工业化的必由之路。标准的零部件生产业的独立存在和发展是相应产业形成规模经济的前提与基本模式。机械、建筑等传统行业以及年轻的计算机硬件产业的成功发展均是基于这种模式,并充分证明了这种模式的正确性、可行性和高效性。这种模式可以为软件产业化发展提供良好的借鉴,软件产业要发展并形成规模经济,标准构件的生产和构件的复用是关键因素。这正是软件复用受到高度重视的根本原因。
软件复用可以从多个角度进行考察。依据复用的对象,可以将软件复用分为产品复用和过程复用两种类型。产品复用指复用已有的软件构件,通过构件的集成(组装)得到新的应用系统;过程复用指复用已有的软件开发应用过程,使用可复用的应用生成器来自动或半自动地生成所需要的应用系统。过程复用依赖于软件自动化技术的发展,目前只适用于一些特殊的应用领域。产品复用是目前实现软件产业化的现实的、主流的途径。
依据对可复用信息进行复用的方式,可以将软件复用区分为“黑箱复用”和“白箱复用”。黑箱复用指对已有构件不需作任何修改,直接加以复用。这是理想的复用方式。白箱复用指已有构件并不能完全符合特定用户的特定需求,需要根据用户的需求进行适应性修改或过程改造后才可使用。而在大多数应用系统的构件组装过程中,构件的适应性修改是必需的。
基于构件的软件复用技术具有以下优点:
①获得可应用系统的时间:可以将信息系统开发的时间减少为采用传统方法的50%到20%;
②缺陷密度:可以将采用传统方法开发系统存在的缺陷密度降低到20%至10%;(www.daowen.com)
③维护成本:借助构件技术,可以将系统维护成本降低为采用传统方法所开发系统的20%到10%;
④整体软件开发成本:采用基于构件的开发方法可以将系统开发成本平均降低大约15%,而长期项目可降低成本高达75%。
2)中间件
所谓中间件,是处于操作系统和应用系统之间的软件系统,也有人认为它应该属于操作系统的一部分。人们在使用构件技术开发信息系统时,往往是将一组构件集成在一起,构成一个面向特定应用的平台(包括开发平台和运行平台),但在这组构件中必需有一个能够实现其相互通信的中间件,即中间件=平台+通信。
中间件技术提供了一种有效的信息交换机制,能够屏蔽底层操作系统的复杂性和网络协议的差异性,解决了异构的不同应用系统之间相互交换数据的问题,使得程序开发人员面对的是一个简单而统一的开发环境,减少了程序设计与开发的复杂性,不必再为具体的应用程序在不同系统软件上的移植而进行重复工作,从而大大减少了技术上的负担。
由于信息系统是开放的、不断成长的和多变的系统,分布性、自治性、异构性已经成为信息系统的固有特征。实现信息系统的综合集成和随需而变,已经成为信息化建设的普遍需求,并直接反映了信息化建设的水平。中间件通过网络互连、数据集成、应用整合、流程衔接、用户互动等形式,已经成为大型网络应用信息系统开发、集成、部署、运行与管理的关键性支撑软件。
中间件技术的发展方向将聚焦于消除信息孤岛,推动无边界信息流的有效流动,支撑开放、动态、多变的互联网环境中复杂的信息系统应用,实现对分布于互联网之上的各种具有自治特征的信息资源(包括计算资源、数据资源、服务资源、软件资源等)的简单、标准、快速、灵活、可信、高效能及低成本的集成、协同和综合利用,能够有效提高组织的信息系统基础设施的业务敏捷性和随需而变的能力,降低信息系统总体的研发成本和运维成本,促进信息技术与组织业务之间的动态匹配。中间件技术正在呈现出业务化、服务化、一体化、虚拟化等诸多新的重要发展趋势。
3)基于构件的信息系统开发
基于构件技术的信息系统开发过程,可以划分为两个大的阶段,即“领域工程”阶段和“应用系统工程”阶段。两个阶段的基本任务及其相互关系如图12-9所示。
图12-9 基于构件的开发方法
(1)领域工程
所谓“领域”是信息系统所服务的具有相同或相似应用需求的典型领域,而“领域工程”则是一组相似或相近的应用工程建立基本能力和必备基础的过程,它覆盖了建立可复用软件构件的所有活动。领域工程对典型应用领域中的系统需求进行仔细的分析,识别这些应用需求的共同特征和可变特征,对刻画这些特征的对象和操作进行选择与抽象,形成领域模型,依据领域模型产生领域系统的体系结构,并以此为基础识别、开发、组织和装配可复用构件。
这样,当开发同一领域中的新的应用系统时,便可以根据领域模型,确定新的应用系统的基本需求规约,根据特定领域的软件体系结构形成新应用系统的设计,并以此为基础选择可复用构件并进行组装和集成,从而快速形成新的应用系统。
领域工程分为3个阶段。
①领域分析:这一阶段的主要目标是获得领域模型(Domain Model)。在这个阶段中首先要进行一些准备性的工作,包括定义领域的边界、明确分析的对象、识别信息源(即确定领域分析和整个领域工程过程中的信息来源)。可能的信息源包括现存系统、技术文献、问题域的专家和系统开发的专家、用户调查和市场分析、领域演化的历史记录等。在此基础上,就可以分析领域中系统的基本的信息需求与功能需求,确定哪些需求是被应用领域中的系统所广泛共享的,从而建立起“领域模型”。
②领域设计:这一阶段的目标是获得服务于特定领域的软件体系结构图(Domain Specific Software Architecture,DSSA)。建立了领域模型之后即可以派生出满足这些领域需求的DSSA。DSSA描述在领域模型中表示需求的解决方案,它不是单个特定系统的表示,而是能够适应同一领域中多个系统的共同需求的一个高层次的设计和一般范式。设计并实现DSSA所要求的相应构件,并依据领域分析模型和DSSA组织可复用构件形成领域构件库。
由于领域模型中的领域需求具有一定的变化性,要求DSSA也要相应地要具有变化性,以满足同一领域不同应用的需求。同时,复用构件是依据领域模型和DSSA来组织、设计和实现的,因此,在这个阶段通过DSSA获得,也同时形成了复用构件的使用规约。
③领域实现:这个阶段的主要目标是依据DSSA的描述,开发和组织可复用的软件构件。这些可复用构件可能是从现有系统中直接提取得到的,也有可能需要通过新的开发得到。这个阶段也可以看作复用构件的实现阶段,实现后的构件形成了支撑未来面向特定应用的信息系统开发的构件库。
(2)应用系统工程
所谓应用系统工程是指为特定的终端用户的需求而开发(应用工程)和实现特定信息系统的活动。如图12-9所示,应用系统工程的任务包括:应用系统的需求分析、应用系统的结构体系分析两个分析过程。通过这两个分析过程,结合参照领域模型和用户应用系统的具体实际,获得明确的特定应用系统的信息需求与功能需求。然后按图索骥,通过领域工程所建立DSSA和既有的构件库,去查找并获取能够满足这些特定应用系统所需要的构件;对于构件库中已经有的但不能够完全满足特定应用系统最终需求的构件,则对相关构件针对其特定需求加以“特化”或工程化修改,使之具备特定应用系统所要求的个性化功能;对于构件库中无对应功能构件的特殊的个性化需求,则需要开发全新的构件。进而,将这些构件按照系统结构框架并借助于中间件进行系统地组装,即可以快速形成能够满足最终用户个性化需要的、可运行的应用信息系统。新开发出的构件又可以加入到构件库中,使之不断地得到丰富。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。