摘要
这本书的目的在于督促设计师和项目经理们去努力思考设计活动的过程,特别是复杂系统的设计过程。Brooks 以其在计算机体系结构、软件、房屋、图书、组织这五个设计领域的实践经验,总结出了一系列关于设计的经验,并举出了相关例子。
第一部分 设计模型
第1章 设计的疑问
设计是否是共通的?答案是肯定的。
创作过程分为三个不同的阶段:
- 构思。将概念结构定型。
- 实现。在实际的领域中加以实现。
- 交互。在实际的应用中与用户交互。
这三个阶段是交替进行的。
第2章 理性模型
理性模型的基本方法是对设计树的深度优先搜索,这一模型过于简化了,甚至受到提出者的批评。
第3章 理性模型的缺陷
有时候,问题就在于发现问题出在哪里。设计中最困难的部分在于决定要设计什么。
需求无法一开始就完全确定,通过一边设计一边探索。设计树上的节点实际上不是设计方案,而是暂定设计方案。通过对设计树的广度优先搜索,在持续变化的约束和必要条件以及权重的限制之下,进行设计。
最后要指出,瀑布模型是错误的、有害的,我们必须摒弃它。
第4章 需求
现实社会不是理想化的,完美的客户和承包方都不存在。
要把需求落在纸面上,并与客户不断交互。
第5章 更好的模型
- 共同演化模型。使问题和原型共同演进。
- 集市模型。典型如 Linux,建立在开源基础之上。特点是,功能规格和总体系统设计都是现成的。
- 螺旋模型。敏捷也是一种螺旋模型——开发的快速迭代。
未来之路就是采纳和继续研发螺旋模型。
第二部分 协作
第6章 协作设计
现代设计的重大变化:
- 绝大多数设计都是有团队完成,而不是个人。
- 设计团队常使用电子邮件或其他即时通讯软件协作,而不是聚在一起。
人类绝大多数的工作都是一个人完成的,或是两个人紧密合作的成果。
团队设计是现代标准。
协作的成本在于:
- 分割成本。
- 学习与教授成本。
- 设计中的沟通成本。
- 变更控制。
挑战在于保持概念的完整性:授权一名系统架构师,或一个完整的架构师团队。
协作何时有用:
- 确定利益相关人的需求和愿望。
- 建立目标。
- 激进可选方案。
- 头脑风暴。
- 竞争是另一种协作。
- 未计划的设计竞赛。
- 设计评审。
- 要求多科目的设计评审。
- 利用图形展示。
协作何时无用:
- 概念设计尤其不应该多人协作。
两人团队是神奇的——所以结对编程是优秀的实践。
第7章 远程协作
远程协作的前提条件是互相之间已经足够熟悉:
- 面对面的时间很重要。
- 接口要干净。
第三部分 设计面面观
第8章 实证主义
如果仅仅依靠思考,是否足以让我们合理地设计出复杂对象?理性主义认为是可以的,而实证主义认为是不可以的。实际上,这个问题的答案是否定的。人类的种种缺点是与生俱来的,这将导致他们不断犯错。设计方法学的主要任务是学会如何在实践中找出缺陷,从而在下一次迭代中提升设计的质量。
只有严格的证明在技术上来说是可行的。软件和数学一样,本质上是非常纯粹的理论学科。而其他大部分设计领域最终将以物理逻辑的方式得到实现,人们根本无法证明最终产物的可靠性及其空间上的适用性。
设计过程将出现越来越多的迭代。测试和迭代过程都是不可或缺的。
第9章 用户模型
用户模型的定义要求明确,宁可有差错,也不能有暧昧不清的地方——所谓“宁错勿淆”。
第10章 预算资源
- 钱不是万能的。
- 同一种资源也会有不同风格,甚至有替代品。
- 预算资源并非一成不变。
如何管理资源和预算:
- 定义清晰。
- 公开跟踪信息。
- 严格进行控制。
第11章 约束
适当的约束带来更大的自由。
必须谨慎地区别:
- 真正意义上的约束;
- 曾经真实存在,但现在已经过时的约束;
- 被误认为是真是的约束;
- 可以制造出的人为约束。
通用产品比专用产品更难设计。
第12章 美学与风格
- 简约乃优雅之本。但简约并非一切。
- 花开两果,各表一枝。
好的架构:
- 一致性
- 正交性
- 专用性
- 简约性
- 普适性
设计具有风格。程序员可以认出彼此的代码。
- 细节特征。
- 脑力劳动最优化。
- 微观决策的一致性。
- 风格的清晰度。
风格是一种不同的可重复的微观决策集合,即使所处的环境不同,但决策制定的方式是保持不变的。微观决策的制定取决于相应的方式。
风格的特点:
- 结构清晰
- 与时俱进
若要使风格保持一致,请把它写成文档。
如何形成良好的风格:
- 它山之石,可以攻玉。
- 公正地评价。
- 实践,实践,再实践。
- 修正和提高。
- 谨慎选择设计师。
第13章 设计中的范例
全新的设计是罕见的。
范例为全新的设计提供了安全可靠的模型。
我们应该采用什么样的范例:
- 计算机领域:
- 大批量生产的软件
- 面向客户的应用软件和操作系统
并不是大部分设计问题都可以通过范例来解决,不要照猫画虎。
- 设计师应该对他所在领域的范例烂熟于心。
- 在除了艺术之外的工程领域,无端的创新纯粹是自私的自作聪明。
- 设计师掌握了前辈的风格之后,才能有了创新的基础。
在任何设计领域都不能有惰性,高度的热情和勤奋才能使得设计师驾轻就熟地领悟前辈们留下的宝贵范例。
寻求新鲜感的人追寻的是新奇的事物而不是持之以恒的情趣。真正将设计落到实处的人倒是在创造流芳百世的价值,这可以说是无心插柳柳成荫。
在创意之后,与奋斗最紧密的就是自满了,无数人希望自己能够扬名立万,自古如此。而这始终是人们失败的根源,它会毁掉一切。
第14章 智者千虑,必有一失
OS/360 的任务控制语言 JCL 就是一个典型的失败。
每次技术或者材料革新之后,设计师必然会重复以下举动:
- 小心翼翼地前进
- 掌握新方法
- 大踏步前进,完全忽视了脚下暗流涌动的危险
- 过度自负而提出不切实际的目标,因竞争压力及自身的傲慢而好高骛远
经验教训:
- 失败的例子相比于成功的例子更有学习和研究的价值。
- 成功后也要反思。成功会带来自信,对设计技术的自信,对设计本身的自信以及对设计者本人的自信。所有这一切都可能会演化成过度的自负。
- 从更高的层次去考虑设计的目标以及所处的环境。行业的思维方式是否将会发生变化?设计师的假设在十年后是否依然符合时代潮流?设计的东西本身是否正确?
第15章 设计的分离
现在基本上没有不复杂的技术。设计者和实现者与用户的进一步分离是必然的,沟通不畅随之而来。
必须投入额外的努力和专门的工作以缓解它们带来的痛苦效应:
- 用户场景体验。
- 通过增量式开发和迭代式交付与用户密切交互。
- 并发工程。
- 设计者的教育。设计课程必须包括理解用户需求和期望的技术与实践。
第16章 展现设计的演变轨迹和理由
- 将所需的知识项目的关系用一张图表示;
- 切断图中的一些边,使其变成一棵树,强化知识间的层次关系;
- 将这棵树以某种方式呈现为线性序列,通常是广度优先。
- 设计不只是满足需求,也是发现需求。
- 设计不是简单地选择可选方案,也需要意识到存在潜在的可选方案。
- 设计变化时,设计树也随之变化。要展现演进的过程。
第四部分 房屋设计系统
第17章 从头脑到电脑
良好的设计都是自顶向下的。
渐进逼真是几个世纪以来自然科学界所采用的程序。该模式真正的风险在于模型库本身。
第18章 从电脑到头脑
Brooks 想要一套这样房屋设计系统吗?
- 多个并列显示的窗口:
- 制图桌——大型的桌面手绘板?
- 二维全貌视图——缩略的导航图?
- 三维视图
- 室外视图
- 工作手册视图——文档?
- 规格视图
- 听觉展示
- 触觉展示——不需要
第五部分 卓越的设计师
第19章 伟大的设计来自伟大的设计师
标准化的公司产品设计过程与真正伟大而创新的设计是背道而驰的。伟大的设计过程中产生的棱角才是先进的优势所在。
伟大的设计并非来自伟大的工程,而是来自卓有天赋且努力工作的人。
产品过程还有何用:
- 后续产品。
- 提升设计实践的水平——学习。
要冷静地承认天赋论。
如何设计一个鼓励伟大设计的过程:
- 产品过程必须明确地具备根本重要性的事项和约束,此外一概不提。
- 产品过程必须提供易行、迅捷的例外机制,规则皆可打破。
第20章 伟大的设计师从哪里来
所有专业技能都是经过接受批判的实践方能掌握。
如何培养优秀的人才:
- 让双梯制真实而体面——天才的额外晋升渠道。
- 规划正规教育学习经历。不仅包括扎实的本科教育,还有高效的培训班——不过在国内可能以网络课程为主。
- 规划多样化的工作经历。
- 规划离开组织去享受休假。
应当保护伟大的设计师:
- 防止他们分心。
- 防止他们被经理们干扰。
- 防止他们承担管理工作。
把自己培养成一名设计师:
- 不断绘制设计草图。魔鬼隐藏在细节之中,所以草图也要很详细。
- 寻求对你的设计有见地的批判。
- 研究范例和前辈作品,学习它们的优点。
第六部分 案例研究
这部分主要是几个案例:
- 海滨小屋 View/360。作者自己的房子。
- 增加厢房。
- 厨房重新建模。
- System/360 体系结构。
- OS、360 操作系统。
- 《计算机体系结构:概念与演化》图书设计。
- 三角区大学计算中心。
还有一个推荐读物的列表,基本都没中本版,想必你也没空看,不列了。