5.1可复用性的度量、形态与外部表现
5.1 Metrics, Morphology and External Observations of Reusability:
可复用性的度量、形态与外部表现
1. 什么是软件的可复用性
2. 怎样衡量可复用性
3. 可复用组件的等级和形态
--源代码级别的复用
--模块级别的复用:类/抽象类/接口
--库级别的复用:API/包
--系统级别的复用:框架
4.External observations of reusability 外部观察的可复用性
– Type Variation
– Routine Grouping
– Implementation Variation
– Representation Independence
– Factoring Out Common Behaviors
1 What is Software Reuse?
利用已有的软件实现软件系统
降低开发成本,可靠稳定,标准化。
2 How to measure “reusability”?
3 Levels and morphology of reusable components
最主要的复用是在代码层面
但软件构造的任何级别都可以复用
1)
White box reuse
白盒复用:源代码可见,可修改和扩展
复制已有代码当正在开发的系统,进行修改,可定制化程度高。
但对其修改增加了软件的复杂度,且需要对其内部充分的了解
2)
黑盒复用:源代码不可见,不能修改
简单清晰,但是适应性差
复用组件的形式
源码。包。
(1) Source code reuse 源代码层面
最低程度复用代码,拷贝粘贴,风险高。
(2) Module-level reuse:class/interface 模块层面:类和接口
需要文档,封装。管理更少的代码,版本兼容,需要打包相关的类
方法:Inheritance继承 delegation 委托
(3) Library-level reuse: API/Package
库,API
(4) System-level reuse: Framework
系统层面
框架:可复用的代码骨架
框架:一组具体类、抽象类、及其之间的连接关系
开发者根据framework 的规约,填充自己的代码进去,形成完整系统
白盒框架:
继承和动态绑定
继承框架作为子类,重写必要的方法。
黑盒框架:
提供接口,重写接口
4 External observations of reusability
类型可变。功能分组;实现可变,表示独立,共性抽取。
类型可变 适应不同的类型,且满足LSP
内部实现可能会经常变化,但客户端不应受到影响。独立性,信息隐藏。
§
将共同的行为(共性)抽象出来,形成可复用实体