软件复用技术是目前解决软件危机、提高软件生产效率和质量的现实可行途径,它是在软件开发中避免重复劳动的解决方案。近十几年来,面向对象技术出现并逐步成为主流技术,为软件复用提供了基本的技术支持。软件复用通常可分为产品复用和过程复用两条途径。基于构件的复用是产品复用的主要形式,而中间件技术的出现与成功应用将软件复用技术提升到一个更高的层次。结合目前学术界、产业界已有的成果,提出高速公路业务管理的软件复用技术规范,并将其推广应用,将有力促进信息化建设的步伐。
1、软件复用技术的现状
到目前为上,人们对小粒度的软件复用进行了长期的研究和实践,发现这类复用方式有许多局限性。近年来,人们开始转向中、大粒度复用研究发现,通过中粒度复用,软件设计者们在开发一个新的软件系统时,可以利用己有的需求分析、设计的思想和结果。通过大粒度复用,可以利用己有的系统来组建新的应用系统。设计新的应用本文由论文联盟http://www.LWlm.cOm收集整理系统时,只需考虑各系统相互作用的框架结构,而不必关心设计和实现的细节,从而缩短了开发时期,降低了开发成本。
目前,我们在这一技术领域也进行了大量跟踪研究和应用系统开发工作,但至今还没有建立起一套供全省高速公路信息化建设共同遵守和使用的软件复用性技术规范,这种状况严重制约着各类业务软件系统和办公自动化系统的开发工作。因此,开展软件复用规范,借鉴国内外先进技术建立相关技术规范和标准,已成为高速公路业务管理信息化建设中的一项重要课题。
2、总体研究思路
我们在吸收国内外有关软件复用研究成果的基础上,对当前软件生命周期模型、软件复用技术和规范进行了深入研究,分析了IEEE1517标准——信息技术-软件生命周期过程-复用过程标准,并建立了代码级复用模型、设计级软件复用模型和分析级软件复用模型等不同层次的软件复用模型,并将这些模型用于指导实际的软件开发,建立了基于构件的软件开发模型和基于EJB技术的软件复用模型。从而丰富了软件复用理论、技术和方法,给高速公路业务软件的设计、开发提供了一条新的技术途径。利用该成果,提高了软件开发的效率,避免了重新开发可能引入的错误,提高了软件的质量,总体思路如下:
(1)对国内外和高速公路业务管理在软件复用方面开展的技术研究进行大量的资料收集与实际调研,掌握软件复用技术的最新前沿;
(2)通过深入的研究,建立代码级复用模型、设计级软件复用模型和分析级软件复用模型等不同层次的软件复用模型。
(3)将研究结果指导实际的软件开发,定期地收集用户的使用意见,不断地对模型进行完善,使之真正地成为可靠、实用的模型。
(4)对掌握的资料与调研结果进行系统和细致的分析,主要对通用基本构件、领域共性构件、应用专用构件等三大类构件进行系统的分析和研究,同时结合对相关的技术标准的研究,为提出符合高速公路业务管理实际的软件复用模型做好技术准备;
3、主要技术说明
3.1 代码复用
代码复用包括两个方面:概念复用和实现复用。代码复用是绝大多数程序员所期望的,为了使代码能够最大程度上复用,提出如下代码复用的原则:对接口编程;优先使用对象组合,而不是类继承;将可变的部分和不可变的部分分离;减少方法的长度;消除case/if语句;减少参数个数;类层次的最高层应该是抽象类;尽量减少对变量的直接访问;子类应该特性化,完成特殊功能;拆分过大的类;作用截然不同的对象应该拆分;尽量减少对参数的隐含传递。
3.2 设计复用模型
3.2.1 设计和构造构件时必须遵循以下准则
为增强构件的可复用性,需要提高抽象的级别,以便充分利用构件的继承特性;可理解性、易读性、易修改性强。构件应设计有很好的与语义有关的界面,并有完整、正确、容易使用的文档,以利修正、扩充和完善构件的功能;构件内必须具有很高的内聚度,构件间必须有很低的耦合度;较强的分解力。构件既能被方便地集成,也能针对不同应用,具有灵活的可分解性,因而需要将构件可变部分数据化、参数化,以适合不同的应用;较强的向下兼容能力。构件库必须具有较强的版本控制能力,以利构件升级;较强的演化能力。数据与其结构封装在一起,数据应存放在数据构件对象中,能主动解释其结构,这是构件间交互和集成的基础。
3.2.2 对不同类别构件的使用方式
系统构件是指系统总体框架构件,对每一应用领域一般需要开发一个系统构件,并将系统构件存放到系统构件库中,系统构件应主要由软件开发者在一定的软件总线规范下开发。
组织构件按一定的软件总线规范开发,所有系统构件所公用的组织构件构成公共组织构件库,通过系统构件和组织构件这两类构件的合理组装,就可形成新的应用系统。
系统构件和组织构件可复用分子构件、原子构件构造自己,而分子构件和原子构件只能参与系统构件、组织构件的组装,但不参与最后新的应用系统的组装。构件具有以下几个特点:自描述、可定制、可集成、连接机制。可以用过程语言和面向对象语言创建构件。
3.2.3 构件的规范
COM、COBRA和EJB这三种构件规范皆是针对二进制代码构件制订的,为基于构件的软件开发提供了一个对象管理的基础设施。
3.2.4 基于构件的软件开发过程模型
在领域工程阶段,对领域中系统的进行分析,识别这些应用的共同特征和可变特征,对刻划这些特征的对象和操作进行选择和抽象,形成领域模型,依据领域模型产生出领域中应用共同具有的体系结构(即特定领域的软件体系结构)或生成过程,并以此为基础识别、开发和组织可复用构件,形成领域构件库。 本文由论文联盟http://www.LWlm.cOm收集整理
在开发阶段,可以根据领域模型,确定新应用的需求规约,根据特定领域的软件体系结构形成新应用的设计,并以此为基础选择可复用构件进行组装,从而形成新系统。
3.3 体系结构复用
3.3.1 软件体系结构复用的要素
软件体系结构由5种元素组成:部件、连接、配置、端口和角色其中部件、连接和配置是最基本的元素。
软件体系结构建模语言ADL是描述软件体系结构规范的出发点,是分析和验证软件体系结构的前提和基础。目前对软件体系结构的研究大都以软件体系结构语言展开。其主要类别为:
(1)研究软件体系结构配置结构的描述语言:这一类软件体系结构描述语言主要针对体系结构的静态和动态配置,对体系结构配置的演化所具有的性质进行研究。
(2)研究软件体系结构实例的描述语言:这一类体系结构描述语言描述的是特定的系统,它所解决的问题是:“系统的体系结构是什么”。使得系统在确定实现策略之前首先在体系结构的层次上进行分析和设计。
(3)研究软件体系结构风格的描述语言:这一类语言描述体系结构的模式或范型,从而描述了具有相同风格的一族系统的体系结构,它所解决的问题是“系统使用的结构模式”和“体系结构风格的含义”。
3.3.2 基于构件的系统体系结构的建立
系统体系结构最重要的就是软件体系结构风格和软件体系结构模式。
(1)软件体系结构风格:管道/过滤器风格;基于事件的隐式调用风格;仓库风格。
(2)基于构件的系统体系结构模式。
(3)基于构件的系统体系结构描述。
3.4 分析复用模型
对于分析复用模型,本研究采用UML来实现。UML的目标是以面向对象图的方式来描述任何类型的系统,具有很宽的应用领域。UML是一个通用的标准建模语言,可以对任何具有静态结构和动态行为的系统进行建模。UML适用于系统开发过程中从需求规格描述到系统完成后测试的不同阶段。
构件的抽取主要有两种方式,一种是从已有系统中抽取可复用构件,另一种在系统分析、设计阶段就考虑构件,整个系统通过构件组装而成。
构件的分析设计主要是如何对类进行更大粒度的组装或合并,定义构件对外提供的服务界面。首先从类图中划分出业务、领域构件,即与领域有关执行应用逻辑的构件,再依次划分出协调控制构件、数据处理构件和用户界面构件,这些都可以从相应的类图中划分得到。每个构件所呈现给其它的构件的只是它提供的界面,即其向外部提供的服务,其内部的构成对外部而一言是透明的,界面的定义可以从类具有的属性和方法提取得到。