基于约束的设计:没有约束就没有设计,这个是我个人的观点。但是更准确的把握约束的本质却是设计者需要下功夫做的(之前我做过一个设计决策,和开发人员讨论,其中有一个开发人员就提出,这个设计决策会影响其中两个系统的通讯性能(几十毫秒 --> 几百毫秒),所以不能采纳。 我就问他,为什么不能采纳呢,他说因为之前的需求里面说明的。然后我就问他,变成几百毫秒之后对用户、对系统压力有什么影响呢,他说没有(这个系统调用次数比较少),后来沟通这下,把这个约束去掉了)。
基于范本的设计:我一直想找一本关于架构设计的、较为具体化的设计模式的书籍,但是没有找到,但是觉得确实我们需要这个东西。比如如果数据库的访问量很高,应该如何做设计(加缓存、数据库读写分离、分库、分表等手段该如何做选择等)。本书也不是设计范本,而是阐述了基于范本的设计师比较理智的。
软件过程对设计的影响:卓越的设计来源于卓越的人才,而不是卓越的过程。在有些情况下,卓越的过程是影响人才发挥的。 苹果公司的一句话是,我们的过程成熟度永远都是1(CMMI5级成熟度,最低级为1),但是并不妨碍我们生产出伟大的产品。 一个例子是IBM位于德国的一个实验室,有很多天才的设计师,在其他方面都很成功,唯独面对IBM一些项目则比较失败。后来发现原因是这些项目对过程要求比较苛刻,面对这些规则,这些人畏手畏脚,限制了他们的发挥。