![](https://csdnimg.cn/release/download_crawler_static/676370/bg1.jpg)
1、 设计的稳定性是软件设计的至高境界。好的设计师不会在他设计的系统投入使用后还
需要进行大的修改。
2、 软件/建筑设计的过程就象是受精卵的发育过程一样,是一个逐步分化的过程, 从整体
到局部,而不是从局部到整体。
不论多么复杂的软件系统,总有这么一个层次,在这个层次上它是非常简单的,容易
理解的。
3、 设计的本质是和谐。围棋中的“形”就是一种模式,而定式则是依据模式逐步演化的一种
动态过程的描述。而和谐的本质则是平衡。一切局部太胖、整体失调的设计总要遭遇
失败的。围棋的最高境界是和棋(考虑贴目),这是平衡的结果。
因此高超的软件设计师应当总能够从自然界、社会组织生活中获取设计灵感。在设计
的范畴中,任何事物其实都是相通的;在整个自然界,和谐无处不在。
4、 一个软件设计师,当他面对一个复杂系统的设计任务时,整个系统的轮廓能够首先清
晰地出现他的头脑之中,他能够清晰地在头脑中将整个系统运行起来。这种能力要求
他的头脑中要有一个强大的虚拟机,这个虚拟机知晓足够的细节。虚拟机其实就是设
计师的各个层次的知识和丰富的经验,如同下棋中没有经过残局和中局的拼杀无法了
解开局的奥妙一样。设计师对软件的技术是无所不知的。
5、 可维护性和可重用性并不是一回事。只有 OO 技术第一次将二者统一起来:OO 方法在
一个正确的点上切分系统;而结构化的方法则容易将可维护性和可重用性放到一个相
互对立面。
6、 设计向需求负责;设计的稳定要求需求驱动,即系统设计在宏观上应当是从上而下的。
RUP 中的用例驱动本质上就是需求驱动。从上往下的设计过程要求设计要遵循所谓的
“依赖倒转原则”,即下层要向上层负责,实现上层给出的契约,系统的设计过程就是创
建契约的过程。因此面向契约/接口的编程就是必然的结果:这样上层对下层一无所知 ;
而下层则支撑/依赖上层。