软件BUG一词的英文原意是“臭虫”或“虫子”;但是,在电脑系统或游戏程序中,如果隐藏着的一些未被发现的缺陷或问题,可被人利用,人们叫它“Bug”,也叫漏洞。

原来,第一代计算机是由许多庞大且昂贵的真空管组成,并利用大量的电力来使真空管发光。可能正是由于计算机运行产生的光和热,引得一只小虫子Bug钻进了一支真空管内,导致整个计算机无法工作。研究人员费了半天时间,总算发现原因所在,把这只小虫子从真空管中取出后,计算机又恢复正常。后来,Bug这个名词就沿用下来,表示电脑系统或程序中隐藏的错误、缺陷,漏洞或问题。

谈谈自己对软件质量的理解(软件质量有多重要)(1)

软件设计中,一旦上市的软件存在重大缺陷没有被修复,将会造成非常大的损失。

No.1 千年虫事件。

说起来,现在社会科技中,除了真正学过计算机专业的人,大部分人对于“千年虫”这个称号都有些陌生,甚至有些人连听都没听过,不知道的网友听到“虫”这个字可能还会脑补出一大堆不明生物的样子,但其实“千年虫”并不是一种生物,而是一种由人类创造的电脑系统漏洞。

原来,在1957年,计算机发明出来不久,有一个叫霍普的计算机工程师要开发一款名为COBOL的语言,为了节省空间,原来4位的年份被她用两位数存储,例如,1957年,应该存储为“1957”,她存储为了“57”,省下了两个字节的空间。

这种存储方式虽然可以节省部分电脑运行空间,但每当到了千年的整数年,系统就会出现无法识别的问题,比如2000年用2位数来存储就是00年,而当时电脑的智能程度根本无法识别00年到底是公元2000年还是1000年,这就导致一些计算结果出现了重大偏差。许多在2000年以前运行正常的程序在2000年出现了错误。

这个bug影响了全球几百万的用户。看一下当时的报道体会一下:广州某商务公司称,上午上班不久,公司里的7台电脑就接二连三出现故障,当他们向软件供应商公司求助时发现,那里已经接到100多家公司数据库瘫痪的消息,他们怀疑这是“千年虫”又在作祟。

北京市计算机2000年问题办公室从1日至3日已经接到十几个求助电话,反映自己的电脑出现了千年虫问题。一位魏小姐的炒股机不能工作了;王先生的某国内知名品牌的电子记事本里几百个电话号码一夜之间不见了……

由于电脑千年虫作怪,瑞典多达10万网上银行客户在进入2000年之后无法进入网上账户。新千年开始后,瑞典一些网上银行客户试图进入平常使用的银行服务网页时,却获得这样的提示:“许用权已无效”,尽管他们的账户中还有存款,却无法支配其网上银行账户。据估计,受影响客户大约要占到瑞典全国经营网上银行业务或网上股票业务的金融客户数量的10%。

No.2 光大证券“乌龙指”事件

2013年8月16日11时5分左右,上证综指突涨5.96%,中石油、中石化、工商银行和中国银行等权重股均触及涨停。这被股民戏称为“乌龙指”的惊魂一刻。而该巨量订单在仅仅2秒钟之内发出。中国证监会表示,决定对光大证券正式立案调查。

证监会经核查后发现,上交所各交易和技术系统均运行正常。但是,随后证监会发现,主要买入方为光大证券自营账户,上交所立即向光大证券电话问询,并与上海证监局共同派人赶赴光大证券进行核查。

  经证监会初步核查,光大证券自营的策略交易系统包含订单生成系统和订单执行系统两个部分,存在程序调用错误、额度控制失效等设计缺陷,并被连锁触发,导致生成巨量市价委托订单,直接发送至上交所,累计申报买入234亿元,实际成交72.7亿元。

原来交易员使用了“重下”按钮,本应该买入24只股票却被执行为“买入24组ETF一篮子股票”,正是这个缺陷使交易量严重被放大,违背了交易的本意。

该事件最终以光大证券被罚5.2个亿结束。

No.3 1962年的Mariner Bug

损失:1850万美元 经过:航空软件bug直接导致Mariner 1号火箭在发射不久后就偏离了其预期运行轨道,任务控制中心在其发射293秒后就摧毁了火箭。 原因:一名程序员将公式错误地录入到计算机代码中,直接导致计算机错误地计算了火箭的运行轨道。

以上复盘了3起因为计算机bug导致的严重事故。希望所有程序员的世界里,永远没有BUG!

,