浅谈软件复用技术的四个关键问题
浅析C++中的软件复用技术

摘要:摘要:软件复用技术是现在软件开发过程中常用的一种软件开发技术,他可以大大提高软件开发的效率、提高软件开发的质量、降低软件开发的成本。
本文介绍了利用C++进行软件开发时,我们常用的软件复用技术,主要研究了C++语言对软件复用技术的主要的支持手段和实现机制。
关键词:关键词:C++;软件复用;软件开发中图分类号:TP393 文献标识码:A 文章编号:1. 软件复用技术简介从上世纪60年代软件开发逐渐兴起以来,软件开发经历的多个发展阶段。
随着软件规模的越来越大,软件开发复杂度的逐渐提高,落后的软件开发方式需要改变,同时企业对于软件的质量要求也越来越高,如何提高开发效率以及提高软件质量成为了软件开发企业和软件工程师需要解决的一个主要问题。
在这样的背景之下,软件复用技术应运而生。
当前,软件工程思想中有三个主要的策略,它们分别是软件复用、折中、分而治之。
其中,软件复用的思想是软件工程开发中一个实用性极强且功能强大的技术。
软件复用技术放弃了一切从头开始设计的软件开发方式,借鉴采用了许多工程设计学科中利用的基于构件的思想来进行资源的复用。
软件复用技术,不仅仅指开发过程中对程序代码进行复用,对于软件设计过程中的其它的一些成果也可以进行复用,比如:针对软件设计的需求分析、软件设计的可行性报告、软件开发完成之后进行的软件测试方案、项目计划书等等。
采用软件复用技术之后,软件开发企业可以大大减少许多不必要的创建工程,从而大大加快了软件开发速度,极大的减少了产品的形成周期,节约来的大量的资源和成本。
同时,采用软件复用技术也改善了产品的质量,提高了产品的可靠性,因为进行软件复用的资源,一般都经过许多次利用和测试,其中的问题与缺陷得到了很好的纠正,因此大大减少了软件系统出现问题的概率。
另外从企业管理的角度来讲,采用软件复用技术,可以减少企业开发组件的成本的不确定性,尤其针对大规模的系统开发,可以大大降低企业的项目成本的不确定性,从而使软件开发企业面临的风险降到最低。
浅议软件复用技术

大部分编程语言的运行支持系统都提供 了连接 ( L i n k ) 、 绑 定 ( B i n d i n g ) 等功能来支持 目标代码 的复用 。 源代码的复用 级 别略高于 目标代码的复用 ,程序员在编程时把一些想复用 的
代 码 段 复 制 到 自己 的 程序 中 ,但 这 样 往 往 会 产 生 一 新 旧 代 码 不 匹 配 的 错 误 。 大 规模 的 实现 源 代 码 的复 用 只 有 依 靠含 有
的过程 , 是利用现有的软件成分来构造新 的软件系统的过程。
近 十年来软件复用被认为是解决软件危机、提 高软件生产率
和 质 量 的最 有 效 和 最 具 潜 力 的 手 段 。
现 条件 的影 响很少 ,所 以可复用的机会更大 。复用 的途径也
有 三 种 :从 现 有 系统 的分 析 结 果 中提 取 可复 用 构 件 用 于 新 系
s o f wa t r e r e u s e , t h e a r t i c l e d i s c u s s e d s o me k e y t e c h n o l o g i e s t o r e a l i z e s o f wa t r e r e u s e . Ke y wo r d s : S o f t wa r e Re u s e ; Do ma i n En g i n e e i r n g ; S o f t wa r e Co mp o n e n t
1 引言
随着软件需求的激增 、软件规模和 复杂度 的不断增大 , 大量 资源被浪 费在重复开发上 ,传 统的开发方法无法适应用 户在质量 、效率等方面对软件的需求。软件 复用又称软件重 用或软件再用 , 是指重复使用 “ 为了复用 目的而设计的软件”
浅谈软件复用

浅谈软件复用
刘捷 ( 中电 科技 集团 公司 第 28 研究 所, 江苏 南京 210007)
[ 摘 要] 系统。 [ 关键词]
真正意义上的软件复用是为了支持软件在应用方向上的演化, 使用“为复用而开发的软件 ( 构件) ”来更快、更好地开发新的应用 软件复用; 软件构件技术; 领域工程; CASE
1 问题的提出 传统的大型应用软件的主要特点有: 重复编码式开发方式和一次开 发持续运行的应用软件。重复编码式开发方式, 使快速开发企业级应用 软件难以实现。一次开发持续运行的方式, 导致了软件的僵化和濒危。 我们不妨参考 PC 电脑硬件设计: 它由一块主板和一系列的设备部 件组成。无论是 CPU、内存条、显卡、声卡、U 盘, 只要符合一定的标 准就可直接在主板上进行插拔和替换。如果软件框架可以做得像主板, 软件组件做得像设备部件, 那么软件就可以像硬件一样实现快速组装和 大规模生产。这实际上就是软件复用所追求的终极目标。 2 软件复用基本概念介绍 2.1 真正的软件复用 在软件演化的过程中, 重复使用的行为可能发生在三个方向上: 时 间上, 使用以前的软件版本作为新版本的基础, 加入新功能, 适应新需 求; 平台上, 以某平台上的软件为基础, 修改其和运行平台相 关的部 分, 使其运行于新平台; 应用上, 将某软件 ( 或其中构件) 用于其他应 用系统中, 新系统具有不同功能和用途。 这三种行为中都重复使用了现有软件。但是第一种复用实际上是软 件维护, 第二种实际上是软件移植, 都不能算真正的软件复用。第三种 复用是为了支持软件在应用方向上的演化, 使用“为复用而开发的软件 ( 构件) ”来更快、更好地开发新的应用系统, 这才是真正的软件复用。 2.2 软件复用的发展 复用概念的第一次引入早在 19 68 年, McIlro y 在其论文 《大量生 产的软件构件》中提出。在此以前, 子程序的概念也体现了复用的思想, 但目的是为了节省当时昂贵的机器内存资源, 并不是为了节省开发软件 所需的人力资源。然而子程序的概念可以用于节省人力资源的目的, 从 而出现了通用子程序库, 供程序员在编程时使用。 2.3 软件复用的关键 分析传统产业的发展, 其基本模式均是符合标准的零部件 ( 构件) 生产以及基于标准构件的产品生产 ( 组装) , 其中, 构件是核心和基础, “复用”是必需的手段。标准零部件生产业的独立存在和发展是产业形 成规模的前提, 软件产业发展完全可以借鉴这种模式。软件产业要发展 并形成规模, 标准构件的生产和构件的复用是关键因素。这正是软件复 用受到高度重视的根本原因。 3 软件复用的实现方法 3.1 与软件复用相关的技术 软件复用技术是一系列的相关技术的综合运用, 包括软件构件技 术; 领域工程、软件构架技术; 软件再工程、开放系统技 术; 软件过 程、CASE 技术以及一些非技术因素。实现软件复用的各种技术因素和 非技术因素是互相联系的, 它们互相结合共同影响软件复用的实现。 3.2 软件构件技术 构件是指应用系统中可以明确辨识的构成成分, 具有相对独立的功 能和可复用的价值。可复用构件应该具有如下特点: 独立性: 构件可独立开发、部署和发布, 软件构件是一个软件组装 单元; 有一组定义良好的接口: 构件通过一组接口对外完成其功能, 接口 可分为对外服务接口和服务请求接口; 封装性: 构件是一个高内聚的软件包, 通过接口对外交互, 屏蔽了 内部实现细节, 构件可通过独立开发封装为符合业界认可的模型标准的
软件工程中的软件复用技术分析

软件工程中的软件复用技术分析在当今快速发展的信息技术领域,软件工程面临着越来越高的要求和挑战。
为了提高软件开发的效率、质量和降低成本,软件复用技术逐渐成为软件工程中的重要手段。
软件复用,简单来说,就是在软件开发过程中,重复使用已有的软件资源,包括代码、设计、文档等。
这就好比在建造房屋时,不是每次都从制作砖头开始,而是可以直接使用已经生产好的砖头,从而节省时间和精力。
软件复用技术具有诸多显著的优势。
首先,它能够显著提高软件开发的效率。
通过复用已有的成熟组件和模块,开发人员无需从头开始构建每一个功能,从而大大缩短了开发周期。
想象一下,如果每次开发一个新的应用程序都要重新编写登录模块、用户管理模块等常见功能,那将是多么耗时费力的事情。
而有了软件复用,这些常见的功能模块可以直接拿来使用,或者在其基础上进行少量的修改和定制,就能满足新的需求。
其次,软件复用有助于提高软件的质量。
被复用的软件组件往往经过了多次的测试和优化,其稳定性和可靠性相对较高。
使用这些经过验证的组件,能够降低新开发软件中出现错误和缺陷的风险。
再者,软件复用还能降低开发成本。
由于减少了重复开发的工作量,相应的人力、时间和资源投入也会降低,从而使软件开发的成本得到有效控制。
在软件工程中,常见的软件复用形式多种多样。
代码复用是最基本的一种形式,开发人员可以直接复用他人编写的函数、类或者模块。
设计复用则是在更高层次上的复用,例如复用软件的架构设计、算法设计等。
还有一种是组件复用,这就像是在搭积木,将各种预定义好的组件组合在一起,构建出复杂的软件系统。
然而,要实现有效的软件复用,并非一帆风顺,也面临着一些挑战和问题。
首先是复用资源的查找和评估问题。
在庞大的软件资源库中,如何快速准确地找到符合需求的复用资源,并且评估其质量和适用性,是一个难题。
这需要建立有效的检索机制和评估标准。
其次,复用资源的适应性和兼容性也是需要考虑的。
不同的软件项目可能有不同的需求和环境,复用的资源可能需要进行一定的修改和调整才能适应新的情况。
软件复用技术浅析

科技资讯科技资讯S I N &T NOLOGY I NFO RM TI ON 2008N O .15SCI ENC E &TECH NOLOG Y I N FOR M A TI ON 信息技术首先让我们先回顾一下软件的发展史,软件开发的发展实际上就是我们思维不断抽象的过程,这种抽象概念非常类似于建模的思考方式:准确地描述事物,忽视次要的细节。
抽象体现在软件开发上就是每个具体项目需要的开发周期越来越短。
20世纪70到80年代,软件开发从机器语言到汇编语言,进而发展到高级语言。
由面向功能编程发展到面向对象编程,使得功能模块的重用演化为类的重用。
进入90年代中期,诞生了基于组件的开发模式(C B D:com pone nt based devel opm e nt ),C BD 将抽象概念带往了一个新的方向,与减少代码数量相反,CB D 将功能各个方面细化分离到不同的、相互隔离层中,如表现层、业务逻辑层、持久层、安全层以及核心层等,并且可以管理这些组件之间的依赖关系,通过这种分离,我们可以提纯细化组件功能,进而产生可以重用的框架,如St r ut s 框架可以重用在大部分应用系统的表现层中,St r ut s +JdonFr am e w or k+Hi be r na t e 是一个框架组合,代表一种架构设计,这种架构设计其实可以重用在大部分应用系统,这种重用我称之为架构级别重用。
时下,在现代商业社会,随着软件工程思想的深入人心,软件开发早已经不再是软件发展早期许多人所追求的那种艺术创作般的开发过程,即软件从头至尾都要经过设计师精心策划,在那时,软件是设计师突显才华,张扬的个性的场所。
如今软件产业正尽可能地朝着工业化、标准化的方向发展。
而软件复用恰是人们朝着这一方向发展的伟大发明。
现在,几乎所有的软件工程师都希望能像硬件工程师那样,自从函数诞生之日起,程序员就花费了大量时间和金钱,试图涉及这样一个系统,它不过是一些组合模型的集合体,由来自世界各地创造的部件构成。
软件工程中的软件复用

软件工程中的软件复用软件复用是指在软件开发过程中,重复使用已有的软件组件、模块、库或其他可重用的资源来构建新的软件系统。
它是提高软件开发效率和质量的重要手段之一。
本文将从软件复用的定义、优势、实施方法以及存在的挑战等方面进行讨论。
一、软件复用的定义软件复用是指在软件开发过程中,通过合理组合已有的软件组件、模块、库等可重用资源,使得新的软件系统能够更高效、更快速地开发出来。
软件复用旨在降低开发成本、加快开发进度、提高软件质量和可靠性。
它可以通过不同的方式实现,如通过代码重用、组件复用、模块复用等。
二、软件复用的优势1. 提高开发效率:软件复用可以避免从头开始编写相同或相似功能的代码,减少了开发时间和工作量,提高了开发效率。
2. 提高软件质量:通过复用已经经过测试和验证的软件组件,可以减少错误和缺陷的可能性,提高软件的质量和可靠性。
3. 降低成本:软件复用避免了重复开发相同功能的成本,节约了开发资源和时间,并且可以通过合理的复用策略降低软件维护的成本。
4. 加快上市时间:软件复用可以减少开发周期,使得软件能够更快速地上市,占领市场先机,增加竞争力。
三、软件复用的实施方法1. 代码重用:通过将已经编写好的代码模块作为库文件或软件包,供其他项目重复使用,实现代码的复用。
2. 组件复用:将可独立使用的业务组件打包成可重用的组件库,由多个项目共享使用,避免重复研发相同的组件。
3. 模块复用:将软件系统中的功能模块抽象出来,形成独立的模块,供多个系统复用,实现模块级的复用。
四、软件复用存在的挑战1. 适用性问题:不是所有的软件都适合进行复用,有些软件需求特殊或定制化程度高,不适合直接进行复用。
2. 维护问题:复用的软件组件可能需要进行维护和升级,需要投入额外的人力和时间进行支持和维护。
3. 版本管理问题:多个项目同时复用同一个软件组件时,版本管理可能成为一个挑战,需要具备良好的版本管理机制。
4. 知识和沟通问题:开发团队需要具备相应的知识和技能才能进行有效的复用,同时需要加强团队间的沟通和协作。
软件复用技术的分析复用
全国分站北京上海广州深港南京福建沈阳成都杭州西安长春重庆大庆合肥惠州青岛郑州泰州厦门淄博天津无锡哈尔滨手机电脑数码家电硬件外设企业办公游戏手机安极4GWP专区配件移动电源笔记本超极本平板一体机台式机商用工作站知本家可穿戴相机摄像机单电单反海极社行摄频道GPS潮生活国产平板电视冰箱洗衣机空调净化器盒子厨卫投影生活家电CPU主板显示器音频机电键鼠显卡内存硬盘服务器信息化开发办公打印网络设备商喷方案云计算游戏手机游戏下载游戏硬件动漫网页游戏编程非常有趣,在于它不仅满足了我们内心深处进行创造的渴望,而且愉悦了每个人的内在情感。
但它也是一个许多人痛苦挣扎的焦油坑以及一种乐趣和苦恼共存的创造性活动,对许多人而言,其中乐趣远大于苦恼。
An———— FREDERICK P . BOORKS 《人月神话》摘要:复用即软件复用,是今年来被越来越多程序员重视的技术。
本文通过对软件复用技术的分析,介绍了复用技术在提高软件效率、减轻软件开发压力方面的作用。
软件复用的定义软件复用(或软件重用)是指充分利用过去软件开发中积累的成果、知识和经验,去开发新的软件系统,使人们在新系统的开发中着重于解决出现的新问题、满足新需求,从而避免或减少软件开发中的重复劳动。
软件复用可分为产品式复用和生成式复用。
产品式复用是指对软件开发中中间制品(程序代码,各阶段中的文档或模型,测试用例等)的复用,其实现途径关键是将可复用的程序代码组装(或集成)而生成软件应用系统,因此产品式复用亦称组装式复用;生成式复用主要是将软件的需求进行规约化(或形式化)描述,然后利用可复用的应用程序生成器自动或半自动地生成所需的软件系统。
目前组装式复用是软件复用的主流方式。
在目前主流复用技术中,有一个关键性的名词:软件构件,复用技术中的代码复用过程主要是依赖软件构件来实现复用的。
软件构件(也称软件组件)是软件系统内可标识的、符合某种标准要求的构成成分,类似于传统工业中的零部件。
软件的复用技术及开发方法
软件的复用技术及开发方法软件的复用技术及开发方法2.1软件的复用技术软件复用是指在开发新的软件系统时,对已有的软件或软件模块重新使用,该软件可以是己经存在的软件,也可以是专门的可复用组件〔8〕。
软件可复用性的高低影响到生产效率的高低、软件质量的好坏和系统可维护性的好坏。
在软件工程中面临的问题不是缺乏复用,而是缺乏广泛的、系统的复用。
软件复用包括构造可复用软件和用可复用软件进行构造。
构造可复用软件,一方面可以从现存的软件系统中抽取,另一方面通过改写或重新设计来实施。
Jones将软件复用的对象分为4种数据复用、体系结构复用、设计复用和程序复用。
这样,软件复用可在实现层、设计层和体系结构层三个层次上实现。
实现层软件复用是指对己有的程序代码进行复用,它包括源代码组件形式。
设计层软件复用是指对已有的软件系统的设计信息进行复用。
而体系结构层软件复用是最有效的软件复用,它主要是软件体系结构形式化的复用,即将软件的框架组织,全局结构设计作为复用对象。
可复用的软件体系结构则通常是显式地复用软件体系结构,并通过集成其他软件体系结构,建立新的更高层次的体系结构。
面向对象的软件复用机制主要有两种:继承和对象组合。
(1)继承继承是指子类可以从父类中直接获得某些特征和行为的能力,继承可作为代码复用和概念复用的手段。
作为代码复用的手段是指:子类通过继承父类的行为,一些代码就不必重写;作为概念复用的手段是指:子类共享父类的方法定义。
作为代码复用和概念复用手段的继承机制,在面向对象技术中,通过面向对象技术的一些主要机制来实现对“支持可维护性的可复用性”的支持。
这些面向对象的主要机制是:数据的抽象化、封装和多态性。
通过运用这些机制,继承可以在高层次上提供(相对于传统的低层次复用)可复用性:数据的抽象化和继承关系使得概念或定义可以复用;多态性使得实现和应用可以复用;而抽象化和封装可以保持和促进系统的可维护性。
这样一来,复用的焦点不再集中在函数和算法等具体实现细节上,而是集中在最重要的含有宏观商业逻辑的抽象层次上。
浅析软件复用技术
浅析软件复用技术摘要:可复用的软件技术,已经成为大多数程序员不断使用的技术,也出现了专门以提供构件服务的供应商,它已经不再是一种单一的技术,而成为软件产业中的重要生产力、推动力,它不仅减轻了软件开发的重负,也开辟了软件产业链中的新方向。
关键词:软件复用;研究;发展本文简单介绍了软件复用研究的发展与软件复用的主要技术,进而研究了软件复用技术发展的新趋势,特别对软件复用技术研究的最新特点—软插件与软总线模型及其在分布环境中的应用前景进行讨论.1、软件复用的定义我们以前在提起软件复用时,往往把其简单的看作是一种节约企业软件作业的工作量的一种手段,而实际上,软件复用的展开还是提升软件质量的最有效的方式:一个软件模块在得到多次复用之后,其可靠性会不断的提高,软件的出错概率也会越来越低,当然相应的质量风险会越来越小,你的软件也就更加具有竞争力。
而规模化的成本效益和质量也正是产品化软件的最核心的价值所在。
软件构件是软件系统内可标识的、符合某种标准要求的构成成分,类似于传统工业中的零部件。
以上为软件复用过程的直观示例图。
复用成分的管理完成对复用成分库的组织,以期能够有效地组织和扩充软件复用成分.复用成分的实施利用是获取和管理的目的.其过程包括根据要求选择抽象的可复用成分,并对其进行适应性修改,以将其集成到现行开发的软件系统中去。
2、软件复用技术的历史与现状软件复用的历史,大致可划分为萌芽期、发展期和初步实用期3个历史时期。
代末到代末,软件复用技术迅速发展成为软件工程的一个重要的应用领域但由于注意力放在如何收集、提炼和改造软件系统构件上,而忽略了其他方面的问题,以致进展缓慢. 代起,人们不仅已认识到软件复用问题涉及多方面的知识,如软件工程知识、应用领域知识、人类工程学知识和人工智能知识,而且还认识到在软件复用实施中管理因素的重要性这一时期,软件复用在子程序库、报告生成器、编译器等方面都取得了长足进展.同时,人们已对何为软件复用有了一个非形式化、不够完整的概念;对复用信息的提炼、组织和存储进行了初步探讨;已经理解了软件的组装技术及基于对象的设计技术等,但上述理解仍是非形式化的,人们仍不能以任何系统化途径实现复用.这一时期被称为发展期.代后期至今,软件复用领域取得一些实用成果,软件复用进入初步实用期.各厂商开发了许多支持复用的软件系统,如Toshiba的软件工厂, Draco, Genesis系统等.从实现角度看, 代以前,软件复用主要以采用非面向对象技术来实现,复用的效果则主要以软件生产率和软件质量为标准来加以衡量.下图为软件复用技术的现状。
浅谈软件复用技术及其应用
浅谈软件复用技术及其应用陈思[上海烟草(集团)公司计算机信息中心]_______________________________________________________________________________【摘要】随着企业信息化建设的不断深入,集团公司多个烟厂生产指挥系统建设将相继展开。
在企业中充分运用软件复用技术,不仅可以规范企业的业务流程,进而对企业的业务过程进行优化重组,而且构建可复用的软件系统本身就是企业非常重要的知识库和规则库,可以成为指导企业实施和扩展管理信息系统的模型。
在深入分析企业需求基础上建立可复用的企业业务模型可以在最大程度上提高企业实施ERP的成功率,降低信息化投资的成本,缩短建设周期。
所以大力发展并推广软件复用技术对于促进集团化规模下的多个烟厂信息化建设有重要的现实意义。
【关键词】软件复用模块化生产指挥系统_______________________________________________________________________________1 软件复用技术概述1.1 软件复用技术的概念大多数情况下所讨论的软件可复用性指软件本身的可重用性,即软件代码实现的可重用性。
而实际上,软件复用远不止这些,软件开发的全生命周期都有可重用的价值,包括项目的组织、软件需求、设计、文档、实现、测试方法和测试用例都是可以被重复利用或借鉴的有效资源。
软件较强的可复用一直是软件工程所追求的目标之一,软件工程界希望有一天能和其它工业领域一样,利用标准化的软件模块快速构建特定的应用系统。
事实上,这种努力也取得了相当大的进展,但是与人们所期望的目标还是有不少差距,软件模块还远没有机械设备的零部件那样拆卸、维修、更换方便和简单。
1.2软件复用技术对企业信息化建设的意义在企业中软件复用技术的运用,不仅可以规范企业的业务流程,发现业务流程中不合理的环节,进而对企业的业务过程进行优化重纽,而且构建可复用的软件系统本身就是企业非常重要的知识库和规则库,可以成为指导企业实施和扩展管理信息系统的模型。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
浅谈软件复用技术的四个关键问题
[摘要]软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
60年代出现的软件危机导致了有关软件复用的研究。
软件复用是指重复使用“为了复用目的而设计的软件”的过程。
通过软件复用,在应用系统开发中可以充分利用已有的开发成果,消除了包括分析、设计、编码、测试等在内的许多重复劳动,从而提高了软件开发的效率。
同时,通过复用高质量的已有开发成果,避免了重新开发可能引入的错误,从而提高了软件的质量。
[关键词]软件复用技术软件危机软件复用
一、引言
软件复用的概念是由McI1roy在1968年的NATO软件工程会议上提出的。
McI1roy提出了发展以可复用源代码软件构件为基础的软件工业和利用COTS (Component Off The Shelf)构件工业化生产软件的观点。
软件复用被认为是解决所谓“软件危机”的技术上可行的、现实的解决方案。
软件复用的对象包括软件开发过程中所使用和产生的各种资源:源代码、各种文档、测试数据、设计方法、体系结构等等,总称可复用构件。
软件复用是为了改善软件生产的资金投入大、开发周期长、软件产品失败率高等不能满足市场需求的现状,充分利用已有的高质量软件产品和部件,经过组装集成快速搭建应用软件系统的软件开发理论。
经历了结构化程序设计、面向对象技术、软件构件技术的发展,软件复用已经成为加速软件工业化早日实现的重要力量。
二、面向对象技术
面向对象技术提供了新的认知和表示世界的思想和方法。
面向对象方法就是用对象来作为描写客观信息的基本单元,它包括封装在一起的对象标识、对象属性和对象操作。
面向对象技术是以对象为基础来构件系统的,可以通过一个指向对象的指针或对它的引用,就可以访问这个对象的所有数据和方法,用面向对象技术建造起来的系统不仅易于管理和使用,而且源代码的可读性高。
如果没有对象,在程序中必须保存大量的变量和一个个孤立的函数,然后在这些没有多大关连的变量和函数之间进行变量传递,这不仅给编程增加了很大的复杂性,而且使得程序的可读性极差。
通过把这些有关连的变量和函数封装在一个对象中,大大的简化了编程的复杂性,提高了程序可读性,并且提供了一种抽象,该抽象是可扩展性的关键。
正是因为面向对象技术的特点,封装和继承使得面向对象技术成为了软构件技术的基础。
面向对象技术具有以下一些特性能够使它和软件复用相结合:
(一)对象是可重用构件的雏形,面向对象技术中,对象(类)已经充当了构成系统的基本单元,由于它的一系列特有的性质,使它具有了可重用构件的雏形;
(二)对象是部件化了的软件单元,具有通用性;
(三)对象具有抽象性:具有用户定义的复杂的数据类型功能,使它能表示一些复杂工程领域的问题;
(四)对象具有封装性:保证了对象类及对象可作为独立性很强的模块,为大型软件提供可靠的软件集成的单元模块;
(五)对象具有继承性:提供了一种代码共享的手段,可以避免重复代码的设计,使得面向对象方法确实行之有效,同时,可以通过继承机制不断扩充功能,而不影响原有软件的运行;
(六)对象具有易维护性:对象实现了抽象和封装,使其中可能出现的错误限制在自身,不会向外传播,易于检错和修改。
面向对象技术的这些特性,使其很容易与软件复用技术相结合,OO(Object Oriented)技术中类的聚集、实例对类的成员函数或操作的引用、子类对父类的继承等使软件的可重用性有了较大的提高,而且这种类型的重用容易实现,所以这种方式的软件重用发展软快,并且能够使软件开发过程向缩短软件开发周期、降低成本和提高软件质量的方向发展。
三、三种复用方式
(一)“原封不动”复用
寻找“原封不动”使用的现存类,提供所需要的特性。
此时。
所需要的类已经存在。
现在建立它的一个实例,用以提供所需要的特性。
这个实例可直接为应用软件利用,或者它可以用来做另一个类的实现部分。
通过复用一个现存类.可得到不加修改就能工作的已测试的代码。
由于大多数面向对象语言的两个特性,即界面与实现的分离(信息隐蔽和封装1,这种复用一般是成功的。
(二)进化性复用
此时,一个能够完全符合要求特性的类可能并不存在,但是,如果具有类似功能的类存在,则可以通过继承。
由现存的类渐进式地设计新类。
如果新类将要成为一个现存类的子类,它应当继承这个现存类的所有特性。
然后新类可以对需要追加的数据及必需的功能作局部定义还可以将几个现存类的特性混合起来开发出新的类.每个现存类是某些概念的模型.混合起来则产生了一个为特定待开发软件所用的具有多重概念的类。
有时。
一个现存的类可能会提供某些新类中需要的特性以及某些新类中不需要的特性。
因此,可先建立一个新的更抽象自。
使之成为要设计的类的父亲。
然后。
修改现存类以继承新的父类。
(三)“废弃性”开发
即不用任何复用开发一个新类。
任何一个类,只要它的开发不涉及现存类。
就可看作是一个新的继承结构的开始。
因此,将建立两种类:一种是抽象类。
它概括了将要表达的概念;另一种是具体类。
它要实现这个概念。
虽然不需要使用现存类来演变成新类,但还是有复用的可能性。
在新类的实现时,通过说明一些现存类的实例。
可以加快一个类的实现。
像表格、硬件接口等都可以用来作为一个新类的局部。
四、开放系统技术
开放系统技术的基本原则是在系统的开发中使用接口标准,同时使用符合接口标准的实现。
这些为系统开发中的设计决策,特别是对于系统的演化,提供了一个稳定的基础,同时,也为系统(子系统)间的互操作提供了保证。
开发系统技术具有在保持(甚至是提高)系统效率的前提下降低开发成本、缩短开发周期的可能。
对于稳定的接口标准的依赖,使得开发系统更容易适应技术的进步。
当前,以解决异构环境中的互操作为目标的分布对象技术是开放系统技术中新的主流技术。
开放系统技术为软件复用提供了良好的支持。
特别是分布对象技术使得符合接口标准的构件可以方便地以“即插即用”的方式组装到系统中,实现黑盒复用。
这样,在符合接口标准的前提下,构件就可以独立地进行开发,从而形成独立的构件制造业。
五、基于构件的软件开发
基于构件的软件开发(Component.Based Soft.ware Development,CBSD)的理论建立在软件工程、软件复用和分布式计算等基础之上,已经成为新一代的软件开发方法。
而且CBSD方法在CORBA、EJB和DCOM等构件标准的支持下已经有了相当快的发展。
在CBSD中,一个应用系统是由一些标准的构件(通用的和专用的)组装而成,这些构件可以通过商业采购、定制或自主开发获得。
不像传统的软件开发,基于构件的软件开发重在软件的集成,而不是软件的编程。
构件开发常常成为第三方的任务,他们定义了一组预制好的标准构件,以适应某些特殊需求。
软件开发人员只需将这些构件搭建起来,构成一个应用系统。
构件模型(标准)、构件的生产(创建)、构件库系统、构件的复用和组装(集成)是CBSD研究的主要内容。
图1给出了基于构件的软件开发过程。
目前,业界已存在了大量的CBSD概念、方法和工具,但是CBSD还未发展成熟,还需解决的关键问题有:必须建立一个完善的CBSD概念框架;必须有切实可行的构件描述方法和技术;建立一个合理的过程模型;支持描述技术和过程模型的辅助开发工具等。
六、总结
毫无疑问,软件复用将大大提高软件开发的效率,提高软件的质量。
软构件
技术是软件复用的基础和关键因素,面向对象技术是一种强有力的软件开发方法,这种开发方法的特点非常适用于软构件的开始,为软构件的开发和复用提供了基本的技术保证。
参考文献:
[1] 林振荣,李洪,伍军云. 软件复用过程中构件技术的研究[J]. 科技广场,2005,(05) .
[2] 向阳. 浅谈软件复用技术的发展[J]. 中国科技信息,2005,(04).
[3]杨芙清,梅宏,吕建,金芝. 浅论软件技术发展[J] .电子学报,2002,(S1) .
[4]杨芙清,梅宏,李克勤. 软件复用与软件构件技术[J] .电子学报,1999,(02) .
[5]杨芙清. 软件工程技术发展思索[J] .软件学报,2005,(01) .
[6]尹锋. 软件工程的若干热点技术发展现状与展望[J] .长沙大学学报,2006,(05) .
注:“本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。
”。