[心得] 致命 bug - 谈软件 bug

楼主: descent (“雄辩是银,沉默是金”)   2016-12-03 12:21:57
( https://goo.gl/fHSTJX )
致命Bug:件缺陷的与示 30.6/39
20160516 在中国亚马逊订购
20160530 到集运商结算货品
20160531 集运商发送到台湾
20160603 收到货品
这是一本在讲软件 bug 小故事的书, 和我平常在读的电脑技术书籍比起来, 非常容易
读, 也很有趣, 让我知道了不少事情, 有些事应该是需要被报导出来的, 可是我完全没印
象有听过这些报导, 我对自己的孤陋寡闻感到哀伤。可惜这本书没有电子版, 这是本很适
合用电子阅读器读的书。
本书写的浅显、易懂、好读, 就算不是相关的软件专业人员, 也可以当作是一篇篇的故事
来读, 精彩度丝毫不逊于小说。
本书的原文是韩文, 这是翻译重要的一种表现, 我相信有人英文一定很好, 看原文书没问
题, 但在这些人当中韩文也好的那可能就很少了。在我购买的书籍中, 有日文、韩文、英
文这些翻译本, 但事实上还会有德文、法文、俄文等的翻译本, 不太可能把这些语言都学
过一遍的。
翻译工业应该要由政府来当领头羊, 将整个人民的眼界带到全世界才是, 人们眼界开了,
国家就会更进步才是, 因为语言隔阂而不能大开眼界, 真是太冤枉了, 要求每个人外文学
的好的难度大于将翻译工业好好的建构起来。
软件在一般人的印象是不是网页, 手机上的 app, 还有 windows 上的那些软件、游戏
呢? 这本书提到的都是让人很难想到的领域软件, 书上有几个很深刻的软件 bug 想和大
家聊聊。
chapter 4 在讲停电的故事, 因为软件的原因, 导致电力负荷不过来时, 接应的系统没来
帮忙, 就这样, 像水管承受不了水压而爆开, 电力系统最终瘫痪。
chapter 5 的约克城号是艘战舰, 使用的是 ms windows 4.0, 它有一天突然不动了, 就
这样静静地停在海上, 任由海洋带领, 漂浮了 2 小时 45 分钟, 软件的错误是 divided
by zero。
chapter 9 的美国的文森号战舰, 它击落了伊朗航空 655 民航机, 因为文森号战舰把他
当成了伊朗的 F-14 战斗机, 至于为什么伊朗会有美国的 F-14 那是另外一个值得探究的
问题。
美军当然不是傻蛋, 怎么会搞不清楚是战斗机还是民航机呢? 但是可遇而不可求的巧合还
是让这场悲剧发生了, 总共要符合以下条件:
文森号战舰使用军用无线电频率警告对方, 对方是民航机, 收不到的。
文森号战舰后在使用国际救援无线电频率警告对方, 但对方可能没收到, 因为没找到黑盒
子, 无法确认。
文森号战舰查询了民用客机的起飞时间, 可惜 655 民航机延迟 27 分钟才起飞, 所以美
军不认为那个时间点有民航机。而文森号战舰使用了 GMT+4 的时间, 但航班时间是
GMT+3.5, 更让事情变得棘手。
再来是雷达扫描系统, 655 民航机的识别代码是 3, 但是扫到的代码是 2 (军用机), 不
是软件出问题, 而是扫错区域, 本来应该扫民用机场的方向结果扫到军用机场。
最后, 终于来到最后, 研判系统出错, 655 民航机在明明是在升高, 但文森号战舰的软件
系统使得军方人员研判 655 民航机在下降。
就是这以上几点造成了这个悲剧, 但美国死不认错也令人不齿, 不过有赔钱, 但强国就可
以这样鸭霸吗?
但我觉得作者把这件事情也规到软件 bug 倒是有点牵强了, UI 的结果不好研判或是警示
系统不周全说是 bug 我实在不能接受。
chapter 12 的核子武器系统 bug, 知道的人应该都会觉得现在还有个好的地球可生存,
都会为此心存感谢。
美国/苏联的侦测系统会互相侦测核弹, 当对方发射过来时, 我方就反击, 但如果误判了
呢? 对方明明没有发射核弹, 但警示系统确认为有呢? 你会怎么办呢?
这样的 bug 还一边发生一次, 有够公平。还好这些人果真都是菁英份子, 最后什么都没
发生, 感谢这些研判正确的军方人员。
chapter 13 的癌症治疗系统, 这个很严重, 让治疗的病人接受了高于需要的放射线照
射, 这是加拿大的 AECL Therac-25, 本来需要的能量是 200 rad, 但病人却接收了
15000 ~ 20000 rad 的照射, 在怎么没概念的人也知道这差太多了, 造成许多人死亡。
这个软件问题是算术溢出, 8 bit 整数, 只能存放 0 ~ 255, 超过就会绕回, 就是这问题
倒置整个剂量数值出错。
chapter 18 丰田暴冲, 原来日本人也是会骗人的, 和大众的造假测试一样, 令我惊讶,
原来德国人也是会骗人的, 他们把自己好不容易打造的形象搞砸了。
谈软件部份, 当机械结构改成电子加上软件之后才发生这样的事情, 有个 Barr Group 对
丰田的软件分析, 发现在某些情形下, 某些 reltime os tast 不会去执行该做的工作,
造成这样的原因是, stack overflow, 而其程式有 11000 全域变量也令人惊讶, 日本人
的软件好像也不怎么高竿是吧!
ref:
丰田问题车事件的经验与教训 ( https://goo.gl/RPZqmQ )
// 本文使用 Blog2BBS 自动将Blog文章转成缩址的BBS纯文字 http://goo.gl/TZ4E17 //
blog 版本
http://descent-incoming.blogspot.tw/2016/12/books-bug.html
作者: winken2004 (新竹肥宅)   2016-12-03 22:54:00
看起來挺有趣的
作者: Tribute (Tribute)   2016-12-04 20:39:00
推(想请问原PO,这是不是跟人月神话或与熊共舞内容很相似谈专案管理与软件工程?)
楼主: descent (“雄辩是银,沉默是金”)   2016-12-04 21:04:00
完全不同, 只是在谈软件 bug 的故事
作者: Tribute (Tribute)   2016-12-04 21:25:00
感谢原PO(纳入书债清单中)^^

Links booklink

Contact Us: admin [ a t ] ucptt.com