在实际的软件开发过程中分析和设计的界限是模糊的。
分析和设计活动是一个多次反复迭代的过程。
面向对象方法学在概念和表示方法上的一致性,保证了在各项开发活动之间的平滑(无缝)过渡,领域专家和开发人员能够比较容易地跟踪整个系统开发过程,这是面向对象方法与传统方法比较起来所具有的一大优势。
1.设计准则
1.1抽象
- 通过像类抽象机制实现
- 提高可重用性
1.2信息隐藏
- 通过封装性实现
- 提高独立性

1.3弱耦合
对象间耦合:交互耦合、继承耦合
(1)交互耦合(松散)
对象间通过消息连接实现。
- 降低消息连接复杂度(减少参数个数,降低参数复杂度)
- 减少信息数
(2)继承耦合(紧密)
一般类和特殊类之间耦合。
- 有继承关系基类和派生类是系统中粒度更大模块。
1.4强内聚
- 服务内聚:只完成一个功能。
- 类内聚:一个类只有一个用途,否则分解。
- 一般特殊内聚:设计合理,是对领域知识正确抽取。
1.5可重性
- 尽量利用已有类(类库、已创建类)
- 创建新类考虑以后可重用性
2.启发规则
2.1设计结构清晰易懂
- 用词一致
- 使用已有协议
- 减少消息模式的数目
- 避免模糊的定义
2.2一般-特殊结构深度适当
约100个classes,则设计7±2层
2.3设计简单class
- 避免过多attributes
- 分配给每个类任务应简单
- objects间合作关系简单
- 避免过多methods(7个)
2.4 使用简单的协议
经验表明,通过复杂消息相互关联的对象是紧耦合的,对一个对象的修改往往导致其他对象的修改。