且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

《设计原本—计算机科学巨匠Frederick P. ***s的反思》一一3.6 约束在持续变化

更新时间:2022-09-16 12:58:17

3.6 约束在持续变化
即使设计目标固定而且已知,所有的必要条件皆已枚举清楚,设计树已经刻画精确,并且有用性函数也有着明确无误的定义,设计过程仍然会是迭代的,因为约束在持续变化。 通常情况下是环境发生改变—市政厅会通过令人沮丧的规定给设计投下新的阴霾;电气规范每年都会更新;本来计划要用的芯片被供应商召回,等等。一切都在不断变化,即使在我们的设计向前推进的过程中,周围世界的改变也从未停步。 约束也会因设计过程中甚至加工过程中的新发现而发生变化—建筑工人碰到了无法凿穿的岩层,分析结果表明芯片的冷却问题成为了新近的约束,等等。 并非所有的约束变化都是增长型的。约束也经常消弭于无形。如果这种约束变化是偶发的,而不是人为的,熟练的设计师就能利用这样的新机遇,发挥其设计的灵活性,以绕过该约束。 并非所有的设计都有灵活性。更为常见的是,当我们深入一个设计过程时,就意识不到原来某个约束已经消失不见,也想不起来因该约束而之前已排除的设计备选方案了。 重要的是要在设计过程的一开始就明确地列出已知的约束,作为架构师所谓的设计任务书的组成部分。设计任务书是一个文档,需要与客户共同完成,它规定了目标、必要条件以及约束。本书的网站给出了一个设计任务书的示例。设计任务书和正式需求描述文档不是一回事,后者通常是具有合同约束力的、定义某个设计方案的可接受标准的文档。 将约束明确列出,是把丑话说在前面,这就可以避免日后突然爆发令人不快的局面。这同时也是在设计师的脑海中烙下对于这些约束的印象,从根本上提高当某一约束消失时被设计师发现的可能性。 我们都是围绕着约束来做设计的,该过程要求对于设计空间中少有人问津的犄角旮旯有着创新和探索的精神。这是设计之趣之所在,这也是大多设计之难之所在。 在设计空间之外的约束变化。然而,有时,设计的突破性进展来自于完全跳出设计空间的囚笼,从而使设计的约束得以消除。在设计厢房的时候(见第22章),我努力了很久均未果,就为了一个令人心情沮丧的靠后尺寸需求约束以及音乐室的必要条件(要放置两架三角钢琴、一架管风琴以及一个正方形的空间以容纳弦乐八重奏乐队,加上一英尺宽的教学之用的余地)。如图3-1所示,这是设计过程的一次迭代及其约束。 图3-1 依约束进行的设计 这个设计过程中遇到的棘手问题最终是在设计空间之外得到了彻底解决—我从邻居处买下了另外五英尺的地皮。这可能比向市政厅申请靠后尺寸变更(一种设计空间之外的解决途径)来得更经济,并且肯定效率更高。它同时给设计方案的其他部分带来了解放,对于F书房的西北角的定位贡献尤其明显(见图3-2)。 图3-2 约束被放松了 将设计任务书中的已知约束明确列出的好处,在此处也有体现。设计师们可以定期地检视这个清单,自问:“现在有些东西已经变化了,这个约束能够去掉吗?能不能通过在设计空间之外想出办法来规避它呢?”