#可复用性
- 什么是软件可复用性?
硬件,CPU,显卡可复用性
软件复用就是用已存在的软件模块执行更新软件。
面向复用编程:开发出可复用软件。
基于复用编程:利用已有的可复用软件搭建应用系统。 - 基于复用编程:分析相似性+差异性。越抽象的越容易复用。选取,适配,修改,扩展。往往无法拿来就用,需要适配,可靠性建立在外部基础上。
- 为什么复用?
降低成本,开发时间,经过充分测试,可靠,稳定,标准化,在不同应用中保持一致。但需要代价,代价也高(抽象)。 - 开发可复用的软件:高成本,高适应,性能差,针对性差。
- 使用已有软件进行开发:往往无法拿来就用,需要适配。
- 如何评判可复用性?
复用机会有多频繁?复用场合有多少?复用代价有多大?
小,简单。与标准兼容。灵活可变。可扩展。泛型,参数化。模块化。变化的局部性。稳定。丰富的文档和帮助。 - 可复用层级:最主要的复用是在代码层面,还有其他层面。软件构造过程中的任何实体都可能被复用。(需求,设计,规约,数据,测试用例,文档)
- 复用类型:
(1) 白盒复用:源代码可见,可修改和扩展。(一般是继承,继承树复杂,程序员不方便)
(2) 黑盒复用:源代码不可见,不能修改。(通过API接口使用,无法修改源代码,一般是调用类,复用效率低) - 代码层级的复用:复制粘贴不推荐。
模块层级的复用:基于类的复用。通过接口将功能提供给用户使用。
类的复用:继承(白盒),委托(黑盒,显式委托常用,隐式委托)
库文件层级的复用:库文件(想选什么库文件就选什么)。
框架层级的复用:框架(主要部分写好,可定制的部分由用户完成)。一组具体类,抽象类及其连接关系。
白盒框架:通过代码层面的继承进行框架扩展。
黑盒框架:通过实现特定接口/委托进行框架扩展。
分析API的好坏。 - 外部观察可复用性:类型可变(子类型,泛型),功能分组,实现可变(ADT有多种 不同实现),表示独立,共性抽取。