当前位置:文档之家› 基于软件复用的信息系统开发模型

基于软件复用的信息系统开发模型

收稿日期:2004206226;修返日期:2004208231基于软件复用的信息系统开发模型殷 磊,王润孝,王东勃(西北工业大学制造自动化软件与信息研究所,陕西西安710072)摘 要:在简要地介绍软件复用的概念和关键技术的基础上,结合领域工程、应用工程、组件化开发、原型开发方法以及面向对象开发方法等技术的优势,提出了一种基于软件复用的信息系统开发模型。

关键词:软件复用;信息系统;开发模型中图法分类号:TP311154 文献标识码:A 文章编号:100123695(2005)0820086203I nfor mati on Syste m Devel opment Model Based on Soft w are ReuseYI N Lei,WANG Run 2xiao,WANG Dong 2bo(Institute of M anufacturing Auto m ation Soft w are &Infor m ation,N orthw estern Polytechnical U niversity,X i ’an Shanxi 710072,China )Abstract:W ith the concep t and the key contents of s oft w are reuse t o intr oduce concisely,this paper p resents a inf or mati onsyste m devel model based on s oft w are reuse with the advantages of domain engineering,app licati on engineering,com 2ponent 2based method,p r ot otype method and oriented 2object method .Key word:Soft w are Reuse;I nfor mati on Syste m;Devel opmentModel1 软件复用随着计算机应用领域的不断扩展,以及人们对利用计算机来解决各种问题的日益依赖,软件开发所需要解决问题的复杂程度急剧膨胀,系统的规模和复杂度也随之空前地扩大。

软件的复杂性和其中包含的错误已经达到了开发人员无法控制的程度,这便是人们所说的软件危机。

为了解决这个问题,人们提出了软件复用的方法。

所谓软件复用是指在软件开发活动中,利用已有的、可复用的软件成分来构造和生成新的软件系统。

该软件成分可能是已有的软件成分,也可能是为复用而专门设计开发的可复用软件成分。

可复用软件成分范围比较广泛,包括源代码、组件、需求分析结果、软件体系结构、设计方案、测试计划以及测试案例等。

软件复用被认为是解决软件危机、提高软件生产率和软件质量、增强软件的开放性和对外部扰动的适应性的主要途径[1]。

如今,软件复用技术已经发展成为软件工程的一个重要研究领域,人们对软件复用技术和方法进行了广泛、深入的研究,在复用技术上取得了一定的成果和成功的实践经验。

2 软件复用的关键技术系统化软件复用有两个基本问题:①必须有可以复用的对象;②复用者需要知道如何去使用被复用的对象。

因此软件复用包括两个相关的过程:面向复用的开发(Devel opment for Re 2use )和使用复用进行开发(Devel opment with Reuse )[2]。

面向复用的开发生成可复用的软件资产,包括软件组件、需求规范以及开发文档,即可复用的对象。

这一生成可复用对象的过程可以是软件生产者从已经存在的应用系统中提取,也可以是由软件生产者重新进行设计开发。

使用复用进行开发是利用已存在的可复用对象进行应用系统的开发。

实现系统化软件复用的关键技术主要包括:面向对象技术(O riented Object Technol ogy )、软件组件技术(Soft w are Compo 2nent Technol ogy )、领域工程(Domain Engineering )、应用工程(App licati on Engineering )、软件体系结构(Soft w are A rchitec 2ture )、设计模式(Design Patterns )、软件再工程(Soft w are Ree 2ngineering )、开放系统(Open Syste m )、软件过程(Soft w are Pr ocess )、C ASE (Computer A ided Soft w are Engineering )技术以及各种非技术因素等[2]。

211 领域工程领域工程[3]是针对一个应用领域中的若干系统进行分析,建立基本能力和必备基础,并识别这些系统共享的领域需求,设计出能够满足这些需求的构架,并在此基础上开发和组织该领域的可复用构件的过程,它覆盖了建立可复用软件构件的所有活动。

可复用软件构件的含义比较广泛,它包括了领域内所有可复用的软件成分。

领域工程包括领域分析、领域设计以及领域实现等三个主要的步骤,其中,领域分析是实施领域工程的关键步骤,也是人们研究的重点。

领域分析输出的产品为领域模型。

领域模型用于收集、组织和表示领域中所有可复用的信息,其目的是帮助用户了解问题域,并明确领域中可以复用的软件资产。

图1显示了领域分析的输入和输出。

・68・计算机应用研究 2005年212 应用工程与领域工程相对应,应用工程的目的是使用可复用软件成分进行软件的开发(Devel opment with Reuse )。

应用工程与领域工程有很多相似之处,两者都是在同一套理论基础和工程原则支持下的系统设计与开发。

应用工程也可以划分为系统分析(需求获取)、系统设计、系统实现等阶段[4]。

ST ARS 提出的特定领域软件开发模型———双生命周期法将领域工程与应用工程结合起来[5,6],如图2所示。

总之,应用工程的重点是单个系统,而领域工程的重点则是在一个域内的多个相关系统;领域工程活动的结果可被应用工程所用,应用工程的活动又反过来影响未来的领域工程活动。

213 软件体系结构软件体系结构[8,9]是一个由程序、模块或系统等构件组成的集合体,包含了构件定义、构件之间的交互方式、构件结构及约束等。

除描述系统结构和拓扑外,软件体系结构还反映出系统需求和构件的对应关系,从而提供一些系统设计的指导原则。

在软件体系结构设计中要考虑系统级的问题,典型的有容量、吞吐量、一致性、组件兼容性等。

常见的软件体系结构风格有分层系统、数据抽象和面向对象组织、管道-过滤器、基于事件的隐式激发机制的系统以及仓库等[7]。

软件体系结构风格为大粒度的软件复用提供了可能[9]。

214 设计模式设计复用的另一个主要内容就是设计模式(Design Pat 2terns )的复用,设计模式是近十年来在软件工程领域所取得的重大成就之一,也是当前软件工程领域的研究热点。

设计模式最早由建筑师Christ opher A lexander 提出,后来逐渐被应用到软件开发领域。

设计模式在系统设计这一层次上将软件开发抽象成一种模式,模式描述了系统所面临的问题及其解决方案,从而保证最大范围的复用。

设计模式按照面向对象的概念进行组织,以抽象的方式描述和解决设计问题,是针对问题和解的抽象,是对一系列具有共性的问题的完整解决方案[10]。

正如Christ opher A lexander 所说:“每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。

这样,你就能一次又一次地使用该方案而不必做重复劳动。

”尽管A lexander 所指的是城市和建筑模式,但他的思想也同样适用于面向对象设计模式,两类模式的核心都在于提供了相关问题的解决方案[11]。

设计模式强调系统的复用性,它帮助人们作出有利于系统复用的选择,从而避免设计损害了系统的复用性,是可复用面向对象软件的基础。

215 组件技术关于软件组件[12]目前有狭义和广义两种定义。

狭义的软件组件是一种二进制形式的可复用软件块,它封装了一定的数据、属性和方法,遵循二进制外部接口标准,内部实现细节对用户透明,具有即插即用的特性,组件之间通过使用接口来进行交互。

广义的软件组件是指可复用的软件单元,可以被用来构造其他软件,它可以是被封装的对象类、功能模块、软件框架、软件系统模型、软件的文档,如可复用的分析件、设计件等。

组件具有平台和语言的无关性、接口和实现分离以及支持即插即用等特点,是支持软件复用的核心技术,是近几年来迅速发展并受到高度重视的一个学科分支。

目前主要的组件技术标准有三个:M icr oft 公司的C OM /DCOM (D istributed Com 2ponent ObjectModel );OMG 组织(Object Manage ment Gr oup )的C ORBA (Common Object RequestB r oker A rchitecture );S UN 公司的Java Bean /EJB (Enter p rise Java Beans )。

3 基于软件复用的信息系统开发模型311 快速原型法原型法[16]的核心是原型。

原型是系统的早期可运行版本,随着用户或开发者对系统理解的加深,原型不断地得到补充和细化。

系统的定义是在逐步发现的过程中进行的,这就是快速原型法的基本出发点。

快速原型法的开发过程体现了不断迭代的快速修改过程,是一种动态定义技术。

快速原型法的最大优点是能够大大减少软件系统的后期维护费用,使系统功能能正确反映用户的需求。

原型本身及这种方法的不足之处在于,如果原型本身功能设置不齐全、性能不好,会导致原型的设计和使用超出预期的花费和时间;另一个关键不足是原型法需要一个合适的软件开发环境,以便原型能直接转换成现实的系统。

与“自底向上”和“自顶向下”方法相比,快速原型法虽然具有很明显的优越性,但因其依赖于快速开发工具的支持,对系统开发者提出了更高的要求。

312 面向对象开发方法面向对象方法将客观世界(即问题域)看成是由一些相互联系的事物(即对象)组成。

每个对象都有自己的特征和状态,不同对象间的相互作用和相互联系构成了完整的客观世界。

问题域由对象和对象间的联系来描述,它把数据及相关的方法封装在一起构成对象,以对象和数据结构为中心来构造系统。

由于采用将数据和功能封装的原则,面向对象方法对需求变化有较强的适应能力,也使开发的系统容易复用[13,14]。

但是面向对象的程序设计方法也存在以下的局限性[15]:(1)面向对象的程序设计方法在处理大型软件系统时,它的粒度粗细难以有效控制。

相关主题