软件重用评述

一、软件重用定义 
  软件重用(Software  Reuse,又称软件复用或软件再用)的概念对于大家并不陌生。早在1968年的NATO软件工程会议上就已 经提出可复用库的思想。软件重用的定义也很多,比较权威和通用的一种是:软件重用是利用事先建立好的软部品创建新软件系统的过程。这个定义蕴含着软件重用 所必须包含的两个方面: 
1. 系统地开发可重用的软部品。这些软部品可以是代码,但不应该仅仅局限在代码。我们必须从更广泛和更高层次来理解,这样才会带来更大的重用收益。比如软部品还可以是:分析,设计,测试数据,原型,计划,文档,模板,框架等等。 
2. 系统地使用这些软部品作为构筑模块,来建立新的系统。 

二、软件重用的好处 
软件重用会带来以下好处: 
1. 提高软件生成率。 
2. 缩短开发周期 。 
3. 降低软件开发和维护费用。 
4. 生产更加标准化的软件。 
5. 提高软件开发质量。 
6. 增强软件系统的互操作性。 
7. 减少软件开发人员数量。 
8. 使开发人员能比较容易的适应不同性质的项目开发。 

三、软件重用形式 
软件重用的形式(或手段)很多,重用的级别有大有小。主要有以下几种: 
1. 源代码模块或者类一级的重用。这是最基本的软件重用形式。 
2. 二进制形式的重用。如组件重用。 
3. 组装式重用。比如:把好几个应用程序的功能集成在一起。例如,要建立一个门户站点应用,登陆用户既可以查询天气情况,又可以查看股市行情, 还可以在线购物。这些功能由不同网络应用服务供应商提供,通过这种组装式重用,就可以非常容易地把上述功能都集成到新的门户站点中。 
4. 分析级别重用。 
5. 设计级别重用。 
6. 软件文档重用。 

四、软件重用分类 
  为软件重用分类比较困难,因为软件重用技术众多,一种重用技术可以包括多种重用形式。比如说:框架即可以包括代码级重用,也可以包括设计级重用。有一种分类方法是按照软件重用所应用的领域范围,把重用划分为两种:横向重用和纵向重用。 
1. 横向重用是指重用不同应用领域中的软件元素,例如数据结构、分类算法、人机界面构件等。标准函数库是一种典型的原始的横向重用机制。 
2. 纵向重用是指在一类具有较多公共性的应用领域之间进行软部品重用。因为在两个截然不同的应用领域之间实施软件重用非常困难,潜力不大,所以纵向重用才广受瞩目,并成为软件重用技术的真正所在。纵向重用活动的主要包括以下几个步骤: 
1) 首先进行域分析。根据应用领域的特征及相似性预测软部件的可重用性。 
2) 然后进行软部件的开发。一旦确认了软部件的重用价值,即可进行软部品的开发并对具有重用价值的软部品进行一般化,以便它们能够适应新的类似的应用领域。 
3) 最后,软部件及其文档即可进入软部品库,成为可供后续项目使用的可重用资源。 

五、流行的软件重用技术 
  最理想的重用技术是它的重用产品能够和用户的需求完全一致,不需要用户做任何自定义,并且能够无需用户学习就能够被使用。然而,一种重用技术 能够适合今天,可能不适合明天。一个重用产品越是能够被自定义,它越是可能在一个特定的环境下被使用,但是这也需要用户进行更多的学习,研究和实践。 
  自从软件重用思想产生以来,计算机科学家和软件工程师就致力与软件重用的技术的研究和实践。在30多年的时间内,出现多种软件重用技术,如:库函数,模板,面向对象、设计模式、组件、框架、构架。 
  下面是应用程序框架和其它三种软件流行的重用技术的比较。 
1. 库函数
  库函数是很早的软件重用技术。很多编程语言为了增强自身的功能,都提供了大量的库函数。对于库函数的使用者,他只要知道函数的名称,返回值的类型, 
函数参数和函数功能就可以对其进行调用。 
2. 面向对象
  面向对象技术是近三十年来学术界和工业界研究和应用的一个热点。面向对象技术通过方法、消息、类、继承、封装、和实例等机制构造软件系统,并 为软件重用提供强有力的支持。面向对象方法已成为当今最有效、最先进的软件开发方法。与函数库对应,很多面向对象语言为应用程序开发者提供了易于使用的类 库,如VC++中的MFC。 
3. 模板
  模板相当于工业生产中所用的''模具''。有各种各样的模板(如文档模板,网页模板等),利用这些模板可以比较快速地建立对应的软件产品。模板把不变的封装在内部,对可能变化的部分提供了通用接口,由使用者来对这些接口进行设定或实现。 
4. 设计模式 
  设计模式作为重用设计信息的一种技术,在面向对象设计中越来越来流行。设计模式描述了在我们周围不断重复发生的问题,该问题的解决方案的核心 和解决方案实施的上下文。设计模式命名一种技术并且描述它的成本和收益,共享一系列模式的开发者拥有共同的语言来描述他们的设计。 
5. 构件
   普通意义上的构件应从以下几个方面来理解: 
1) 构件应是抽象的系统特征单元,具有封装性和信息隐蔽,其功能由它的接口定义。 
2) 构件可以是原子的,也可以是复合的。因此它可以是函数,过程或对象类,也可以是更大规模的单元。一个子系统是包含其它构件的构件。 
3) 构件是可配置和共享的,这是基于构件开发的基石,且构件之间能相互提供服务。 
6. 构架 
   普通意义上的构架应从以下几个方面来理解: 
1) 构架是与设计的同义理解,是系统原型或早期的实现。 
2) 构架是高层次的系统整体组织。 
3) 构架是关于特定技术如何合作组成一个特定系统的解释。 
7. 框架 
  如果把软件的构建过程看成是传统的建筑过程;框架的作用相当于为我们的房屋搭建的''架子''。框架从重用意义上说,是一个介于构件和构架之间的一个概念。构件,框架和构架三者的主要区别在于:对重用的支持程度的不同: 
1) 构件是基础,也是基于构件开发的最小单元。构件重用包括可重用构件的制作和利用可重用构件构造新构件或系统, 
2) 一个框架和构架包含多个构件。这些构件使用统一的框架(构架)接口,使得构造一个应用系统更为容易。 
3) 框架重用包括代码重用和分析设计重用,一个应用系统可能需要若干个框架的支撑,从这个意义上来说,框架也是一个''构件''的同时,框架又是一类特定领域的构架。 
4) 构架重用不仅包括代码重用和分析设计重用,更重要的是抽象层次更高的系统级重用。 
5) 框架和构架的重用层次更高,比构件更为抽象灵活,但也更难学习和使用。 
六、软件重用技术的未来 
   有人预测:到2003年至少70%的新应用程序将会由构筑模块(building         blocks)构成,这些构筑模块(如 软构件和应用程序框架)加快了产品的开发速度和企业的应变能力。以设计模式,框架和商业构件形势出现的软部品可以通过重用显著的提升开发品质和生产力,重 用反过来也可以显著的降低成本和缩短软件开发周期。未来应用程序的开发依存于一个开放的,便利构件选择和装配的综合体系结构。信息系统组织必须为基于构件 开发制定一项战略。
 

软 件重用是指在两次或多次不同的软件开发过程中重复使用相同或相似软件元素的过程。软件元素包括程序代码、测试用例、设计文档、设计过程、需要分析文档甚至 领域知识。对于新的软件开发项目而言,它们或者是构成整个目标软件系统的部件,或者在软件开发过程中发挥某种作用。通常将这些软件元素称为软部件。
   为了能够在软件开发过程中重用现有的软部件,必须在此之前不断的进行软部件的积累,并将它们组织成软部件库。这就是说,软件重用不仅要讨论如何检索所需 的软部件以及如何对它们进行必要的修剪,还要解决如何选取软部件、如何组织软部件库等问题。因此,软件重用方法学通常要求软件开发项目既要考虑重用已有软 部件的机制,又要系统的考虑生产可重用软部件的机制。这类项目通常被称为软件重用项目。


按 照重要活动是否跨越相似性较小少的多个应用领域,软件重用可区别为横向和纵向重用。横向重用(horizontalreuse)是指重用不同应用领域中的 软件元素,例如数据结构、分类算法、人机界面构件等。标准函数库是一种典型的、原始的横向重用机制。纵向重用是指在一类具有较多公共性的应用领域之间进行 软部件重用。因为在两个截然不同的应用领域之间实施软件重用的潜力不大,所以纵向重用才广受瞩目,并成为软件重用技术的真正所在。不难理解纵向重用活动的 主要关键点即是域分析;根据应用领域的特征及相似性预测软部件的可重用性。一旦根据域确认了软部件的重用价值,机可进行软部件的开发并对具有重用价值的软 部件进行一般化,以便它们能够适应新的类似的应用领域。然后,软部件及其文档即可进入软部件库,成为可供后续开发项目使用的可重用资源。这些部件构成软部 件构造活动。显然,它是一个软部件不断积累、不断完善的渐进过程。随着软部件的不断丰富,软部件库的规模会不断扩大,因此,库的组织结构将直接影响软部件 的检索效应,特别是当检索手段并不局限于标准函数库所采用的简单名字匹配方法时。可供侯选的软部件从库中别检索出来以后,用户还必须理解其功能及行为,以 判别它是否真正适用于当前项目。必要时可考虑对某个与期望的功能/行为匹配程度最佳的软部件进行稍许修改,甚至可以将修改后的软部件加进软部件以替代原有 软部件。当然,这要求修改后的软部件比原有软部件具有更高的重用价值。上述软件重用方法的   
显 然,软件重用过程可借助计算机的帮助。支持软件重用的CASE工具的主要任务是,用某种组织结构实现软部件库的存储,提供友好的人机界面,帮助用户浏览、 检索和修改软部件库,并且读用户赶兴趣的问题进行解释。事实上,现在几乎所有的软件重用活动都是在CASE工具的帮助下进行的。
  使用重用技术 可以减少软件开发活动中大量的重复性工作,这样就能够提高软件的生产率,减低开发成本,缩短开发周期。同时,由于软部件大都经过严格的质量认证,并在实际 运行环境中得到检验,因此,重用软部件有助于改善软件质量。此外,大量使用软部件,软件的灵活性和标准化程度也渴望得到提高。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章