1A.4.2 我们从哪里走错了
在这些论文集中,需要注意的第二件有趣的事是:在他们所宣称工程学由什么组成以及他们如何描述自己对于软件开发的方法和建议之间的错配。例如,他们作出了下面这个错误的比较(Naur 1968,第12页):
“我们构建系统就像莱特兄弟制造飞机一样:制造出整架飞机,把它从悬崖上推下去,让它坠毁,然后再重新开始。”
实际上,莱特兄弟以最好的可能的感觉来实践工程学:他们使用理论、实验法、猜测和反馈。莱特兄弟的解释(Wright 1953,第15~18页)是这样的:
“根据我们的计算,1900机器的升空失败,要么是因为机翼的形状,要么是因为Lilienthal表中的错误。为了满足我们对此的思考,我们进行了很多次实验,目的是确定飞机的相对起飞质量与曲面的关系,及有不同曲率深度的曲面相对值……9月,我们建立了一个小风洞,在风洞中我们进行了很多测量……但它们还不完全令人满意。我们立即着手设计和建造另一个工具,并希望用它能够保证得到更精确的测量……我们使用这两种工具对于起飞和起飞与漂移比率进行了几千次的测量。”
但工程学不只是计算表。它包括与材料的交互(在莱特兄弟这个例子中,是空气)。“进行工程化”这一活动就是学习材料的质量,并创造一种方法能够完成人们想用材料来完成的任务。几乎总是存在冲突,因此很少能够得到一个完美的解决方案。要找到一个能在某一特定情形下适当工作的解决方案需要:随着对于材料、问题和可能的解决方案集合了解得越来越多,一次次地重新框定问题。
麻省理工学院的Donald Sch歯教授把这种持续的重新框定称为“与情形的反思性会话”。在《The Reflective Practitioner》(Sch歯 1983)一书的很多案例中,他讲述了一个化学工程师处理新问题的案例。这些化学专业的研究生被要求创立一个制造方面的加工过程,即能够复制出使用牛骨在瓷器上产生的特殊光泽,但这一光泽会很快消失。这些学生在工作中经历了三个阶段:
•他们试图使用化学原理来研制出用骨头能产生的反应,这样他们就能复制出光泽了。使用这种方法,他们完全陷入了困境。
•放弃理论太困难了,他们接着实验那些自己能够想到的任何加工方法。这也不能使他们进步。
•最后,他们的教授指导他们不要复制骨头的加工过程,而是创造一种能够产生类似效果的过程。他们通过理论结合实验取得了一些进步,每次获得了一类的进步都为将来的工作缩小了搜索空间。
他们的第三个阶段显示了他们的与情形的反思性会话。随着他们对问题和解决方案了解得越来越多,他们就能够在博弈中采取更好的步骤。
Schon的解释完美地吻合了Pelle Ehn关于软件设计就是一个语言博弈的描述(参见附录B):
“在与材料的情形对话中,设计师永远不能采取一个只有有意的暗示的步骤。设计材料会不断地和他谈话。这导致他领悟到了未预料到的问题和潜在性,这些都成为了未来步骤的基础。”
然后,工程学作为一场创造和沟通的合作博弈而继续进行,其中的步骤来自于理论或者灵感,并使用更能揭示这一情形的实验来对这些步骤进行检查。
那么,工程学如何变得如此被人误解呢?Schon说:
“哈佛工程学计划的教务长Harvey Brooks是首先指出“排他式的以工程学科学为基础来想象工程学”的缺点的人之一。在他1967写的《Dilemmas of Engineering Education》一文中,描述了这样一个窘境:参与的工程师希望能在迅速变化的知识体和迅速变化的社会预期之间的鸿沟上建立起桥梁。Brooks认为,这一结果需要适应性,而适应性要求一门工程学的艺术。工程学学派的科学化已经趋于将工程学由一门艺术变为了一种科学。
在1953年至1967年之间,借助于公众对科学的巨大支持,工程学学派将他们的赌注押在了一门以“新东西的可能性”为导向的工程学科学之上,而不是以制作一些有用的东西的“设计能力”为导向……当最高级的教授成为了工程学科学家的时候,参与的工程师也不再是强有力的角色模型……到1967年为止,工程学设计事实上已经从全部课程中消失了,而科学和艺术之间的关系问题也就不再存在……(Schon 1983,第171~172页)
人们错误地认为:由于在工程师的技艺中使用了数学,所以他们关于一个项目要花多长时间(或项目要花多少成本)的预测就会相对精确。然而,当把建筑工程师放入类似的情景中,他们也会以与大多数软件开发人员一样的方式失败。例如波士顿的一个建造高速公路的计划,在1983年估计造价为22亿美元,并且预计1995年完工。但到了2003年,它依旧没有完工,成本估计已变成了146亿美元(Cerasoli 2001,Chase,地址为http://www. revelation13.net/bigdig.html)。600%的成本超出被归咎于项目比之前的同类项目更大,并且使用了新的未尝试过的技术。
在研究了这一项目及其他建筑工程项目之后,Martin Fowler在一个公开谈话中讽刺说:“与建筑工程师相比,软件开发人员在超出成本方面只能算是外行”。
关于工程学的普遍预期是错误的,因为把工程学作为一种活动的普遍理解是错误的。一旦我们把工程学理解成一种经济学的合作博弈,在精确预测一个工程项目的轨迹方面的难度就变得可以理解了。
| 回书目 上一节 下一节 |
|
· C语言之基础自测获奖名.. · Linux服务器架设自测获.. · 边界网关安全防护自测.. · Cisco CCNA最新真题自.. · 我在美联储监管银行 书.. · 我在美联储监管银行 目.. |
· 我在美联储监管银行 前.. · 入侵的艺术 目录 · 入侵的艺术 前言 · 网管员全真面试题自测.. · 子弹的本质—— 形势没.. · 学习大量的词汇—— 对.. |
|
||||
| · 运营商封堵非法ADSL共享 · 珊瑚虫QQ作者侵权案开庭 · Windows Server 2008 · SQL Server 2008/2005.. · 打造安全网络环境 · 网络安全产品检验规范 · 社会工程学与网络安全 · 离职员工安全隐患 |
· 杀毒软件评测专题 · Sun以10亿美元并购开源.. · 中间件应用技术专题 · 杀毒软件优化和使用技巧 · 信息安全等级保护专题 · 补丁自动分发管理策略.. · 杀毒王牌 · AMD Phenom三核处理器.. |
|||
|
||||
| · VPN技术 · SQL Server 2008/2005.. · SOA 面向服务架构 · 子网掩码教程 · SQL Server 2008/2005.. · 中间件应用技术专题 · 深入了解PGP加密技术 · MySQL数据库备份 |
· 病毒查杀专题 · VPN技术 · Solaris 10 配置管理 · Linux 基础 · SSL VPN详细知识 · Linux防火墙 · 路由器设置与口令恢复 · Linux 集群技术专题 |
|||
|
||||
| · VPN技术 · SQL Server 2008/2005.. · 中间件应用技术专题 · SQL Server 2008/2005.. · SOA 面向服务架构 · 子网掩码教程 · MySQL数据库备份 · 身份认证技术 |
· 病毒查杀专题 · 清除流氓软件——51CTO.. · SSL VPN详细知识 · Sniffer安全技术从入门.. · 常用交换机典型配置 · 路由器设置与口令恢复 · Linux 集群技术专题 · VPN技术 |
|||