且构网

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

《设计原本—计算机科学巨匠Frederick P. ***s的反思》一一2.1 模型概览

更新时间:2022-09-16 12:57:35

2.1 模型概览
工程师们对于设计过程似乎有一个清晰但通常来说也是隐含的模型。这是一个关于有序过程的有序模型,也就是工程师的构思过程。我可以举一个海滨小屋设计(在第21章给出其草图)的例子来说明这是怎么回事。 目标。首先从主要目标或目的开始:“某人想要建一个海滨小屋,以欣赏面向大海的一块海滨场地的风景。” 必要条件。和主要目标相关的是一组必要条件或者说是次要目的:“海滨小屋应该加固,以抵御飓风来袭;它应该具备至少14个人躺卧和就座的空间;它应该为宾客提供令人难忘的视野”,等等。 效用函数。人们会根据一些效用(或有用性)函数来为若干必要条件依其重要性加权,以对设计进行优化。到目前为止,我知道的情况是,在大多数设计师的想象中,所有的项是由线性相加的方式组合起来的,但在单独构思每一个效用函数时,则并非使用线性方式,而是以渐近曲线的方式趋于饱和。举个例子,必要条件之一是更大面积的窗户,这是在小屋设计中所需要考虑的问题。但是由每平方英尺窗户面积的额外增加所带来的效用是递减的。就电源插座的数量来说,这也一样成立。窗户面积以及插座数量的总效用,看起来却仅仅是每个项的简单之和。 约束。每种设计以及每种优化都是受到一些约束限制的。其中有一些约束是二元的,只有满足或不满足的结果―“这所小屋必须位于海滨场地的边界线并再向后退至少10英尺”。其他约束则更有弹性,不过在接近限额时所付出的代价会急剧增加,例如日程表就是这样一类约束―主人可能急切地要求该海滨小屋在温暖气候来临之前完工。有些约束是简单的,例如退后尺寸的限额,而另一些约束则在不经意间隐藏着令人生畏的复杂性―“该小屋必须满足所有的建筑法规”。 资源分配、预算和关键预算。许多约束的形式是固定资源在各个设计要素之间的分配。最常见的是一揽子成本的预算。但是,此类约束绝不仅仅只有这么一种,而且在特定的项目中,总预算约束也并不一定就是最大限度地决定了设计师注意力的约束。例如,在海滨小屋的楼层规划中,占支配地位的定量因素是临海建筑距离的英尺数(甚至要精确到英寸)。在计算机体系结构的设计中,关键预算可能是控制寄存器或指令格式所占用的比特数,或总内存带宽的用量。而当人们解决软件的“千年虫”问题时,日程表上的工作天数成为了可分配资源中的关键项。 设计树。这么一来,按照理性模型的思路,设计师们形成设计决策。然后,在由于该决策而缩减后的设计空间中,他又形成另一决策。1 在每一个节点处,他都可以选取一条或多条路径,因此设计的过程可以认为是一种对于以树型结构组织的设计空间的系统化探索。 在这样一个模型中,设计在概念上(至少在概念上)是个简单的过程。人们对以树型结构组织的设计空间进行搜索,以可行性约束为依据对每种方案进行检验,从而优化效用函数。搜索算法是众所周知的,并且可以清晰地描述。 这种清晰性仅仅是指对所有路径进行的穷举搜索,寻找一个真正的最优解。设计师们通常只去寻找一个“足够好”的满足解。2 许多工程师似乎采用了某种深度优先搜索策略进行近似估算,并在每个节点上选择最有前途或最有吸引力的方案,并采用探索到底的办法来达成目的。如果遇到死胡同,他们会采用回溯的办法并尝试另一条路径。预感、经验、连贯性和审美观引导着每一次的方案选择。3