设计已死?Is Design Dead.pdf


立即下载 林老爷的日常
2025-04-13
设计 软件 程序 代码 部份 Design 开发 修改 Planned 撰写
361.7 KB

设计已死?
作者:Martin Fowler 译者:Daimler Huang
Planned and Evolutionary Design
我将在这篇文章中说明软件开发的两种设计方式是如何完成的。或许最常见的是演进式设
计。它的本质是系统的设计随着软件开发的过程增长。设计 (design) 是撰写程序代码过
程的一部份,随着程序代码的发展,设计也跟着调整。
在常见的使用中,演进式设计实在是彻底的失败。设计的结果其实是一堆为了某些特殊条
件而巧妙安排的决定所组成,每个条件都会让程序代码更难修改。从很多方面来看,你可
能会批评这样根本就没有设计可言,无疑地这样的方式常会导致很差劲的设计。根据
Kent的陈述,所谓的设计 (design) 是要能够让你可以长期很简单地修改软件。当设计
(design) 不如预期时,你应该能够做有效的更改。一段时间之后,设计变得越来越糟,你
也体会到这个软件混乱的程度。这样的情形不仅使得软件本身难以修改,也容易产生难以
追踪和彻底解决的 bug。随着计画的进行,bug 的数量呈指数地成长而必须花更多成本去
解决,这就是 "code and fix" 的恶梦。
Planned Design 的做法正好相反,并且含有取自其它工程的概念。如果你打算做一间狗
屋,你只需要找齐木料以及在心中有一个大略的形象。但是如果你想要建一栋摩天大楼,
照同样的做法,恐怕还不到一半的高度大楼就垮了。于是你先在一间像我太太在波士顿市
区那样的办公室里完成工程图。她在设计图中确定所有的细节,一部份使用数学分析,但
是大部分都是使用建筑规范。所谓的建筑规范就是根据成功的经验 (有些是数学分析) 制
定出如何设计结构体的法则。当设计图完成,她们公司就可以将设计图交给另一个施工的
公司按图施工。
Planned Design 将同样的方式应用在软件开发。Designer 先定出重要的部份,程序代码
不是由他们来撰写,因为软件并不是他们 "建造[译注3]" 的,他们只负责设计。所以
designer 可以利用像 UML 这样的技术,不需要太注重撰写程序代码的细节问题,而在
一个比较属于抽象的层次上工作。一旦设计的部份完成了,他们就可以将它交给另一个团
队 (或甚至是另一家公司) 去 "建造"。因为 designer 朝着大


设计/软件/程序/代码/部份/Design/开发/修改/Planned/撰写/ 设计/软件/程序/代码/部份/Design/开发/修改/Planned/撰写/
-1 条回复
登录 后才能参与评论
-->