可修改性及其策略(modifiablity)
可修改性的含义
关注点
- 修改的成本
- 系统的哪些部分被修改
- 修改发生的时间
- 修改由谁来进行
衡量指标
- 修改完成的时间
- 修改所花的人力成本
- 修改所花的经济成本
- 。。。
可修改性场景
-
刺激源
谁进行的修改(开发者/管理员/用户)
-
刺激
要进行的具体修改
-
制品
修改系统的功能 or UI 交互的其他系统
-
环境
- 在什么时间进行的修改?设计期间 or 开发期间 or 运行期间?
- 修改的时间越迟,越不利
-
响应
操作人员理解如何修改—>进行修改—>测试—>部署
-
响应衡量指标
时间、成本
提升可修改性的策略
目标
降低修改的时间和成本
方向
-
限制修改范围
让修改所影响的范围尽可能的小
-
延迟绑定时间
让软件在运行期间仍可进行灵活修改
问题(未解决)
限制修改范围
-
模块高内聚、低耦合
-
考虑到可能会发生的修改
-
让模块通用
解释器风格的思路
-
隐藏信息
面向对象机制中的可访问性(public/private)
-
维持接口不变
在接口不变的情况下,接口连接的双方可以独立变化
-
限制通信路径
-
使用中介
数据中介:共享数据的风格
服务中介:设计模式中的bridge、factory method等模式
-
命名服务器
查询所需资源/对象的位置,解决位置依赖
-
按需创建实例
借助设计模式中的创建型模式(单例、工厂方法、抽象工厂、原型、建造者)
延迟绑定时间
-
配置文件
修改配置文件,而不用修改代码
-
发布—订阅模式
-
多态
用不同的子类,实现不同的功能
可修改性总结
-1639213184232)]
-
发布—订阅模式
[外链图片转存中…(img-L2ZDlBKW-1639213184233)]
-
多态
用不同的子类,实现不同的功能