1. Software Maintenance and Evolution 软件维护与软件演化
2. Metrics of Maintainability 可维护性策略
3.Modular Design and Modularity Principles模块设计和模块设计原则
4. OO Design Principles: SOLID 面向对象设计原则:SOLID
5. OO Design Principles: GRASP 面向对象设计原则:GRASP
1 Software Maintenance and Evolution
软件维护:修复错误、改善性能
软件演化:对软件进行持续的更新
软件的大部分成本来自于维护阶段
2 Metrics of Maintainability可维护性策略
可维护性的很多别名:
可维护性--可扩展性--灵活性--可适应性--可管理性--支持性
一些指数的计算(略)
3.Modular Design and Modularity Principles 模块化编程
(1)Five Criteria for Evaluating Modularity 五个模块化的策略
可分解性Decomposability
可组合性Composability
可理解性
可持续性--发生变化时受影响范围最小
出现异常之后的保护--出现异常受影响范围最小
1)可分解性
将问题分解为各个可独立解决的子问题
2)可组合性
可容易的将模块组合起来形成新的系统
3)可理解性
每个子模块都可被系统设计者容易的理解
4)可持续性
小的变化只影响小部分模块
5)可保护性
运行不正常局限在小范围的模块内
(2) Five Rules of Modularity Design 五个模块设计的规则
Direct Mapping ( 直接映射 )
Few Interfaces ( 尽可能少的接口 )
Small Interfaces ( 尽可能小的接口 )
Explicit Interfaces ( 显式接口 )
Information Hiding ( 信息隐藏
(3) Coupling and Cohesion 略
4 OO Design Principles: SOLID
(1) Single Responsibility Principle (SRP) 单一责任原则
一个类一个责任
不应有多于1个的原因使一个类发生变化
(2) Open/Closed Principle (OCP) 面向变化的开放封闭原则
对扩展性开放:模块的行为是可扩展的,从而该模块可表现出新的行为
对修改的封闭:模块自身代码不应被修改
关键:抽象技术
(3)Liskov Substitution Principle (LSP) Liskov替换原则
子类型必须能够替换其基类型
派生类必须能够通过其基类的接口使用,客户端无需了解二者之间的差异
(4) Interface Segregation Principle (ISP)接口隔离原则
不能强迫客户端依赖他们不需要的接口:只提供必须的接口
(5) Dependency Inversion Principle (DIP) 依赖转置原则
抽象的模块不应依赖于具体的模块,而具体应依赖于抽象
Delegation的时候要通过Interface 建立联系,而非具体的子类
5 OO Design Principles: GRASP
GRASP 是关于如何为“类”和“对象”指派“职责”的一系列原则