由塔科马大桥事件 谈软件架构

经常,我们会涉及系统架构、面向对象的架构(SOA)、软件架构等词,那么到底什么是“架构”?什么是“软件架构”?“系统架构”与“软件架构”有着怎样的区别和联系?“系统架构构建”和“系统设计”之间有什么区别和联系?
    本章带着这些问题,追本溯源,对于架构及软件架构的一些基本概念及发展历程做一番说明。同时对一些人们认识上的误区进行分析,以还原事物的真实面目。
 1.1  引子
    时间就像一条奔腾不息的大河,大浪淘沙,方显金石。翻开人类的建筑工程史,遍布世界各地,跨越几千年的时空,我们可以看到许多辉煌成功的工程。但是,人们 往往最容易遗忘那些被历史长河所淹没的惨痛失败。而实际上,人类建筑的伟大成就,就是建立在这一系列失败的教训之上。既然“失败是成功之母”,那我们就以 一个有代表性的失败工程,作为我们走向成功的基石和开始。这个惨痛的教训,就是塔科马大桥(Tacoma Narrows Bridge)。
如果您现在从西雅图国际机场附近的塔科马前往华盛顿州的奥林匹亚区,在16号公路上有一条必经之桥,它如同一道美丽的钢架彩虹跨过了普及特海峡。这就是著名的塔科马大桥。
    竣工于2007年的塔科马大桥是目前世界上最长的悬索双桥,桥长1600米,悬索跨度850米。这真可谓是一项令人赞叹的伟大工程。但是,几乎每一个桥梁 建筑设计人员都知道其大名的原因,并不是由于该桥像金门大桥那样是桥梁史上最著名的大桥,而是由于其前身老塔科马大桥(其绰号为Galloping Gertie)的倒坍,是桥梁史上最著名的失败的缘故。
     老塔科马大桥是普及特海峡上的第一座大桥,1938年11月开始建造,于1940年7月竣工,总耗资640万美元,是当时世界第三长跨度的桥梁。因为先前 美国海军考虑到附近海军基地的需要,提供了部分建桥资金,并且旧金山金门大桥的设计者、著名的桥梁大师Joseph B. Strauss和Leon S. Moisseiff提供了设计咨询意见。因此,老塔科马大桥的竣工,使大桥成为了宾夕法尼亚州经济及军事的重要门户。它被当时的媒体和桥梁行业美喻为“人 类坚定不移的独创精神的结晶”。
     然而,大桥建成后不久,驾车跨越大桥的人们就发现该桥会随风不停地左右摇摆。虽然桥中心线保持了相对的稳定,可是整个桥面两侧却在上下起伏。这样有趣的现 象竟吸引车辆排起了长队,竞相等待开上这座像醉汉一样摇摆的索桥,去体会一下这奇妙的感觉。虽然桥梁设计师们也注意到了这样的不稳定现象,但是他们信誓旦 旦地保证“桥梁是安全的”。
但是事实毕竟让某些相关人员开始有些担心,所以从1940年7月底开始,在华盛顿大学教授F.B. Farquharson的指导下,他们开始对桥梁的这种奇特振动开始进行研究。他们拍摄了大量的照片和影片,记录下了大桥的振动方式,并且在试验室里开始 进行一定规模的试验,试图找到相应的方法来有效地降低桥梁的振动。
    经过Farquharson教授所带领团队的观测和试验,最初的解决办法是在桥梁正中央的桥底部,安装一些钢缆,把这些钢缆从桥底固定到地面。可是在施工 过程中,这些钢缆在风力拉动桥梁的作用力下完全断裂,施工没能成功。随后,试验人员又给出了一系列其他相应的固定桥梁的办法。例如,在桥梁的侧梁上钻洞, 这样可以减小风力对侧梁的推拉力;或者在桥梁的侧梁上安装一些风力导流器,这样可以减小阵风正面直接对侧梁的推拉力。1940年11月初,桥梁的投资方最 终同意了这些加强措施,并且打算在接下来的几周内完成施工。
    遗憾的是,这样的决定来得太迟了,风平浪静的假象下暗流涌动,甚至连F.B. Farquharson教授带领的团队也始料不及。
    11月7日清晨,顺着海峡吹来越来越强劲的大风,大桥开始了人们熟悉的摇摆和振荡。桥上车辆和行人依旧穿梭往来,享受着一如既往的那份惬意的晃动。9点 45分,大风时速达到了68公里。桥面上下交替晃动,两侧落差急速增加,最大时达到一米多,整个桥面仿佛成了过山车回旋的轨道一样。当时 Farquharson教授带领的团队正在桥面中央拍摄大桥晃动的场景,以便为即将开始的大桥风力导流工程提供设计数据。他们拍摄到了一位记者 Leonard Coatsworth正在驾车载着自己的爱犬Tubby非常缓慢而惬意地穿过大桥,一对夫妇也驾驶一辆小型货车紧随在记者的车后。教授拍摄的影片所记录该 景象的时间是10点13分左右。
     10点14分,整个桥面的起伏急剧增加,两侧落差最大时达到两米多。数千吨重的钢铁大桥仿佛变成了一条抖动的缎带,长长的波浪式起伏飘荡在整体桥面上。情 况还在继续恶化,整个桥面开始无规则地扭曲在一起,给在场的人一种强烈的恐惧感。事后Leonard Coatsworth叙述说:“当我刚刚开过桥头进入大桥时,大桥就开始疯狂地上下左右晃动起来。我意识到必须马上停车,否则轿车就会完全失去控制。我用 力紧急停车,打开车门。可以说我是被扔出车厢的。我看到车子被强烈的晃动推得左右摇摆,并且我开始听到了水泥断裂的可怕声音……”Leonard Coatsworth的爱犬Tubby也紧随着主人跳下了车,车后的那对夫妇也急忙跳下自己失控的卡车。这一切都被在现场拍摄的Farquharson教 授看到并且记录在影片中。当教授和所有行人安全地回到桥头时,他们看到巍然屹立的大桥突然断裂!束缚整个桥梁的钢缆完全崩断!整个桥面轰然倒塌!庞大的桥 体拍落到下方普及特海峡的水面上。桥面上Leonard Coatsworth和那对夫妇的车子也仿佛电影中的慢镜头一样,随同桥体落入海峡。整个事件从发生到结束没有超过两分钟。目睹整个过程的所有人都惊得目 瞪口呆。可怜的小狗Tubby也一同掉落进普及特海峡,成为这次事故的唯一遇难者,所幸没有其他人员伤亡。
1   940年11月7日早上11点15分(美国太平洋时间),塔科马大桥轰然倒塌,如图1-4所示。后人称之为“桥梁建筑史上的珍珠港”。对普及特海峡来说, 倒塌的大桥也成为了世界上最大的人造礁石之一。1940年11月28日,美国海军的水文办公室报告称,桥梁遗骸的地理坐标是 (47.16'00"N,122.33'00"W),深度180英尺(55 m)。
    当人们从大桥的倒塌事件中回过神后,工程设计人员开始分析大桥被风“吹”断的原因。
首 先,大桥的施工质量是无可挑剔的:使用了高质量的板型钢材及性能稳定的水泥,整个施工过程被严格监督。整个桥梁是用板型碳钢大梁坚实地支撑着,大梁被深深 地固定在巨大混凝土桥墩上。但可惜的是,这样看似设计完美的悬锁桥,却忽略了一个重要的问题:由于风力带来的共振和扭力。可以理解,当时的桥梁工程还没有 总结出这样的设计实践。
    在塔科马大桥之前,世界上其他的悬索桥大多采用具有开放式孔格结构的大梁。这样的大梁对风力的扰流效果很好,所以不会使风振的能量聚集。但是对于塔科马大 桥这样板型钢质大梁的新型悬索桥来说,板型设计结构会把风力牵制在桥梁断面上。这样被牵制住的风力,会造成两种的扭转模式:共振模式和扭力模式。共振是一 种纵向的扭力,意味着振动力沿着桥梁的长度发生作用,塔科马大桥也不例外。所以出现了以大桥中央为分界点,桥面顺着桥长上下起伏的现象。这样,司机会看见 对面开来的汽车有时会消失在跌宕起伏的桥谷中。
     但是,共振模式并不是导致桥梁坍塌的原因。当时的风速达到了每小时68公里,一旦风力达到这样的强度,第二种扭转模式“扭力模式”就开始作用于大桥。当时在坍塌现场的人们可以看到,桥上的路面出现了两侧路面交替上升、下降的现象。
    应该这样说,对所有桥梁设计来讲,桥面与水面的长距离,造成了穿过桥梁的风力对桥梁本身的振动。因为当风吹向桥梁时,风力将分流绕过其桥梁断面而形成周期 性交替的风流。周期性交替的风流绕过障碍物时会使桥身产生共振。当风速达到一定程度时,风力对桥梁这样有明显仰角的物体会产生强烈的扭力。周期性的共振加 上扭力累积到一定幅度时,就会引起桥梁的折断。如果不能有效降低这种逐渐增大的振幅和扭力,桥梁的安全就难以得到保障。
    桥梁界最后给出的正式结论是震撼而有深远借鉴意义的:“塔科马大桥使用了崭新而没有经过验证的桥梁设计结构,使大桥建成后毁于风力造成的风振。”看来,正是由于桥梁设计(换成IT界的话来讲,就是桥梁的架构)的原因,导致了这样惨痛的工程失败。
    理解塔科马大桥事件的原因,可以说只有在严谨的数学分析下,结合空气动力学和系统结构学才能完全搞清楚。在以后的研究和工程实践中,建筑结构工程界和航空工程界借鉴塔科马大桥的失败经验,进一步完善了空气动力学。这对以后研究解决桥梁的风振问题提供了很好的借鉴。
    自此以后,桥梁界专业人士开始认识到:为了解决风振,首先要避免由于桥梁结构所累积的风力振动,而不是通过加强主梁或桥体的强度来抵抗风力。为了减少累积 的风振,可以运用具有开放的网格结构使大梁和桥面的气流顺利通过,不致产生涡流和扭力的积累,这样就大大减小了风振。
     故事是令人震撼的,背后的教训也是深刻的。虽然后续桥梁工程实施的质量无可挑剔,但正是桥梁设计使用了全新的架构,并且该架构没有经过实践的检验,从而导 致最终桥梁崩溃性灾难的发生。人类所有工程领域的进步都是建立在这样一系列失败的基础之上,并逐渐走向成熟和成功。

由塔科马大桥事件 谈软件架构相关推荐

  1. 嵌入式软件开发工程师谈软件架构的设计

    嵌入式软件开发工程师谈软件架构的设计 注:此处嵌入式特指基于linux平台,单片机和其他rtos不在讨论范围 笔者从事嵌入式软件开发有6,7个年头,bsp,驱动,应用软件,android hall,f ...

  2. 6月8日14:00,温昱谈“软件架构设计智慧之旅”

    2007年06月04日 22:18:00 温昱谈"软件架构设计智慧之旅" --CSDNF 2F 俱乐部&博文视点名家讲谈活动之十二 活动形式及地点:CSDN嘉宾在线聊天室, ...

  3. 从南极之争谈软件架构十个技巧,及…

    http://www.csdn.net/article/2013-08-20/2816639-amazing-race-to-the-south-pole-teach-us 随着云计算带来的低创业门槛 ...

  4. 从南极之争谈软件架构十个技巧,及成功团队具备的气质

    随着云计算带来的低创业门槛.大数据潮流的盛行,越来越多的人加入了这场创业风暴.然而众多的淘金者中,真正满载而归的却是少之又少.这里为大家分享HighScalabilty创始人Tod Hoff结合南极穿 ...

  5. 从微盟删库事件谈数据修复的技术原理与时效挑战

    作者 | 赵榛 封图 | CSDN付费下载于视觉中国 微盟删库事件至今发生已快1周时间,根据微盟公告介绍,官方正在紧锣密鼓的进行着数据恢复工作.本篇文章,联想数据恢复中心专家赵榛为这次的数据恢复工作做 ...

  6. 从携程信用卡信息泄露事件谈网上支付安全

    最近携程被爆信用卡信息泄露事件,事件内容:http://www.wooyun.org/bugs/wooyun-2010-054302 携程声明:http://pages.ctrip.com/comme ...

  7. 从韩国农协银行事件谈信息安全工作的要点

    2011年4月12日下午,农协银行的电脑网络开始出现故障,导致客户无法提款.转账.使用信用卡和取得贷款.系统故障一直持续了3天,直到4月15日才恢复部分服务,而有些服务直到4月18日仍然没有恢复,以至 ...

  8. 从程序员打人事件谈一谈“产品经理”

    最近流传了一个某公司的程序员和产品经理打架的事情,在网上引起了一些话题,产品经理和程序员的矛盾几乎是不可调和的,我对这一问题的思考已经很久了,趁此机会也来谈一谈. 学软件工程的时候,有几种软件开发的模 ...

  9. 物理学的忧伤,从现代物理学的死锁谈起

    来源:量子学派 "这是一篇信息量极大的文章,我不知道有多少人能真正读完.但希望大家能静下心来,暂且抛开生活的油盐酱醋茶,好好去感受一下--这些似乎离我们的生活太远的智慧和知识." ...

最新文章

  1. python使用matplotlib可视化使用subplots子图、subplots绘制子图、并为可视化的每个子图添加标题(title for each subplots)
  2. react技术栈实践(1)
  3. cf 1504 F. Flip the Cards
  4. CSS Hack 汇总快查
  5. php 静态页面模板类,dedetag.class.php 静态模板类
  6. java十进制转换成二进制数
  7. epson r1900 清零软件_EPSON 1430 R1900 1500 R330 R1800 R2000 R230 打印机清零软件
  8. 485串口测试工具软件_【实例】如何用串口软件调试变频器?
  9. android qq输入法表情,QQ输入法(Android)4.8 表情进行时
  10. SIM800A 建立网络
  11. android随机抽奖代码_Android 中从一个集合或者数组中随机抽取几个不同的值
  12. matlab用平方法怎么求传递闭包矩阵,逐次平方法计算传递闭包
  13. html输入框位置控制,JS 控制input 输入框光标位置
  14. wow转服务器微信支付,魔兽打团本成就,打到一半,发微信支付宝要钱,真国服之耻!...
  15. 【云原生 | 19】在单台宿主机上管理Docker容器
  16. SpringMVC+log4j配置
  17. SIMetrix导入MOS管SPICE参数进行仿真的快速方法
  18. 智能音箱 之 扬声器喇叭介绍
  19. ArcGIS打开山东天地图WMTS服务
  20. 计算机进制的转换(任意进制)详解

热门文章

  1. 张旭升20162329 2006-2007-2 《Java程序设计》第一周学习总结
  2. Android 升级到android studio 2.2项目死活run不起来
  3. 基于eclipse RCP的文件夹管理工具
  4. .NET设计模式(7):创建型模式专题总结(Creational Pattern)
  5. php 转码iconv,PHP iconv()函数转字符编码的问题(转)
  6. java参数化查询_小博老师解析Java核心技术 ——JDBC参数化查询(二)
  7. Factory Method工厂方法
  8. bzoj3122 [Sdoi2013]随机数生成器(bsgs+扩欧+数列)
  9. 旺财速啃H5框架之Bootstrap(五)
  10. LeetCode:Sudoku Solver Valid Sudouku