1.什么是软件复用
软件重用是使用现有软件组件实现或更新软件系统的过程。
软件复用有两方面:
- 面向复用编程:开发出可复用的软件
- 基于复用编程:利用已有的可复用软件搭建应用系统
为什么复用:
- 降低成本和开发时间
- 经过充分测试,可靠、稳定
- 标准化,在不同应用中保持一致
2.如何衡量“可重用性”?
复用的代价:
- 搜索、获取库的代价
- 适配、扩展的代价
- 实例化的代价
- 与软件其他部分互联的代价
可重用性意味着对构建、打包、分发、安装、配置、部署、维护和升级问题进行明确的管理
一个软件库具有高度可重用性应具有以下特点:
- 规模小且简单
- 与标准兼容
- 灵活可变
- 可扩展
- 泛型化,参数化(不需要用户考虑实现)
- 模块化
- 变化的局部性
- 变化需求下的稳定性
- 丰富的文档和帮助
3.可重用组件的层次和形态
重用级别:
- 代码(最主要的)
- 需求
- 设计、规约
- 数据
- 测试用例
- 文档
几乎所有有关的一切都能拿来复用
3.1 源代码复用
源代码复用是最低级别
类型:
-
白盒复用
当代码本身可用时重用代码。通常需要某种修改或适应。于是,就把源码Ctrl+C并Ctrl+V,这是复用
好处: 可以自定义,以便于适应不同的情况
坏处: 增加了代码的复杂性,而且你也不一定能看的源码 -
黑盒复用
通过API接口来使用,无法修改代码
好处: 简单,清晰
坏处: 适应性差
通常都是将源代码组织为库的形式,来进行复用的传播
可重用软件组件的来源:
- 内部(公司)代码库(Guava)
- 第三方库(Apache)
- 语言自身提供的(JDK)
- 来自教程、示例、书籍等的代码示例。
- 代码专家或知识渊博的同事
- 现有系统代码
- 开源软件
代码搜索网站:
- grepcode.com
- github.com/search
- searchcode.com
杜绝抄袭
3.2 模块级复用:类/接口
类是代码复用的组成单元,不需要源代码,需要一个压缩包jar/zip、一个使用文档
这样的封装是有利于复用的,优点在于管理更少的代码,但是版本控制,向后兼容性仍然存在问题
使用时之将相关类进行静态链接
复用类的方法:
-
继承(inherita