最佳子树放回去。这样,我们就完成了把数据从50个减少到46个,即45个数据和一个子树。
这个过程也可重述为提出5个数据然后设计一个满足条件的子树,再用它替代这5个数据。
这一过程包括13个循环,除了最后一个循环,每个循环包括236种设计。最后一个循环只包括2个数据,只能有一个设计方案。因此,整个过程就包括12x236个评估,也就是2832个独立的设计方案(1969)。
即使这样减少设计方案的数目,还是太多。如果审查和评估每一种可能的选择需要15分钟的话,那么按上述程序设计一个最佳的添加树需要用多长时间呢?需要用708小时。假如一个设计员要解决这个问题,他需要18周。所以,如此设计并非不可能,但是却相当的艰难和乏味。以上是一个启发式的设计的例子,设计员用经验法则来彻底的减小设计的规模,直到该设计变成易处理的问题。这种启发式的设计的基础是设计员的经验或个人天赋,也可能是某种硬性规定。
类似于民俗的硬性规定还没完。毫无疑问,你应该对民俗中的‘红色的夜空,高兴的牧羊人’之类的说法相当熟悉。一从老人们那嘴里听到这些东西,你差不多可以想到下文。设计员也是这样。擅长于设计添加树的人,在设计时会说:把5个相近的数据从添加树中提出来,用一个代表最佳子树的节点来代替他们,反复做,直到只剩下一个树。
这种硬性规定的方法存在着危险,其危险就是从业者把经验法则当作一个基本原理。问题是科技会随着而时间变化,特别是在计算机领域。因此,以前很成功的设计经验法则可能很快会变得陈旧的和不可靠。
尽管有这些困难,如果没有经验法则设计将无法进行。你很快会发现设计方法通常会用到他们,他们也会在对使用其它方法获得的最初设计进行精选时发挥重要作用。所以说设计员的技能与他选择和应用经验法则的能力有关。
1.3 设计标准
我们在第二节从一个简单的问题开始,对一个家庭到海边游玩一天的旅行进行设计安排。我们注意到,共有三种选择和一个标准—乘车花销或旅行时间,问题很简单。但是如果两个标准都重要,那设计就相当困难了。进一步讲,我们假设双亲中的决策者根据获得的费用结构、时间表等信息构造了表1.3。
为了去掉我们自己的成见,把这三种方式称为P、Q和R。评估每种方式的乘车花销或旅行时间。很明显,如果乘车花销作为唯一标准的话R是最好的选择,如果旅行时间最重要的话应该选P。想象你就是双亲之一的决策者。基于表1.3给出的信息你将做如何的选择呢?(以前我们并不在乎你的实际答案,而真正关心你的实现过程。)
如果你完成了一个选择,不管结果是P、Q或是R,尽管你可能不是很清楚,但是你一定是经过了上述过程而得出的结果。
你的问题可能是:多花2.35英镑来节省25分钟的时间时不是值得。根据你自己的回答,你就能够得出结论。
你也可能认为这是一个愚蠢的问题,因为实际上,你需要把其他的东西计算在内,例如:舒适性、便捷性以及格洛丽亚姨妈的坚持(向她以往的那样),或者是一路的秀丽风景。同时我们注意到这三个属性和旅行方式是无法确定的,所以他们与直接费用的折衷方案是不可能的。
你也可能会苦恼那些能够使定期的旅行无法进行的不确定的事件,例如工程任务、交通堵塞、人员不齐以及车抛锚。这些抱怨都相当的合理,但是,人们总是按照我们在这里讨论的方法进行选择的。多数情况下,人们是通过组合折衷和直觉的办法来选择。但是必须指出,可以通过把以上提及的所有因素综合起来形成一个功能函数来进行性选择。但是,这些太深了,我们必须返回到原来所讨论的问题上去。
1.3.1 压力和标准
迄今为止,我们还没思考过为什么在前些节中要把费用和旅行时间作为唯一的设计标准。认真考虑我们就会发现这是由于外界对决策者的压力。我们不排除内部产生的压力,但通常我们都把它看成外部产生的。见图1.4。
我们现在来看设计标准的起源。节俭的妻子坚持费用要低;不耐烦的孩子们要求旅程时间要短。毫无疑问,如果格洛丽亚姨妈(她特别喜欢在国家公园的停车场里打盹以及非常热衷于便宜货)坚持的话,几乎是无法拒绝的。所以选择应该试图令所有这些要求都得到满意的解决。或者至少任何人不会产生十分的不满。必须注意的是,处理步骤是由决策者认为这些压力的相对重要性所决定的。
压力的相关重要性的思想是以软件设计员的行为为基础的,我们再来谈谈软件设计员。
1.3.2 压力和软件设计
在研究早期的关于软件生存期的资料的时候,你需要做一个练习(练习2.2),以便在软件设计时把你对各属性的观点计算在内。在练习的答案中可以看到属性有很多个,但最重要的属性包括:经济性、可靠性、可文护性、耐用性、完整性和安全性。
前三个属性的定义相当的明显了。但是你怎样理解耐用性、完整性和安全性呢?你可以回想练习的答案,耐用性就是系统在进行大量事务处理时所表现出的性能。完整性和安全性更难定义,因为他们经常可以交替使用。我更倾向于用完整性来描述程序和数据对突发事件的抵抗能力。而安全性适用于对故意破坏的抵抗能力。我们下一个要讨论的问题是研究另一种压力情况,见图表1.5。
在开始时使用者把压力作为一个单独的实体。当然,实际上使用单位不同的部门和个人在软件运行时会有不同的既得的重要性,相应地,他们施加的压力就会有所不同。但是在前面的章节中,决策者恰恰是疲惫的父亲,所以就需要以使用者的需求得到最大满足的方法来进行设计。
设计员实在是需要一些可以从比较设计中导出的复合方法,
<< 上一页 [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] 下一页