之前讲的都是好的设计应该具有的样子,这篇讲一些我们可能采用而且常常可以获得良好结果的工作步骤。
迭代
和代码一样,设计也需要迭代的,从高层和低层不同视角去审视问题,高层视角的大范围图景有利于把相关低层细节纳入考虑。从底层视角获得的细节也会为高层决奠定基础。
分而治之
把设计分解为不同区域。使用增量式改进。
自上而下,自下而上的设计方法
作者详细分析了两种方法的特性、使用方式、优缺点。
并说明了两种方式并不排斥,两者的协作会让设计更加受益。
设计是一个启发式(试探)的过程,这就意味着没有任何解决方案能保证万无一失。设计过程中充满了反复的试验,请多尝试设计方法,直到找到最佳一种。
建立试验性原型
有时除非更好了解一些实现细节,否则很难判断设计是否有效。这时就适合用“试验性原型”
试原性原型是指:写出用于回答特定问题、量最少且能够随时扔掉的代码
合作设计
确定要做多少设计才足够
这与团队、产品有很大关系,文中用表格列出来各个因素的影响,详细可以参看原文。
同时作者也强调不能太过专注对设计文档化,不要花太多精力去抛光润色,而应该把精力主要用于创建和探索设计方案。
记录你的设计成果
形成文档、拍照、卡片等方式。
总结
这句话把做出好的设计的原则的方法概括得很好:
请把设计看作是一个险恶的、杂乱的和启发式的过程。不要停留在你所想到的第一套方案,而是去寻求合作,
更多资源
- 作者推荐了关于以下方面的一些好书:
- 软件设计、面向对象的
- 软件设计理论的
- 设计模式的
- 广义设计的
- 关于标准的
最后是关于软件设计的核对表,上面列出来细项用于检查设计是否做到位。
并总结了软件设计的要点。