软件复用之心得
-
- 软件复用
-
- 主要思想
- 软件复用过程
- 软件复用的利处
- 软件复用的弊处
- 两种类型
- 类的重用:继承和委托
-
- extends关键字
- implements关键字
- super 与 this 关键字
- final关键字
- 库级别重用:API /包
- 系统级重用:框架
- 复用对象级别:
-
- 代码级软件复用
- 组件级软件复用
- 系统级软件复用
- 总结
软件复用
软件复用(SoftWare Reuse)是将已有软件的各种有关知识用于建立新的软件,以缩减软件开发和维护的花费。软件复用是提高软件生产力和质量的一种重要技术。早期的软件复用主要是代码级复用,被复用的知识专指程序,后来扩大到包括领域知识、开发经验、设计决定、体系结构、需求、设计、代码和文档等一切有关方面。
主要思想
软件复用的主要思想是,将软件看成是由不同功能部分的“组件”所组成的有机体,每一个组件在设计编写时可以被设计成完成同类工作的通用工具,这样,如果完成各种工作的组件被建立起来以后,编写一特定软件的工作就变成了将各种不同组件组织连接体来的简单问题,这对于软件产品的最终质量和维护工作都有本质性的改变。
软件复用过程
应用软件系统的开发过程包含以下几个阶段:领域和需求分析、设计、编码、测试以及维护等,各个阶段的工作中均存在重复,而这些重复都可以作为软件复用的内容。
复用一般可以分四个层次:
1.领域和需求分析阶段的复用。?? 2.设计阶段的复用。
3.编码阶段的复用。?? 4.测试阶段的复用。
软件复用的利处
降低成本和开发时间
产生可靠的软件
实现标准化,在不同应用中保持一致
可重用组件的级别和形态
代码级别复用
软件复用的弊处
维护问题
很容易出现错误
需要使用的软件是如何工作的知识
需要访问源代码
两种类型
白盒复用:源代码可见,可修改和扩展,复制已有代码当正在开发的系统,进行修改
优点:可定制化程度高
缺点: 对其修改增加了软件的复杂度,且需要对其内部充分的了解
黑盒复用:源代码不可见,不能修改,只能通过API接口来使用,无法修改代码
优点:简单清晰
缺点:适应性差
类的重用:继承和委托
继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
子类拥有父类非private的属性,方法。
子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。子类可以用自己的方式实现父类的方法。Java的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如A类继承B类,B类继承C类,所以按照关系就是C类是B类的父类,B类是A类的父类。
提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系)。
继承可以使用 extends 和implements 这两个关键字来实现继承,而且所有的类都是继承于java.lang.Object,当一个类没有继承的两个关键字,则默认继承object(这个类在 java.lang 包中,所以不需要 import)祖先类。
extends关键字
在 Java中,类的继承是单一继承,也就是说,一个子类只能拥有一个父类,所以 extends 只能继承一个类。
implements关键字
使用 implements关键字可以变相的使java具有多继承的特性,使用范围为类继承接口的情况,可以同时继承多个接口(接口跟接口之间采用逗 分隔)。
super 与 this 关键字
super关键字:我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类。
this关键字:指向自己的引用。
final关键字
final关键字声明类可以把类定义为不能继承的,即最终类;或者用于修饰方法,该方法不能被子类重写:
子类不能继承父类的构造器(构造方法或者构造函数),但是父类的构造器带有参数的,则必须在子类的构造器中显式地通过super关键字调用父类的构造器并配以适当的参数列表。
如果父类有无参构造器,则在子类的构造器中用super调用父类构造器不是必须的,如果没有使用super关键字,系统会自动调用父类的无参构造器。
库级别重用:API /包
好的API的特点
易于学习
易于使用,即使没有文档
很难滥用
易于阅读和维护使用它的代码
足够强大以满足要求
易于发展
适合受众
系统级重用:框架
框架:一组具体类、抽象类、及其之间的连接关系
开发者根据 framework的规约,填充自己的代码进去,形成完整系统。通常通过选择性覆盖来扩展框架;或者程序员可以添加专门的用户代码来提供特定的功能—即定义继承了抽象类祖先操作的具体类 Hook方法,它被应用程序覆盖以扩展框架。Hook方法系统地将应用程序域的接口和行为与应用程序在特定上下文中所需的变体解耦。 控制反转:与库或标准用户应用程序不同,控制流不是由调用者决定的,而是由框架决定的。不可修改的框架代码:在接受用户实现的扩展时,框架代码不应该被修改。换句话说,用户可以扩展框架,但不应修改其代码。
复用对象级别:
复用对象主要包含代码级,组件级,系统级
类级:主要复用对象为类或者对象
组件级:主要复用对象为组件
系统级:主要复用对象为子系统
代码级软件复用
代码级软件复用的实施过程:
代码级软件复用主要实施的过程为直接copy代码到指定的项目中。
代码级软件复用是最常见的复用方式。
代码级软件复用的主要技术优缺点:
优点:简单,操作方便
缺点:相对于其他的复用方式,需对代码重新ReView。
组件级软件复用
组件级软件复用的范围及实施流程
组件开发过程:
组件接口文档定义à组件开发à组件包和文档提交到公司组建库
注意:组件复用的关键在于组件的管理
组件级软件复用的主要技术优缺点
优点:使用简单
缺点:管理要求高
系统级软件复用
系统级软件复用的范围及实施流程
子系统功能定义(包含系统集成接口)à子系统正常开发(这个过程和正常系统开发过程一致)
系统级软件复用的主要技术优缺点
优点:复用效益高
总结
软件复用就是将已有的软件成分用于构造新的软件系统。可以被复用的软件成分一般称作可复用构件,无论对可复用构件原封不动地使用还是作适当的修改后再使用,只要是用来构造新软件,则都可称作复用。软件复用不仅仅是对程序的复用,它还包括对软件生产过程中任何活动所产生的制成品的复用,如项目计划、可行性 告、需求定义、分析模型、设计模型、详细说明、源程序、测试用例等等。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!