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