首页 > 技术文章 > 6.1 Metrics and Construction Principles for Maintainability --可维护性的度量与构造原则

qq1076150459 2020-07-11 21:20 原文

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 是关于如何为“类”和“对象”指派“职责”的一系列原则

推荐阅读