设计中的挑战
- 设计是一个风险极大的问题
- 设计是一个了无章法的过程
- 设计就是确定取舍和调整顺序的过程
- 设计收到诸多限制
- 设计是不确定的
- 设计是一个启发式过程
- 设计是自然而然形成的
关键的设计概念
- 软件的首要技术使命:管理复杂度
Accidental and Essential Difficulties
管理复杂度的重要性
如何应对复杂度
高代价、低效率的设计源于下面这三种根源
- 用复杂的方法解决简单问题
- 用简单但错误的方法解决复杂的问题
- 用不恰当的复杂方法解决复杂的问题
偶然的难题和本质的难题
理想的设计特征
最小复杂度
易于维护
松散耦合
可扩展性
可重用性
高扇入
低扇出
可移植性
精简性
层次性
标准技术