2002年 6月
第 3期
江西科技师范学院学报
Journal of Jiangxi Science& Technology Teachers’College
Jun.,2002
No.3
文章编号 :100"/一3558{2002)03—0025—03
软件开发中的软件重用技术
蔡慧萍
(江西科技师范学院现代教育技术中心 ,330013)
摘 要:软件 重用技术与移动计算,网络基础设施,电子商务被认为是对未来最有影响的四大技术方向之一,本文简要地介绍了软件
重用技术中所涉及到的重用对象、重用技术、软件 重用的方法和主要 实现途径及重用技术的发展方向.着重介绍了面向对像技术对软件重
用技 术的 影响 。
关键词 :软件重用对象;技术;途径 ;形式;发展 方向
中 图分类 号 :TP31I.52 文 献标 识 码 :A
自 1946年第一台计算机产生以来 ,计算机已逐渐进入人类的生活和工作的各个领域。计算机一直沿着
软件和硬件两个方向发展 ,在短短的半个世纪的时间里,硬件发展可谓迅猛 ,而软件发展却显得有些疲软,在
六十年代中期甚至爆发了众所同知的软件危机 ,为了克服这一危机 ,在 1968和 1969年连续召开 了著名的
NATO软件会议,在这次会议上第一次提出了软件工程这一术语。
在以后的时间内,软件工程研究人员针对软件开发过程中的一系列问题 ,提出了八种软件开发方法 即:
1 PARNAS方法 ,它是 由 D.Pamas在 1972年所提 出的。
2 YOURDON方法 。在 1978年 E.Yourd0n和 L.L.Constan—tine提 出 了结 构 化 方 法 即 SASD方 法 ,Tom
DeMarco在 1979年时在此基础上作了进一步改善,从而形成了 YOURDON方法。
3 面向数据结构软件开发方法 ,它包括 由 M.A.Wamier于 1975年提出的问题分析方法即 Jackson方法
和 J.D.Wamier于 1974年提 出的 Wamier方法 。
4 问题分析法 PAM(Problem Analysis Method),它是 由 80年代末 由 日立公 司提出 的一 种软件开发方 法。
5 面向对象的软件开发方法 ,面向对象技术是软件技术的一次革命 ,在软件开发史上具有里程碑的意
义 。
6 随着图形用户界面的兴起到了九十年代末出现的可视化开发方法。
7 以实现应用软件的全 自动开发为最终 目标 的 ICASE(Intergrated Computer~Aided Software Engineering)
方法 。
8 软件重用(Reuse)和组件连接方法。
在软件开发过程中,存在大量的重复劳动。据有关专家统计 ,在 1983年编制的所有代码 中,只有低于百
分之十五的部分是针对特定应用的,而百分之八十五以上的代码是共同的。据美国专家标准技术研究院的
一 份报告显示,占据世界软件销售额 85%的是大型专用软件,而其开发的失败率却高达 7O%。那 么,如何才
能既能提高软件的生产效率 ,又能保障软件产品的质量呢?如何才能减少重复劳动呢?由此看来,软件开发
必须脱离传统手工业的单件生产模式 ,转向构筑在标准化零部件基础上的高效率 .高质量的新型生产方式即
软件的可重用技术。有关研究结果表明,在软件开发过程中,大量代码段的重复编写是造成软件生产效率
低 、开发代价高的一个非常重要的原因。而软件重用是为了解决这一问题而提出的。
软件重用(Reuse)又称软件复用或软件再用 ,在 1968年的 NATO软件工程 会议上,D.Mcilroy在他的论
收稿 日期 :2001—12—08
作者简介:蔡慧萍(1972一),女,江西南昌人 ,江西科技师范学院讲师。
一 25 —
维普资讯
“Mass Produced Software C0mponents”一文 中首次提 出了可重用库 的思 想。1983年 Freeman对软 件重 用给 出 了
详细的定义 :“在构造新软件系统过程中,对已在软件人工制品使用技术。”软件人工制品可以是源代码片断、
子系统的设计结构、模块的详细设计 、文档和某一方面的规范说 明等。所以软件重用是利用 已有的软件成份
来构造新的软件。软件重用的概念可以从两方面理解。从广义上看 ,已有的软件成份包括十分广泛的内容 ,
软件成分应理解为一切可用来构造软件系统的成份,包括软件开发方法 、软件需要 、设计规格、源程序代码、
模块或其抽象结构 、系统文档、开发工具与支撑环境、测试和维护信息等,因而软件重用可根据重用的软件成
份划分为:面向代码、数据、体系结构等的产品重用 ,面向方法 、标准、经验等的知识重用,面向系统程序 、软件
工具开发环境等 的环境重用。从狭义上看,软件重用也可看成是软件产品的重用 ,软件产品的重用 ,软件产
品可以是已存在的软件也可以是专门设计出来的重用软件。
在软件重用对象方面,一般将 已有的系统的程序代码做为重用对象,但是,仅仅重用程序代码有时并不
能很有效地降低软件开发的成本。Freeman指出,软件重用的对象应为整个软件开发过程 ,即重用对象应该
是软件开发过程中的每一阶段。这主要包括:对已有程序代码的实现层重用 ,对对象进行编码的设计层重
用 ,对对象框架 进行 组织 、全局结构进行设 计的体 系结构 层重用 。
在基 于软件重用部件库 的重用技术 中 ,技术 人员通常通 过两 种主要 的技术 实现 重用 ,即 :组 装技术 和生
成技术。所谓组装技术是指在应用时对 已有软件部件不作修改或仅做很少的修改,将软件部件插在一起,构
造出新的软件系统的技术。常用的组装方式有:子程序库技术,共享接 口技术和函数嵌套调用等。生成技术
是从软件部件中衍生出新的程序 ,根据部件合成原则将部件合成具有新功能的部件 ,这是对模式重用由软件
生成器通过对不同特定参数的选择从而生成新的软件成份 ,生成技术中通常采用超高维软件规范说明语言 ,
形式地给出需求说明,利用程序变换系统,转换为某种可执行的语言程序。
根据软件开发不同阶段实现软件重用主要有四个途径,即:抽象、选择、实例化和集成。抽象是软件重用
的关键 ,其 主要 目的是对 重用 对象概括 提炼 ,从 而得到能全面描述 侧重算法和数据结 构的软件构架 的各部分
的描述。而选择则是对重用对象进行存放,匹配和检索的功能。实例化则是对数据类型中对象的进行参数
提供,转换 ,约束或形式细化等,它是选择的继续,通过实例将选择的满足问题规范的软构架转换成具体的可
执行的程序代码 ,集成则是根据重用技术提供的框架 ,将已实例化的包含在可重用部件库中的软件部件合成
一 个 完整 的软件系统 的过 程 。在集成这个 环节 中,我们简单地 介绍一下集成过程 中的软件组件连 接技术 ,这
是现代软件重用中一个主要发展方向 ,一般来说现代的组件连接主要遵循三个标准,最早的组件连接技术
OLE 1.0(Object Linking an Embedding)是 Microsoft公 司于 1990年 l1月在 COMDEX展览会 上推 出的 。OLE 1.0
的规范发表于 1990年 12月,1991年 2月推出了第一批支持 OLE 1.0规范的应用程序。1993年 5月发表了
OLE 2.0。几个月后,第一批支持 OLE2.0的应用程序 问世。OLE给出了软件组件(Component Object)的接 口
标准。这样任何人都可以按此标准独立地开发组件和增值组件(组件上添加一些功能构成新 的组件),或由
若干组件组建集成软件。软件组件连接的另一个标准是 1995年 3月推出的 OpenDoc.这是 IBM、Apple等公
司组成 CILabs集 团使用 的标 准 。由于 OpenDoc的编程接 口比 OLE小 ,因此 OpenDoc的应用 程序 能与 OLE兼
容 。第 三个组件连接是 对象管理集 团 OMG于 1991年发表 的 CORBA(Common Object Request Broker Arehitec。
ture),1994年 OMG又发表了 CORBA 2.0。由于 OLE 1.0、OLE 2.0的部分功能已放入 Windows 3.1(在推出
OLE 2.0的同时 ,推 出 Windows 3.1的 OLE 2.0),因此 目前使用 的组件连接开发技术大 多基于 OLE 2.0。
实现软件重用的形式也多种多样,一般来说分为八类,即高级语言形式(可重用的对象是汇编语言),设
计和代码整理形式(软件开发人员对 已有程序代码进行复制 ,提取 ,只保留设计全局样子,删除细节),源代码
部件形式(通过构造可重用库来实现软件重用),软件模式形式(是可重用源代码部件的形式化扩充 ,重用对
象是算法和数据结构),应用生成器(重用完整的系统设计 ,应用生成器可将规格说 明自动转换成可执行程
序),甚高级语言形式(甚高级语言形式也称为 VHLL即可执行规格说明语言,是一种更接近于自然语言的说
明语言),转换系统形式(将用规格说明语言描述的系统需要 ,根据转换规则转换为运行系统),软件体系结构
形式(可重用软件体系结构是指整个软件框架和全局结构,通过可重用体系结构可以集成体系结构 ,建立新
的高层次的体系结构).在上述形式中其 中高级语言形式 ,设计和代码整理形式 ,源代码部件形式 ,软件模式
一 26 —
维普资讯
形式重用对象都是属于实现层的。而应用生成器形式,甚高级语言形式 ,转换形式的重用对象都是系统设计
信息 。
在谈到软件重用技术里 ,我们不得不谈面向对象的设计即 OO技术,OO思想最早 出现于挪威奥斯陆大
学和挪威计算机中心共同研究的Simula 67语言中,它的产生给程序设计界注入了一个新的活力 ,并逐步取
代面向对象的程序设计方法,成为最有前途最有潜力的一种新的程序设计方法,随着 OOP(面对象编程)向
(面向对象设计)和(面向对象分析)的发展 ,最终形成面向对象 的软件开发方法 OMT(Obuect Modelling Tech—
nique).这是一种 自底向上和自顶向下相结合的方法 ,而且它以对象建模为基础 ,从而不仅考虑了输入、输出
数据结构 ,实际上也包 含了对象 的数据结 构 。所 以 OMT彻底 实现 了 PAM 没有完 全实 现 的 目标 。不仅 如此 ,
OO技术在需求分析 、可维护性和可靠性这三个软件 开发 的关 键环 节 和质量指 标 上有 了实 质性 的 突破 ,彻底
地解决了在这些方面存在的严重问题 ,从而宣告了软件危机的末 日的来临。在面向对象 的三个特性 :封装,
继承 ,多态性中便很好的体现了软件重用的思想。在面向对象的技术中,计算机系统总是在一定的对象上执
行一定操作的,对不同对象使用同一行为,对类的聚集,实例对类成员函数或操作的引用,子类对父类继承,
以及不同对象对同一操作多态性的调用等都被认为能有效的得到可重用可扩充的软件。普遍认为面向对象
技术是一种新的并非常有效的软件开发范型 ,也是一种基于软件重用的软件开发范型 ,就其继承来说 ,子类
可以通过继承关系对父类信息进行重用。对象与类之间信息传递方式是通过发送消息来实现的 ,而多态性
的概念又准许消息可以根据所发送的对象而改变其执行行为同一消息甚至因为发送给不同对象而产生不同
操作 ,这样许多操作可 以不用修 改而适 用不 同对象 ,这也很好 的体 现 了软件 重用 的思想。 因面向对象技术无
疑对长远 目标广泛重用是非常有利的。
目前软件重用沿着下面两个方向发展 ,即:
1,基于软件重用库和软件重用。它是一种传统的软件重用技术。它要求建立一个可重用软件库 ,并相
应提供软件重用组件的分类和检索 ,并且要求解决如何有效地组织 、标识、描述和引用这些软件成份。通常
采用两 种方 式进行软件重用 :
(1)生面技术。这是对模式的重用,由软件生成器通过替换特定参数 ,生成抽象软件成份的具体实例。
(2)组装方式。常用的组装方式有:子程序库技术、共享接 口技术和嵌套 函数凋用等。组装方式对软件
重用成份通常不作修改 ,或仅作很少的修改。
2,与 面向对象技术 结合 。OO技术中类的聚集 、实例对类 的成 员 函数或操 作 的 引用 、子 类对 父类 的继 承
等使软件的可重用性有了较大的提高。而且这种类型的重用容易实现。所 以这种方式的软件重用发展较
快 。
3,组件连接。这我们在上面已经介绍了。
目前软件重用的研究问题主要是两个方面;技术问题和管理问题。其中技术问题是研究的基础与核心 ,
几十年来取得了较大的发展。九十年代开始研究问题主要在管理问题上 ,目前软件重用主要缺陷是非技术
领域工作的缺陷,管理问题的研究将 日益受到各国和各机构组织的重视,另外,在技术领域中的领域分析和
领域规范将成为软件重用的一个重要分支 日益受到人们的重视,而软件重用技术更是与移动计算 、网络基础
设施 、电子商务认为对 未来最 有影响 的四大技术 方 向之一 。
General Introduction to Software Reuse Technology
CAI Hui— ping
(Modem technological education center,Jiangxi Science&Technology Teachels’College,3300 1 3)
Abstract:Software reuse technology and mobile computation,net base facilities,and electronic business are regarded
as one of the four major technical directions that will most influence the future.This article introduces briefly the reuse
object,reuse technology ,software reuse method,the main realizing path and the developing direction of software reuse in—
volved in software reuse technology .It puts emphasis on introducing the influence of O0 technology on software reuse
technology .
Key words:software reuse object;technology ;path;form;developing direction
维普资讯