预览加载中,请您耐心等待几秒...
1/5
2/5
3/5
4/5
5/5

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

软件的复用技术及开发方法软件的复用技术及开发方法软件的复用技术及开发方法2.1软件的复用技术软件复用是指在开发新的软件系统时,对已有的软件或软件模块重新使用,该软件可以是己经存在的软件,也可以是专门的可复用组件〔8〕。软件可复用性的高低影响到生产效率的高低、软件质量的好坏和系统可维护性的好坏。在软件工程中面临的问题不是缺乏复用,而是缺乏广泛的、系统的复用。软件复用包括构造可复用软件和用可复用软件进行构造。构造可复用软件,一方面可以从现存的软件系统中抽取,另一方面通过改写或重新设计来实施。Jones将软件复用的对象分为4种数据复用、体系结构复用、设计复用和程序复用。这样,软件复用可在实现层、设计层和体系结构层三个层次上实现。实现层软件复用是指对己有的程序代码进行复用,它包括源代码组件形式。设计层软件复用是指对已有的软件系统的设计信息进行复用。而体系结构层软件复用是最有效的软件复用,它主要是软件体系结构形式化的复用,即将软件的框架组织,全局结构设计作为复用对象。可复用的软件体系结构则通常是显式地复用软件体系结构,并通过集成其他软件体系结构,建立新的更高层次的体系结构。   面向对象的软件复用机制主要有两种:继承和对象组合。(1)继承继承是指子类可以从父类中直接获得某些特征和行为的能力,继承可作为代码复用和概念复用的手段。作为代码复用的手段是指:子类通过继承父类的行为,一些代码就不必重写;作为概念复用的手段是指:子类共享父类的方法定义。作为代码复用和概念复用手段的继承机制,在面向对象技术中,通过面向对象技术的一些主要机制来实现对“支持可维护性的可复用性”的支持。这些面向对象的主要机制是:数据的抽象化、封装和多态性。通过运用这些机制,继承可以在高层次上提供(相对于传统的低层次复用)可复用性:数据的抽象化和继承关系使得概念或定义可以复用;多态性使得实现和应用可以复用;而抽象化和封装可以保持和促进系统的可维护性。这样一来,复用的焦点不再集中在函数和算法等具体实现细节上,而是集中在最重要的含有宏观商业逻辑的抽象层次上。换言之,复用的焦点发生了“倒转”。发生复用焦点的倒转并不是因为实现细节的复用并不重要,而是因为这些细节上的复用己经做的很好了,并且这种复用在提高复用性的同时提高了软件的可维护性。由于继承关系直接继承的是接口,同时也继承实现,因而实际上父类的内部实现对子类而言是可见的,属于白盒复用方式。(2)对象的组合对象组合是指新的复杂功能可以通过组装或组合对象来获得。这种复杂的功能由对象组合来获得的设计思想与过程化程序设计思想是相似的,在过程化程序设计中,一个复杂的功能模块可以分解为更细小的和更简单的功能模块,整体功能是各个局部功能的聚集。在面向对象系统中,系统是由对象构成,因此复杂的功能或者说能完成更复杂功能的对象,可以通过功能较简单的对象的组装或组合来实现。对象组合方式是从整体与局部的角度来考虑软件复用思想的。对象组合要求对象具有良好的接口定义,使用对象的接口来使用对象的功能,并往往运用赋值多态来获得具体对象,对象的内部功能是不可见的,对象只以“黑盒”的形式出现,属于黑盒复用方式。面向对象的软件复用过程有以下步骤:①抽象:对软件制品进行抽象,抽象层次越高,复用的'机会就越大;②选择:一般通过分类和编目方案组织和检索可复用的软件制品;③特殊化:即将上步选定了的一个一般化的软件制品进行特殊化,以满足特定领域的要求;④集成:集成需要在软件体系结构或框架的指导下,将选定的、特殊化了的模块集合组成一个完整的软件系统。要有效地将可复用制品集成为一个软件系统,使用者必须清楚地理解该模块的接口。而从复用的使用角度上看,软件复用的使用行为可能发生在三个维上。①平台维:以某平台上的软件为基础,修改它与运行平台相关的部分,使其能够运行在新的平台,即软件移植;②时间维:使用以前的软件版本作为新版本的基础,加入新功能,适应新需求,即软件维护;③应用维:将某软件或其中构件用于其他系统中,新系统具有不同功能和用途,即真正的软件复用。这三种行为中都重复使用了现有的软件,但是真正意义的软件复用指的是应用维上的软件复用,即“使用为复用而开发的软件”来更快更好地开发新的应用系统。通过软件复用,消除了许多重复劳动,降低了软件开发的时间。同时,复用高质量的己有开发成果,避免了重新开发可能引入的错误,从而提高了软件的质量。2.2软件的开发方法2.2.1结构化开发方法结构化方法是把现实世界描绘为数据在信息系统中的流动,以及在数据流动的过程中数据向信息的转化。其基本思想为:基于功能分解设计系统结构,通过把复杂的问题逐层分解,进行简化(即自顶向下,逐层细化),将