对复杂度的控制是设计工作的本质。不管设计的对象是一件简单的家具还是一艘复杂的航空母舰,设计的过程处处体现了对复杂度的控制。设计的目的是为了实现特定功能的系统,而设计的结果为开发这样的一个系统提供了一份蓝图。有了这份蓝图,系统的建造者便可以理解设计师的意图,并按照设计的要求完成建造的工作。在完成这份蓝图的过程中,设计师需要运用自己的知识和经验、合适的行业标准或规范,以及各种设计工具和方法,将设计的意图准确地表达给设计蓝图的使用者。这个过程,同时也是将设计师大脑中的设计概念符号化和可视化的过程。
为了清晰正确地描述设计的内容,设计师会有意或无意地对复杂度进行控制。举个简单的例子,假如一名家具设计师需要一名木匠按照他的要求制作一张椅子,设计师可以有两种做法。一种是口头向木匠交待他心目中的椅子是什么样的,有哪些特点和要求。在这种情况下,木匠需要认真倾听设计师的描述,也许需要记录下来。但这种做法很难保证木匠真正理解设计师的意图,也许木匠心目中的椅子与设计师心目中的椅子并不是一个样子的,等到椅子制作完成并交付给设计师的时候,也许会有一番争论。另一种做法是设计师描绘设计图纸,并在图纸中对各个部位的尺寸、角度等进行明确的描述,木匠根据图纸的要求和规定进行椅子的制作,木匠不再需要费力去理解设计师的意图,也不需要太过于担心双方对椅子的设计的理解有太大的区别,交付的时候双方可以根据图纸的内容来验收,避免推诿不清。第二种办法通常要比第一种情况更为妥当,设计和制作双方的沟通也更好。
这样的一个例子,是否会让有过软件开发经验,特别是需求分析经验的读者,想起与客户进行沟通和确定需求的情景呢?虽然家具制作与软件开发是完全不同的两个领域,但是在需求分析这项工作上,即便形式各异,本质上却没有太大的不同。明确设计需求本身既是设计工作的重要内容,也是对复杂度进行控制的结果。一个明确的设计意味着制作者需要以及不需要考虑的内容都已经确定。设计的过程是对问题空间(problem space)进行搜索的过程。解决问题的每一次努力都开始于创建该问题的一个问题空间,以便在其中寻得解决的方案。设计的结果代表着搜索到其中一个可以接受的结果。这个搜索的过程是设计者自觉将设计的自由度逐渐缩小的过程。回到上述的例子,当设计蓝图交给木匠的时候,自由度已经被限定了,但并非为零。也就是说,设计蓝图只告诉木匠制作好的椅子是什么样子的,而并未告诉(或者并不需要告诉)木匠其他的内容,比如制作的过程,即先制作什么部件、后制作什么部件等信息。制作的过程也许并不属于家具设计师的专长,而对于木匠来说,某一款椅子的制作过程是他对这项工作过程的设计结果(在制造业中,人们将其称为工艺设计)。这就如同我们之前讨论的业务流程设计一样,椅子的制作过程也是一个流程,自然也是人为设计的结果。而提供这张蓝图的好处在于,木匠可以专心去设计制作的流程,而不需要去考虑椅子的成品是什么样子这些内容了。
我们继续把这个例子扩展一下。如果设计师只给出一张椅子的完整示意图,即便标上了一些重要部位的尺寸和角度等信息,仍有一些看不见的部分是没有进行定义的。比如,椅子的不同部分之间的接口在外观上是看不见的。在这种情况下,木匠还需要考虑接合的方式是什么,是榫接、胶接还是钉接等。当接合方式确定之后,还要考虑接口如何制作,比如开口开多大,或者钉子用什么尺寸的等问题。木匠需要在开工之前先将这些问题想好,因为这涉及具体一个部件应做成什么样子——两个接合的部件必须适配才能够使用。可以说,在这样的情况下,木匠其实负担了一部分设计工作,当然,此时设计的问题空间要小很多。如果设计师的蓝图可以更详细一些,不但给出椅子的整体效果图,同时还给出各个部分的单独的制作图,进一步规定一些问题,包括接口如何实现、在哪里开口、开口尺寸等均做好说明,那么木匠的工作将更加简单。这个时候,木匠不再需要考虑接口的问题,对于他来说,拿到设计蓝图就可以直接开工了,而不需要自己再额外考虑一些设计的细节问题。木匠直接按照蓝图上的要求将每个部件单独制作完成之后,如果设计没有问题,那么应该可以装配成一张能正常使用的椅子。换个角度来看,设计师通过对椅子结构的分解和对每个组成部件的说明,对制作该椅子的复杂度进行了分解和控制。
在上面提到的设计师提供椅子部件之间的接合设计的例子当中,该家具设计师需要拥有木制品接合方式的知识和经验,才可以制作出包含接合设计的蓝图。如果该设计师还具有更进一步的知识和经验,通晓油漆的使用以及木料上漆的加工过程,他还能进一步地将设计细化,比如对油漆的选择(类型和色号等)、刷漆的厚度和表面处理等方面做出进一步的要求和规定。如果上一段的例子是设计师通过提供各个部件的单独的设计图,在椅子的结构上对复杂度进行分解和控制的话,那么这里讲述的对油漆使用的说明则是对椅子制作过程的复杂度进行控制的例子。
这里需要指出的是,控制复杂度和限制设计的自由是相对而言的两个概念,这意味着对复杂度的控制会导致设计的自由度减少,反之亦然。当设计师的设计内容描述得越详细和确切,木匠可以发挥的空间就越少,木匠根据该设计所制作的多份产品之间的相似度就越高。(www.daowen.com)
此外,对复杂度的控制并不完全是设计者为了方便设计的使用者而采取的行动。从另外一个角度来看,设计者为了完成自己的设计工作也需要自觉地对复杂度进行控制。这里有两点理由。首先,家具设计师并不见得一定是木工或者油漆专家,因此在一些问题上,比如对木料的选择或者木材加工前的预处理,以及上漆的过程和手法等他也许并不了解;即便也许知道一些相应的知识,也未必有木匠了解得深入。家具设计师应当关注设计产品的整体美观度和功能性,而不是制作的工艺过程。如果过分地干涉工艺设计,也许并不能达到最好的工艺效果。当然,如果这会影响到最终产品的质量或者美观等因素,设计师可以对选材和工艺等做一些规范和要求,但通常仅在必要和关键的步骤上,而不是全部的工艺过程。其次,一份描述椅子整体以及各个部件的蓝图也许就几页图纸,但是如果将所有加工过程的要求、规范和步骤都添加进去,那么这份蓝图也许看起来会像一本家具设计和加工的教科书一样厚。那么在这种情况下,设计师是否能如期完成他的设计工作,木匠是否能完全按照要求一步不差地制作椅子,最终交付产品的时候,设计师和木匠是否能检查得出椅子的制作过程有没有按照设计的要求去完成?
我们在这个例子的讨论当中,一直对复杂度使用“控制”这个动词,而不是“减少”。复杂度是一个系统本身固有的特性。换而言之,只要给定某个系统,其本身就具有一定的复杂度,除非明显地改变该系统的功能与行为,否则我们无法真正“减少”系统的复杂度。在上述例子当中,椅子的功能需求是给定的,那么设计师必须围绕这些需求进行设计方案的构建。也许设计师可以进行一定程度的简化工作,但是大体上系统的复杂度在所要实现的功能、组成部件的数量以及它们之间关系的影响下已经基本确定。系统的复杂度主要反映的不是设计师的设计水平问题,而是系统本身的构成情况和系统体现的整体功能。这时候,设计师的工作并没有减少复杂度,而是通过一些手段将复杂度分解并控制起来。单独为每个部件提供详细的设计图就是其中一种手段,而将复杂的工艺过程交给木匠,设计师自己专注于椅子结构的设计也是其中一种手段。这些手段都体现了控制系统复杂度的思想。
以上这两种方法反映出一个现象,即一个系统拥有两种相互共存的复杂度:结构复杂度[3]和过程复杂度[4]。结构复杂度关注系统在某个状态下的各组成部分及它们之间的关系,并讨论特定的结构关系所体现出的系统特性。过程的复杂度则关注系统动态变化过程中的链式关系,即每个过程都有超过一种可能的最终结果,并讨论单一的初始事件引起的错综复杂的变化所存在的模式。西蒙将对这两种复杂度的表达和控制称为“状态描述”和“过程描述”[5]。
在本章接下来的两个小节里,我们将针对这两种复杂度和在业务流程设计中控制它们的方法分别进行讨论。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。