本文最初发表在 readwrite 网站,InfoQ 中文站翻译并分享。
软件在我们21世纪的生活中已经变得如此无处不在了,以至于我们常常认为它是理所当然的。我们总是假设它只在我们需要的时候起作用。或者,甚至更危险的是,我们无法完全理解错误、问题或失败的负面影响。
但并不是每个人都能对软件开发失败的恐惧无动于衷。
作为与这个行业紧密相关且对其未来发展有很好把握的人,我亲眼目睹了很多公司和开发人员遭受了软件开发缺陷和问题的困扰(有些本应是可以避免的,另一些则是突然冒出来的)。
因此,作为前段时间我发表的一篇关于人工智能失败示例文章的串联,在这篇文章中我将关注一些软件开发的失败,其中一些很严重,而另一些则相当幽默。希望它能让我们所有人都能看到,在软件开发时,有多少东西是危险的。
我们倾向于认为大型组织、财富100强的企业和热门品牌永远不会像我们的小企业那样陷入困境。但事实上,他们有时也会搞砸。而且当搞砸时,风险往往更高,也更明显。
下面我们来看看现实生活中软件开发失败所造成的巨大影响和持久的涟漪:
今年2月,进出伦敦希思罗机场(Heathrow airport)的100多个航班被取消、延误或以其他方式中断。原因是技术问题影响了登机显示屏和值机系统,因此,乘客们得不到所需的有关航班的重要信息。最重要的是,电子票(这在最近几年已变得相当普遍的)的功能也很有限。
虽然希思罗机场的发言人发表了一份声明,并表示他们无法透露更多关于导致系统受到影响的原因和 / 或哪些系统受到影响的细节,但他们承诺将继续密切监控其系统。(但我可以向你保证,尽管他们向公众发布陈词滥调时非常冷静,但在幕后却出现了混乱和喊叫。)
CareFusion 公司为全球一些顶级医院设计和制造了先进的医疗设备。不幸的是,他们也有相当数量的召回事件。其中有些比其他的更可怕。
2015 年,旨在自动向医院患者输送液体和药品的 CareFusion Alaris 输液泵出现了软件错误,导致该泵延迟输液。幸好这个问题很早就被发现了,否则后果可能会很可怕——可能导致意外过量用药。
但还不止这些。CareFusion 的这一周变得更糟了,仅仅四天之后,他们不得不发布一个一级召回通告,召回整个生产线的单独呼吸机。问题是什么呢?可能是一个能导致病人窒息的软件缺陷。
几年前,一架 F-35 联合攻击战斗机的一个软件故障被确认存在漏洞。该漏洞实际上会导致飞机在编队飞行时不能正确地探测并锁定了错误的目标。
正如该公司解释的那样,每架编队飞行的飞机必须从不同角度探测到目标。但该软件无法区分一个目标和多个目标。从本质上讲,F-35 战斗机看到的是双目标。(在高速高海拔编队飞行时,这不是我们想要的。)
好吧,让我们暂时休息一下。这是一个非常有趣的故事(除非你是故事的主人公)。
在法国,优步(Uber)应用程序中的一个漏洞竟然将一名男子与另一名女子的婚外情泄露给了他的妻子。这最终导致了一场离婚,并让优步面临 4500 万美元的诉讼。
该漏洞会导致优步通知被推送到某个设备上,即使你在某个特定设备上注销了账户。这个漏洞实际上向法国人的妻子发送几条通知,清楚地列出了他与情妇约会公寓的地点。据称,妻子之所以收到这些通知,是因为她的丈夫曾经用她的手机打过优步。
2016 年,一群高级黑客 / 窃贼劫持了孟加拉国银行系统,并通过四笔不同的交易成功转移了超过 8,100 万美元。他们还有 8.7 亿美元的资金在排队转移,但一个拼写错误通知了银行,导致这些额外的转帐被取消。
但有趣的是:
根据孟加拉国银行当局发布的消息,其中设置了一台打印机可以自动打印所有交易的读数据。但碰巧系统中出现了一个小故障(我认为这可能是由盗贼引起的)中断了打印过程。因此,直到数个延迟之后,才追查到转账收据。这给了窃贼足够的时间“逃跑”并掩盖他们的踪迹。
当你把钱存入银行时,你希望能随时随地访问它。但是,可惜的是,技术并不是总能提供这种自由。尽管过去你曾遇到过网上银行的小故障,但我敢打赌,你从来没有遇到过这样的故障。
2018 年 4 月,TSB 银行在对软件进行“简单”升级后,导致了银行大规模的宕机,因此,数百万 TSB 银行客户的账户被锁定。系统升级是有计划的,但显然计划的不够好。
在 TSB 启动新系统后,客户立即开始遇到登录问题。向用户显示了其他人的帐户详细信息。也有关于不准确的信贷和债务的报告。许多客户的账户被锁定了两周才恢复访问。
同样在 2018 年,威尔士国家卫生服务系统(Wales National Health Service,NHS)经历了一次大规模的计算机故障,导致了患者文件的访问问题。在许多医院和设施里,医生无法看到患者的档案。这意味着他们无法获得 X 光检查结果或血常规。这也导致了预约的积压,因为医生看不了病人,而且系统又不允许取消预约。
为了将公司出售给特斯拉(Tesla),SolarCity 公司聘请了一家投资银行。但直到签署了 26 亿美元的协议之后,拉扎德银行(Lazard Ltd.)才发现,他们实际上低估了客户约 4 亿美元的价值。虽然这个错误对 SolarCity 的股东来说为时已晚,但特斯拉确实提出了要提供一些股票来弥补估值上的差异。
你可能还记得这件事,因为这在当时是个大新闻。早在 2018 年,夏威夷市民就接到了全州范围内的警报,要求他们立即采取行动,以应对来袭的弹道导弹袭击。你可以想象,人们惊慌失措,想尽一切办法来“保护”自己。不幸的是(或者我认为应该庆幸的是)这是一个误报。
整个崩溃过程中最大的问题是,半个多小时之后警报才被撤销。虽然后来的调查显示问题是由人为错误造成的,但他们确实在夏威夷应急管理机构的警报发起软件中发现了一些非常令人不安的缺陷。
几年前,丰田汽车的司机们开始报告一个令人困扰的问题:他们的汽车在没有实际踩油门的情况下就在加速。经过几次事故的仔细调查之后,人们发现这些危险的问题是由系统中的软件错误引起的。
据报道,安装在这些丰田汽车上的软件存在各种各样的问题,如内存损坏、安全系统失效、内存处理错误以及单点系统故障。丰田最终召回了数百万辆汽车,最终公司的股价也在几周内下跌了 20%。
你害怕了吗?(我开玩笑的……)
本文的目的并不是要阻止你的脚步,让你远离软件。而是想要提醒你,软件是不完美的。同时,找到合适的软件开发公司对项目的成功至关重要。
软件开发人员多如牛毛,单优秀的软件开发人员却很少。有时,把自己的工作外包出去是可以的,但要尽职尽责,并寻找一个既熟练又全面的个人或团队。一旦你找到了他们,就不要让他们离开!
你可以完全隔离你的业务风险,但你也要最大限度地保护下行。一个好的软件开发人员能带你走很长的一段路去实现这个目标。
原文链接:
https://readwrite.com/2020/08/20/software-development-failure/
领取专属 10元无门槛券
私享最新 技术干货