设计是什么?
KEY: 设计理论 软件设计 方法论 约束
Preface
Design is vital to software development. For many reasons, software design is difficult. Teaching and learning software design is even more difficult. A great number of textbooks on software design have been written. Most of them are devoted to one specific software design method, such as object-oriented software development. However, few have addressed software design at a higher level of abstraction such as at the methodology level, which is what this textbook about.
“设计”对软件开发是很重要的,但软件设计本身是很困难的活,学习和讲授软件设计则更难。市面上有很多有关软件设计的图书,但是它们一般都讲授一种特殊的软件设计方法,比如面向对象方法,对“设计”的讲授没有一个一般的论述,比如在方法论(methodology )层面的论述,本书试图弥补这方面的乏缺。
In my personal experiences of teaching software design in advanced undergraduate courses as well as supervising student dissertation(论文; 论述; 专题) projects, I have found that students often have some misconceptions about software design. One of the common misunderstanding of software design is that there is only one correct solution to any given design problem. Many textbooks on software design have case studies and examples, but very few give several alternative solutions to one design problem. A related common misconception of software design methods is that properly applying a well-established design method will always results in the correct solution to a design problem. Therefore, many students jump to the implementation stage of their dissertation projects once a design is completed without carefully analysing and evaluating their designs, even fewer thought of making alternative designs and then compare them. Few textbooks on software design cover the topic of how to analyse a design and how to compare alternative software designs. Such misconceptions of software design methods can be corrected by learning software design methodology. Theories of software architecture, especially software architectural styles and analysis and evaluation of architectural designs, are at the right level of abstraction and especially helpful to correct students' misconceptions.
在我过去的教学生涯里,我陆续发现有不少同学对“软件设计”具有错误的见解。一个常见的误解就是,以为任何一个设计问题只有一个正确的解决方案……而另一个误解则以为设计方法是万能药,只要跟设计方法走就能得到预定的理想方案。所以很多同学在完设计后就立即进入实现阶段,对设计方案不加分析和评估,也没想过会有可选的设计方案。存在这些误解的一个原因是,市面上的图书很少讲解如何对设计方案进行分析评估和如何比较两个可选方案。消除对软件设计误解的唯一方法就是学习软件设计方法论。软件体系结构(architecture)理论,特别是软件体系结构风格 和体系设计评估 方面的理论,对消除对软件设计误解最见效。
Basic Concepts of Design
Design methodology emerged in the 1960s as an independent scientific discipline.
This chapter looks to the theory of design methodology as a source of inspiration to understand the basic concept of design in the most general context. The objectives of the chapter are:
- * To understand the basic characteristics of design processes;
- * To understand the elements of designs;
- * To understand the factors that affect design processes and outcomes.
设计方法论于上世纪六十年代成为了一支独立的学科。本章试图讲明白“设计”的最一般的定义,目标有三:
- * 理解设计过程的基本性质
- * 理解设计的组成元素
- * 理解影响设计过程的约束和设计过程的输出
INTRODUCTION
可从两个侧面来理解设计的概念。第一,设计是用于生产人工产品的方案(plan),是个名词。这个方案必须实现一个规定的(prescribed)目标和满足一定的约束的。第二,设计是拟定上述方案的过程(这个过程具有创造性),是个动词。在设计过程中,设计师必须使用相关的科学原理、技术信息和想像力去发掘约束,并且试图解决设计问题。
Design from WIKI
Design, usually considered in the context of the applied arts, engineering, architecture, and other such creative endeavors努力; 尽力 , is used both as a noun and a verb. As a verb, "to design" refers to the process of originating and developing a plan for a product, structure, system, or component. As a noun, "a design" is used for both the final (solution) plan (e.g. proposal, drawing, model, description) or the result of implementing that plan (e.g. object produced, result of the process). More recently, processes (in general) have also been treated as products of design, giving new meaning to the term "process design".
设计的概念常常出现一些具有创造性的工作语境里,比如应用艺术、工程、建筑。设计可以是名词也可以是动词。作为动词,是去设计的意思,也就是创作(originating)和开发一份计划(plan)的过程,这份计划用于生产产品、结构、系统和零件等。作为名词,指计划(最终方案)本身的静态概念或实现这份计划的结果(产品)。最近,一般概念的“过程”也成为设计的产品,名之“过程设计”。由此可见,设计的产品既可以是静态的产品,比如一套操作系统软件;也可以是带有动态的指导性质的产品,如开发操作系统的过程指导。
As Christopher Jones pointed out in the book Design Methods: Seeds of Human Futures [ 1 ], design methodologists have been moving away from 'drawings and patterns' in the notion of design, although it is perhaps still a common action of designers of all kinds. The literature on design methods began to appear in the 1950s and 60s. Since then, design methodology has become an independent discipline of scientific study. The Design Research Society 1 publishes
a quarterly journal Design Studies in London by Elsevier Science, which provides an insight into design issues affecting a wide range of fields of applications for design techniques. Researchers in the general theory of design have tried to answer two interrelated fundamental questions about design.
The first question is:
What are the essential characteristics of design?
This question relates to understanding when an activity is designing and when it is not.
The second question is:
What processes are used by designers?
It can be asked in a number of different ways with emphasis on various aspects of design processes. For example,
- * Is one process better than another, constituting制定 'right' and 'wrong' ways to design?
- * Why are some processes favorable赞许的; 有利的 over others?
- * Do different processes lead to different qualities of results?
随着工业的发展,“设计”的概念从狭义延伸到广义的需要。上世纪五六十年代,开始有人研究设计的概念。当时英国出版了研究“设计”的杂志,发表相关文章对“设计”提出了深刻的论述,并对设计技术应用于各种领域产生了广泛的影响。研究者对设计理论提出了两个本质的问题:
第一,设计的基本(essential)性质是什么?
这个问题其实就是问题设计的本质是什么,什么样的活动是设计活动,什么样的活动不算是设计活动。
第二,设计师的设计过程是怎样的?
这个问题太大,必须再对设计过程的各个侧面进行提问:
- 第一,设计过程有好坏、对错之分吗?
- 第二,为什么一些设计过程优于另一些设计过程?
- 第三,不同的设计过程会产生不同质量的结果吗?
The last few decades have seen a significant amount of research devoted to developing design theories with the ultimate aims at clarifying the human ability of designing in a scientific way, and at the same time, producing the practical knowledge about design methodology. Such knowledge is believed to be useful and essential to construct computer aided design systems.
近二三十年来,设计理论的研究进入实用阶段,大量研究的研究目标是厘清人的科学设计的能力 (也就是技术化人的设计能力);同时总结设计方法论的实践知识,这些知识被认为有助于开发计算机辅助设计系统。
设计的动态性质
1.2 CHARACTERISTICS OF DESIGN ACTIVITIES
Let's first have a look at how design theory characterises design activities in the most general sense.
我们看看设计理论对设计活动的最一般的描述。
1.2.1 The input and start point of designs
Many design researchers believe in the aphorism 'necessity is the mother of invention'. It is considered as one of the basic characteristics of design that design can only be undertaken intentionally. Lawson [3] and Dasgupta [4] pointed out that a real or perceived(察觉; 意识到;) need forms the basis for the definition of design projects. A need acts as the initial motivational force that provides the basis for starting design work. Willem [5, 6] explicitly expressed that the universal feature of design is simply the intentional devising(图谋; 发明) of a plan or prototype for something new. The need or intention(意图, 目的) forms the first basic elements of all designs, i.e. the problem to be solved. In software design, the need or intention is usually explicitly or implicitly specified as users' requirements. Without users' requirements, there will be no software design.
设计过程的起点和输入
很多“设计”的研究者都认同那句谚语——“需求是发明的母亲”。设计的目标是设计的一项基本属性。专家指出,一项真实可意识到的需求(描述)是设计项目的基本定义内容之一。需求也是诱发设计活动的初始动力源。需求和目的是一切设计活动都具有的基本内容,比如解题活动(KEMIN:解题和设计哪个更一般?)。在软件设计里,需求和目的常常被有意无意指出是用户的需求,没有用户需求就没有软件设计的必要。
1.2.2 The outcome and results of designs
Many designers believe that the output or product of a design is a symbolic representation of an artefact for implementation. For example, Booker (1964) regards design as simulating what we want to make (or do) before we make (or do) it as many times as may be necessary to feel confident in the final result. Dasgupta [4] expressed that design is essentially 'the formation of a prescription(处方, 指示, 命令) or model for an unfinished work in advance of its embodiment(体现; 化身; 具体化)'. Design representation serves as the basis to conceptualise and compare various design decisions. This is very true in software design. Computer scientists and software engineers learned this lesson mostly from practical experiences that neglected(忽视, 漏做, 疏忽) design stage can only cause problems at later stages of implementation and so on.
设计过程的终点和输出
很多设计者认为,设计的输出或产品是用于指示实现(implementation)人工品的符号表述(representation)(KEMIN:很有意思,这里有两个产品,一个是设计过程的产出A,A是用来指示生产过程的产出的B,A是模型,B是最终的产品,不能搞混)。比如,Booker把设计看作是对最终产品的模拟,这个模拟被坚信是可行的。Dasgupta 则表示设计根本就是制造的处方或未完工作的抽象模型。设计作为对最终产品的抽象表述,给改进优化最终品提供了基础和低成本的手段,因为设计是概念性的,很多设计决策可以设计上进行比较选择。这一点在软件设计里被证明是真理。计算机科学家和软件工程师在实践中吸取很多这方面的教训,他们认识到对设计阶段的忽视换来的是后续工作问题百出。
However, the true output of design is more than just a plan or symbolic representation. MacLean et al. [7] pointed out that, the final output of a design also include what they call 'design space', which is a body of knowledge about the artefact, its environment, its intended use, and the decisions that went into creating the design. Designers must consider the representations of this kind of meta-knowledge about how they arrived at a particular design. Recently such meta-knowledge about software designs has been collected and studied systematically.
Two forms of systematic studies of such knowledge emerged in the literature of software design. One is about software architecture and the other is design patterns of object oriented systems. These types of knowledge form the main contents of this book.
实际上,设计的输出并不仅仅是一份计划或符号表述。 MacLean指出,设计的输出包括了一个他们称为“设计空间”的东西。设计空间指的是产品的主体知识、产品周边环境、产品的用途和产品设计过程中的决策(decisions)总和。设计者必须在拿一份设计任务时,先对这些设计的元知识(meta-knowledge)进行了解。近些年来,有关软件设计的元知识已经有相当的系统化研究,比如软件体系结构研究和面向对象系统的设计模式研究。
1.2.3 Transformation of data
A basic feature of design that almost all design researchers accept implicitly or explicitly is the transformational nature of design. For example, Dasgupta [4] noted that need acts as a seed that design transforms into a form that is eventually used to guide the implementation of an artefact, plan or process. Simon [8] wrote that design is the restructuring of a current situation to achieve some preferred situation. Willem [5, 6] preferred to use the term 'development' to describe the transformation that occurs during design. Page [ 9 ] regarded design as an 'imaginative jump from present facts to future possibilities'.
设计过程中数据的变换
设计的第三个基本性质是对设计数据的变换。设计作为动词指的是一步一步的过程的概念,每向前一步必然是一个变换的过程。Dasgupta 指出需求正是这种变换的诱因和归宿。Simon 则表示设计就是从当前状态到更优状态的变换与重组。Willem则更喜欢用开发(development)这个词描述这种变换。Page把设计看作是一种想像的跳跃,从现实(present facts)到可能的未来的跳跃。
1.2.4 Generation of new ideas
The requisite of the generation of new ideas during design processes is another commonly cited(引用; 提名表扬; 引证 ) characteristic of design. Reswick defined design as a creative activity- it involves bringing in something new and useful that has not existed previously. However, creativity remains an elusive(难懂的, 难捉摸的) subject of design researches and still beyond science's firm grasp(抓住, 领会, 紧握). The precise manner in which new ideas are generated still cannot be codified(编成法典; 使法律成文化). Some researchers, such as Freeman [10], have postulated that idea generation is not entirely a haphazard(偶然的; 随便的) activity. He believed that two styles of idea generation exist: abstraction and elaboration(精心制作; 精心之作). Abstraction is used to make generalisations while elaboration attempts to develop into great detail the specifics of a design. In fact, these two styles of idea generation play a significant role in software design methodology.
设计过程中新思想的诞生
设计的第四个常见特征是在设计过程中必须有新思想的产生,也就是设计具有创造性。Reswick把设计定义成是一种具有创造性的活动,也就是活动过程会产生一些过去不存在的新的东西。不过,创造性到目前为止仍然是一件难以捉摸的东西,科学界还未能掌握创造性技术。具体一点说,具体什么样的操作方法能产生新思想,还不能技术化。一些研究者,像Freeman指出,虽然创造性不可技术化,但也不全然是一件偶然的事件。他认为存在两种创造的手法:抽象(abstraction)和精制(elaboration)。(KEMIN:有点像认识论里知识和真理的产生原理。请参考康德的“先天综合判断”)
1.2.5 Problem solving and decision making
Design methodologists tend to characterise design as a type of problem solving or decision making activity. For example, Asimow defined design as decision making, in the face of uncertainty, with high penalties(刑罚, 报应) for error. For many scientists and engineers, design invariably involves the application of some sort of logical analysis on the problem. Others, including Willem, believe that various design problem solutions are not necessarily connected through logic to their initial problem state. Design problems are often described as 'ill-structured' problems because of their complexity and the difficulties in determining their associated constraints and requirements. Freeman [10] preferred to use a decision-making analogy to view design problem solving. He characterised design as a series of decisions between various design alternatives. Each alternative is determined by the current state of abstractions, elaborations, operational statements and other known and unknown factors. Both design-as-problem-solving and design-as- decision-making views characterise design as goal directed activity and design process as navigation in a design configuration space.
设计是种解题和决策过程
设计理论研究者认为,设计是一种解题活动或决策活动。比如,Asimow把设计定义为,面对不确定和流变情况时作出决策。很多科学家和工程则发现,他们在设计时会对问题进行各种逻辑分析,是种解题活动。也有一些研究者认为,很多设计问题不是解题活动,不需要对问题进行逻辑分析。由于设计问题一般很复杂,所以很难对设计问题进行清晰的描述,很难厘清设计的约束(constraints)和设计的具体需求。Freeman则喜欢把设计比喻成决策,而不是解题。他说,设计过程就是一系列从多个可选项(alternatives)作出选择的过程。设计可选项的内容取决于当前抽象形态(state of abstractions)、精细程度(elaborations)、操作语句(operational statements)和其它已知和未知的事实(factors)(KEMIN:这句最值得琢磨,请看原文)。无论是解题还是决策都把设计看成是一项有目标导向的活动,把设计过程看作是一种在设计构形空间(design configuration space)中的导航过程。
1.2.6 Satisfying and discovering constraints
An initial need not only determines the problem to be solved, but also imposes the most basic constraints on the solution. In general, more constraints are often discovered during the design work itself. Many researchers agree that a major part of designing involves discovery and satisfaction of constraints on the eventual form of the design. Such constraints apply both to the designed artefacts and to the processes and participants involved in the design activity. For example, Mostow [11 ] regarded design as an activity with the goal of creating an artefact description
that satisfies constraints derived(得自; 起源) from functional and performance specifications of the artefact, limitations of the medium and process by which the artefact is rendered or produced, and aesthetic(美学的; 艺术的; 美的;) criteria on the form of the artefact. For Alexander [12], design is 'finding the fight physical components of a physical structure'. In the context of architectural design, Lawson [3] presents design problems as the assembling of constraints.
设计是满足和发现约束的过程
设计的输入不仅决定了有待解决的问题,也蕴涵着大部分对解决方案的约束。很多时候,更多约束会在设计过程中被发掘出来。大部分的研究者同意设计的主要工作内容是在发掘并试图满足这些约束,最后得到一个预期的结果。这些约束有对最终产品的,也有对设计步骤和设计材料的。比如,Mostow 认为设计是种有目的的活动,目的是根据一定的约束去创造一个产品描述。约束来自多个方面的,有来自外部逻辑需求的(如功能和性能),也有来自内部物理限制的(如材料的特性)。
1.2.7 Evolution and optimisation in a solution space of diversity
As consequences of the complexity of design problems, diversity presents in almost all design solutions. Diversity often leads to uncertainty, because the knowledge that there are many other solutions to the same design problem causes designers to question the optimality of their initial solution. Thus, they test, evaluate and modify their design. Designers compensate(补偿, 赔偿) for weaknesses exposed during testing and evaluation. They redesign as necessary until they are satisfied with their design. Therefore, design processes often demonstrate an evolution process. The evolution of a design is often closely related to the consolidation巩固, 强化 of the constraints and requirements applied in a particular design situation. Design requirements are often imprecise and incomplete. The consequences of a design decision often cannot be forecast预想; 预报 with complete accuracy准确; 精确性. Hence, design solutions evolve in tandem with known problem constraints and requirements. Eventually, a successful design process includes a convergence集中, 一起; of requirements, constraints, and knowledge about the design and its effects on the implementation environment.
设计是优化和革新的过程
设计的每一步都存在多个可选项,所以各步正交出来的最终方案必然存在多样性,这也是设计、解题等活动的复杂性甚至不可解性的根源。多样性的另一个结果是设计方案的不确定性,设计师必须对设计方案进行测试、评估和修改,从而选出最优方案。还有,一开始,设计的需求通常都是不精确不完整的,完成当前一步的设计工作后会发生什么(比如产生新的需求或新的约束)也是很难精确预测的。设计过程就是一个根据新需求和新约束双重动力的推动下,对原方案不断进行革新的过程。
设计的静态性质
1.3 ESSENTIAL ELEMENTS OF DESIGNS
Having studied the characteristics of design processes, now let's examine the plan facet of design and identify the basic elements of designs.
研究完设计过程的动态性质,我们接着切开设计过程,从一个横切面认识一下设计的静态组成。
1.3.1 Statement of design problem and objectives
The objective of a design is the problem to be solved and the goal to achieve. Design problems are often described as ill-structured [14] or 'wicked' [15] in contrast to well-structured or well defined problems such as chess-playing国际象棋 or crossword puzzles纵横字谜游戏. Well defined problems have a clear goal, often one correct answer, and specific rules or known ways of proceeding that will generate an answer. The characteristics of ill-structured or wicked problems can be summarised as follows.
设计问题和设计目的的表达
设计的目的是待解决的问题和待完成的目标。设计问题常常以非形式和非结构化的形式表述,而不像国际象棋或纵横字谜游戏那样是结构清晰或定义良好的问题。定义良好的问题有一个清晰的目标、一个正确的答案和产生答案的操作规则。
(a) No definitive formulation of the problem.
没有清晰明确的问题形式
When a design problem is initially set, the goals are usually vague含糊的 and many constraints and criteria are unknown. The context of the problem is often complex and poorly understood. Understanding a design problem is bound up with the ideas that we may have about solving it. This may lead to certain temporal formulations of the problem. However, as often occurs in all design processes, temporal formulations of design problems are unstable and can change as more information becomes available.
在设计问题被刚确立的时候,设计目标通常都是很含糊的,很多设计约束设计准据(criteria)是未知的。问题的上下文通常也是复杂和被缺乏理解的(KEMIN:问题的形式是约束、准据和上下文的综合?)。解决的办法是建立一些过度性的问题形式,再逐步精化它,以达到清晰把握原设计问题。
Moreover, problem formulations are commonly inconsistent. Many conflicts and inconsistency must be resolved in the solution.
(b) No definitive solution to the problem.
没有清晰明确的问题答案
Solutions to a design problem are often not true or false, but good or bad. Different solutions can be equally valid responses to the initial problem. There is often no objective criterion for the evaluation of a solution. However, solutions are assessed as good or bad, appropriate or inappropriate. Moreover, there is often no best solution. Essentially, this implies that there is a lack of any criteria that can be used as a 'stopping role' to establish when the solution to a problem has been found such that any further work will not be able to improve upon it.
设计问题的答案通常不是对或错,而是好或坏。两个不同的答案对原设计问题可能都是合法的“正确的”。因为设计问题不像数学问题,它没有一个严格的评判设计答案的的标准或准据(criteria)。只有对设计答案的好与坏,合适与不合适的评估。设计答案也没有最终的最完美的,也就是说我们没有一个依据,在当我们为设计问题找到一个答案的时候评判设计已经终结,设计的优化是没完没了的。
(c) No definitive way of solving the problem.
There are no proven methods and rules that can definitely generate a solution to a design problem. Even a fairly precise problem statement gives no indication what a solution must be. Yet, solutions and problems influence each other in a 'wicked' way. A wicked problem can often be considered to be a symptom症状, 征兆 of another problem. Resolving a discrepancy矛盾; 差异 or inconsistency in a design may pose another problem in its turn. The formulation of a problem often depends on the way of solving it. Many assumptions about the problem and specific areas of uncertainty can be exposed only by proposing计划, 建议 solution concepts. Many constraints and criteria emerge as a result of evaluating solution proposals. Sub-solutions of the design problem can be found to be inter-connected with each other in ways that form a pemicious circular structure to the problem. For example, a sub-solution that resolves a particular sub-problem may create irreconcilable conflict with other sub-problems.
没有特定的确定的解题方法
The ill-structured and wicked problem of design is the main reason why design is difficult. In Chapter 3, we will have a closer look at the particular reasons why software design is difficult.
1.3.2 Constraints
The objectives of a design often have to be achieved within certain constraints.
These constraints define the solution space of the design problem. For the electric light problem, the most significant constraints are that the power must be electricity and it must be able to provide light continuously for a practically acceptable length of time.
Some constraints are discovered and/or introduced by the designer during the course of design. In general, constraints can be classified along the following three dimensions according to Lawson [3].
约束
设计或解题是在一个约束的环境下进行的,约束分内部和外部,内部约束是设计演绎的基本和根据,外部约束是设计演绎的导向。内外约束共同构成了一个特定的设计和解题空间。比如电灯设计,它的内部约束是必须使用电作为能量源;外部约束是灯光必须能持续一段可接受的时间。
约束具体分类如下:
(a) The generator of the constraint.
Constraints can be generated by the eventual users of the artefact, by the designers themselves, by legislators 立法者, 立法委员(e.g. safety related constraints), and by the design clients (i.e. the people who have commissioned受委任的 or sponsored主办的; 发起的 the design and who may or may not be eventual users of the artefact).
约束的生产者(generator)
设计约束可以来自系统的最终用户、设计师本身和系统相关的人员……
(b) The domain of the constraint.
According to Lawson, constraints fall into two domains, external and internal. External constraints are imposed by the factors not under the designer's control, while internal constraints give the designer at least some ability to control them.
约束的作用域
Lawson说,约束有两类作用域——外部和内部的。外部约束指的是设计师无法控制的因素;而内部约束至少给设计师一定的控制
(c) The function of the constraint.
Lawson's third dimension, constraint function, relates to the rationales基本原理 behind the imposition强迫接受 of each of the constraints. Constraints can exist for reasons relating to symbolism象征主义 and social norms基准, 标准, formal intentions of the designer, practical implications brought by the implementation technologies, and 'radical' reasons that deal with the primary purpose of the artefact.
约束的功能
Lawson对约束分类的第三个侧面是约束功能,约束之所以存在背后的基本原理(rationales)和逻辑根据。设计约束的原因可以是象征主义和社会规范、可以是设计师的形式意图,也可以是实现技术的隐性局限等。