1、什么是软件可复用?
使用现有的软件组件来快速实现需要的功能。
软件可复用的两个方面:
1、开发层面:面向复用编程,开发成本高,缺乏针对性,性能差些;
2、使用层面:基于复用编程,复用时需要适配;
为什么要可复用:
降低成本和开发时间;能被复用的模块都是可靠稳定的;标准化的,在不同应用中可保持一致。
可复用的缺点:
开发可重用的组件需要额外的代价;缺乏针对性,性能差;复用时也需要修改、完善,也需要额外的成本。
2、如何衡量可复用性?
被复用的频率多频繁、复用的代价多高
高复用性的软件的特点:
3、复用层次
最主要的是代码层面的复用,但软件构造过程中任何实体都可能被复用,例如需求、spec、数据、测试用例、文档(广义)。
代码层面的的四个复用级别:代码复用,模块复用,类库、API复用,框架复用。
白盒复用和黑盒复用的定义、优缺点:
模块级别的复用:
一般以jar包的形式,文档十分重要、良好的封装重要、管理更少的代码、向后兼容、调用了某个包需要将它和源文件一起pack起来。
复用的方式:
继承:父类实现的方法子类不用实现了,但继承后是不能取消的,要避免碰到父类方法不适用的情况。
委托:一个对象依赖另一个对象的功能。分为显式委托、隐式委托。比继承的耦合程度低。
类库级别复用:
客户端调用类库。
框架的复用:
框架是指一组类,及其之间的关系。只有框架,没有内容,需要填充。框架都是不完整的,可运行。分为黑盒框架、白盒框架。
用户填充框架,框架运行,框架调用开发者写的程序。
4、外部观察可复用性
类型可变(泛型)、实现可变(不同的实现不同的应用场景,list,规约不变)、提供完备的细粒度操作(保证功能的完整性)、表示独立性、共性抽取