You are on page 1of 3

随着社会信息化程度的提高, IT 技术已经深入到社会生活的方方面面,而软件作为 IT 技术应用的

核心,其重要性也日渐突出。无论是生产制造、电子商务,还是服务咨询领域,软件都已成为担当
重任的核心力量,互联网和软件已成为推动新经济发展的重要基础。"高质量、高速度和无处不在"。
如何快速且高质量地开发出满足不同需求的软件?传统的软件开发方法在这时已显得无能为力了 ,
建立更好的软件开发环境,开发和采用可复用的软件组件成为解决这一问题的最佳方法。
什么是一个好的软件开发环境呢?采用统一的软件开发语言,特别是采用统一的建模语言;采用
经过证明的软件工程管理方法;采用适当的软件开发和管理工具。
生产者的职能是创建高质量的可复用构件,为众多的复用者服务。复用者的职能通常是更多、更快、
低成本地使用可复用构件完成应用项目地开发,支持部门的职能是为可复用构件的获取、管理、维
护提供全面支持。
软件复用是一种计算机软件工程方法和理论。60 年代的“软件危机”使程序设计人员明白难于维护
的软件成本是极其高昂的,当软件的规模不断扩大时,这种软件的综合成本可以说是没有人能负
担的,并且即使投入了高昂的资金也难以得到可靠的产品,而软件重用的思想是解决这一问题的
根本方法。
软件复用的主要思想是,将软件看成是由不同功能部分的“组件”所组成的有机体,每一个组件
在设计编写时可以被设计成完成同类工作的通用工具,这样,如果完成各种工作的组件被建立起
来以后,编写一特定软件的工作就变成了将各种不同组件组织连接体来的简单问题,这对于软件
产品的最终质量和维护工作都有本质性的改变。
软件复用是将已有的软件及其有效成分用于构造新的软件或系统。它不仅是对软件程序的复
用,还包括对软件生产过程中其它劳动成果的复用,如项目计划书、可行性报告、需求分析、
概要设计、详细设计、编码(源程序)、测试用例、文档与使用手册等等。因此,软件复用包括软件
产 品 复 用 和 软 件 过 程 复 用 两 部 分 的 内 容 。
  软件复用不同于软件移植。软件移植是指对软件进行修改和扩充,使之在保留原有功能、
适应原有平台的基础上,可以运行于新的软硬件平台。而复用则指在多个系统中,尤其是在
新 系 统 中 使 用 已 有 的 软 件 成 分 。
  从对复用产品的了解程度和复用方式看,也可分为白盒复用与黑盒复用。黑盒复用指对
已有产品或构件不需作任何修改,直接进行复用,这是理想的复用方式。它主要基于二进制
代码的复用,包括可执行程序的复用和基于库(包括动态链接库和静态库)的复用。白盒复
用指根据用户需求对已有产品进行适应性修改后才可使用。白盒复用一般为源代码一级的复
用 , 以 及 相 应 的 测 试 用 例 、 文 档 等 的 复 用 。
  无论白盒复用还是黑盒复用,都需要花费一定的代价熟悉和掌握被复用的软件系统。作
为经济上的考虑,要求复用的代价必须大大小于重新开发的代价,否则就不应该考虑。
  软件复用的一个关键因素是抽象。抽象是对软件可复用对象的提炼和概括,即将可复用
对象的基本属性和相应的操作,从具体的语言、环境和其他细节中提炼出来。软件的复用性很
大程度上取决于对可复用对象的认识深度或者说可复用对象的抽象层次。抽象层次越高、与具
体环境和特定细节越无关,则它被未来系统复用的可能性也越大。领域分析则是进行抽象的
有力工具。领域分析借助特定领域、特定行业的专业知识与技能,对软件系统对象进行抽象和
分类,提炼认知的对象及其相互关系,获得系统整体结构,从而生成可复用的软件构件。
  通过软件复用,在应用系统开发中可以充分地利用已有的开发成果,减少了包括分析、
设计、编码、测试等在内的许多重复劳动,从而提高了软件开发的效率,同时,通过复用高质
量的已有开发成果,避免了重新开发可能引入的错误,从而提高了软件的质量。
  软件复用有三个基本原则,一是必须有可以复用的对象;二是所复用的对象必须是有用
的,三是复用者需要知道如何去使用被复用的对象。软件复用包括两个相关过程:可复用软
件(构件)的开发(Development for Reuse)和基于可复用软件(构件)的应用系统构造(集成和组装)
(Development with Reuse) 。 解 决 好 这 几 个 方 面 的 问 题 才 能 实 现 真 正 成 功 的 软 件 复 用 。
  可复用软件(构件)的开发是实现软件复用的基本条件,对象技术的广泛使用,提供了建
造和使用构件的概念基础和实用工具,有了可复用软件,基于可复用软件 (构件)的应用系统
构造(集成和组装)才能得以实现。软件的生产也可以象硬件的生产一样,在设计好框架后通过
标准的构件组装而成。一般认为构件是具有一定功能、能够独立工作或同其他构件组合起来协
调工作的程序体,一经产生,就与它的具体实现语言无关,可以认为是一段二进制码和数据
段,其内部具体实现是无法看到的,可将成熟的构件当作商品出售,在保证开发者的利益同
时最大地满足社会需求。采用构件来开发软件可以更有效地重用他人已有的劳动成果。
  在复用软件设计中,如何设计和构造可复用的软件是软件设计者首先要面对的问题。根
据 面 向 对 象 的 设 计 原 理 , 应 着 眼 于 以 下 几 个 方 面 :
    ( 1 ) 封 装 性
   在软构件的定义中,用户只关心事件的输入输出,对事件内部不必关心,方法和事件
是独立于应用的,用户可以在软构件中定义自己的事件,对于内部的复杂性调用这并不知晓
从 而 提 高 了 隐 蔽 性 。
    ( 2 ) 重 载
  重载就是在同一软件构件中用同一名字来表示不同的方法名。一般有两种实现方法,一
是 方 法 参 数 的 个 数 重 载 , 二 是 方 法 参 数 的 类 型 重 载 。
    ( 3 ) 继 承
    继 承 就 是 高 层 的 类 在 不 同 范 围 的 复 用 。
    ( 4 ) 聚 合
  聚合就是把一个难以复用的大软件分成若干部分构件,使其中的某些构件成为可以复用
的 构 件 。
    ( 5 ) 多 态 性
  多态性指某方法不仅可以处理有相同结构的对象,也可以处理不同结构的对象。
  中间件及相关软件是商业化的软件复用。仅看程序方面,软件复用后的制品也不只包括
中间件软件,还包括软件框架、应用框架、通用业务构件等多种可复用形式。

基于构件的软件开发是一条有效实际的复用途径,致力于通过组装现有软件构件的方式来建造大
型软件系统,其广泛应用将促进软件产业的变革和重组分工,使软件构件生产成为独立的行业而
存在。由于增强了系统的灵活性和可维护性,因此可以降低软件开发成本,加快系统开发的速度,
减轻大型系统支持和升级所带来的维护负担。为了能获得软件复用的切实益处,可复用资产和相关
的资源必须被管理和控制。构件库系统的目的,是通过对可复用构件的分类、管理、存储和检索,为
面 向 复 用 和 基 于 复 用 的 软 件 开 发 过 程 提 供 全 面 的 支 持 。
构件是系统中可以明确辨识的构成成分,软件构件则是软件系统中具有一定意义的独立构成成
分。构件是软件资源的基础单元,既是软件企业的基本资源/资产表现形式,也是软件产业资源共享
和 复 用 的 核 心 。
构件库系统是软件资源管理与服务的基础设施,支持构件的存储、分类与检索,与构件运行平台
相结合,提供构件服务机制,并支持基于构件的开发管理和交易;可以支持中小企业的软件开发
与管理,大型企业的资产管理和软件团体的协作与复用,是软件产业基地 /园区的重要技术基础设
施 。
软件工程强调软件开发过程的"工程"性,把软件的设计、开发、测试、维护和管理工作当做一项系统
工程来抓,表明软件不仅仅是编写代码的工作,而需要各个学科的综合应用,才能形成真正的产
业化。

You might also like