1 软件设计概述
1.1 为什么要软件设计
1.2 何为软件设计
何为软件系统的解决方案?
- 软件设计关注与软件需求的实现问题
- 软件设计是需求分析和软件实现间的桥梁
1.3 软件设计的质量要求
1.4 软件设计的过程
1.4.1 软件体系结构设计
1.4.2 用户界面设计
1.4.3 软件详细设计
1.4.4 其他工作
1.5 软件设计元素
2 软件设计原则
2.1 软件设计要考虑的因素
2.2 软件设计的基本原则
2.2.1 抽象原则
数据抽象和过程抽象:
2.2.2 模块化、高内聚度和低耦合度原则
高内聚度原则:
2.2.2.1 偶然内聚(Coincidental cohesion)
2.2.2.2 逻辑内聚(Logical Cohesion)
2.2.2.3 时间内聚(Temporal cohesion)
2.2.2.4 过程内聚(Procedural cohesion)
2.2.2.5 通信内聚(Communicational cohesion)
2.2.2.6 顺序内聚(Sequential cohesion)
2.2.2.7 功能内聚(Functional cohesion)
2.2.2.8 内聚度与软件结构好坏的关系
低耦合度原则:
2.2.2.9 零耦合
2.2.2.10 数据耦合
2.2.2.11 特征耦合
2.2.2.12 控制耦合
2.2.2.13 公共环境耦合
2.2.2.14 内容耦合
示例:
2.2.2.15 耦合度与软件结构
2.2.3 信息隐藏原则
面向对象软件设计与实现中的信息隐藏:
2.2.4 关注点分离原则
2.2.5 面向切面的编程(AOP)
2.2.6 软件重用原则
2.2.7 软件设计的其他原则
3 面向对象软件设计方法学
3.1.1 软件设计方法的发展
3.1.2 软件设计方法—结构化方法
系统结构图:
3.1.2.1 面向数据流的结构化设计
- 变换流(Transform Flow):所有信息流都可归结为变换流
- 变换型的软件结构图:相应于取得数据、变换数据、给出数据,变换流型系统结构图由输入、变换中心和输出等三部分组成
- 事务流(Transaction Flow)
- 事务型的软件结构图
3.1.3 面向对象软件设计方法学
3.1.3.1 面向对象软件设计过程
- 用包图表示的软件体系结构设计
- 用交互图来表示用户界面设计
3.1.3.2 面向对象的软件设计原则
- 单职责原则(Single Responsibility Principle)
- 开-闭原则 (Open Closed Principle)
- 里氏替换原则 (Liskov Substitution Principle)
- Liskov替换原则的实现:
- Liskov替换原则的实现:
- 接口分离原则 (Interface Segregation Principle, ISP)
示例:
- 依赖倒置原则 (Dependency Inversion Principle, DIP):依赖关系应该是尽量依赖接口(或抽象类),而不是依赖于具体类。
- 最少知识原则
3.1.3.3 面向对象软件设计的优势