软件缺陷与软件故障案例

  • 格式:docx
  • 大小:13.29 KB
  • 文档页数:4

软件所带来的悲剧由于软件本身特有的性质决左了只要存在一个很小的错误,就可能带来灾难性的后果。

虽然这种情况不是很多,但一旦发生后果是很严重的。

这里,我们介绍几个典型的例子,如千年虫、“冲击波”计算机病毒、火星登陆事故、爱国者导弹防御系统和放射性机器系统等。

1.千年虫在20世纪70年代,程序员为了节约非常宝贵的内存资源和硬盘空间,在存储日期时,只保留年份的后两位,如“ 1980”被存为“80”。

但是,这些程序员万万没有想到他们的程序会一直被用到2000年,当2000年到来的时候,问题就会出现。

比如银行存款程序在计算利息时,应该用现在的日期“2000年1月1日”减去当时存款的日期,比如“1989年1月1日”,结果应该是21年,如果利息是3%,每100元银行要付给顾客大约86元利息。

如果程序没有纠正年份只存储两位的问题,其存款年数就变为-89年,变成顾客反要付给银行1288元的巨额利息。

所以,当2000年快要来到的时候,为了这样一个简单的设计缺陷,全世界付出几十亿美元的代价。

2•“冲击波”计算机病毒新浪科技引用《商业周刊》网站在“网络安全”专题中的文章,对“冲击波”计算机病毒进行了分析。

2003年8月11日,“冲击波”计算机病毒首先在美国发作,使美国的政府机关、企业及个人用户的成千上万的汁算机受到攻击。

随后,冲击波蠕虫很快在因特网上广泛传播,中国、日本和欧洲等国家也相继受到不断的攻击,结果使十几万台邮件服务器瘫痪,给整个世界范围内的Internet通信带来惨重损失。

制造冲击波蠕虫的黑客仅仅用了3周时间就制造了这个恶毒的程序,“冲击波”计算机病毒仅仅是利用微软Messenger Service中的一个缺陷,攻破计算机安全屏障,可使基于Windows 操作系统的计算机朋溃。

该缺陷几乎影响当前所有微软Windows系统,它甚至使安全专家产生更大的忧虑:独立的黑客们将很快找到利用该缺陷控制大部分计算机的方法。

随后,微软公司不得不紧急发布补丁包,修正这个缺陷。

3.火星登陆事故仅仅由于两个测试小组单独进行测试,没有进行很好沟通,缺少一个集成测试的阶段,结果导致1999年美国宇航局的火星基地登陆飞船在试图登陆火星表面时突然坠毁失踪。

质量管理小组观测到故障,并认左出现误动作的原因极可能是某一个数据位被意外更改。

什么情况下这个数据位被修改了?又为什么没有在内部测试时发现呢?从理论上看,登陆计划是这样的:在飞船降落到火星的过程中,降落伞将被打开,减缓飞船的下落速度。

降落伞打开后的几秒钟内,飞船的3条腿将迅速撑开,并在预左地点着陆。

当飞船离地面1800米时,它将丢弃降落伞,点燃登陆推进器,在余下的髙度缓缓降落地面。

美国宇航局为了省钱,简化了确左何时关闭推进器的装置。

为了替代其他太空船上使用的贵重雷达,在飞船的脚上装了一个廉价的触点开关,在计算机中设置一个数据位来关掉燃料。

很简单,飞船的脚不“着地”,引挚就会点火。

不幸的是,质量管理小组在事后的测试中发现,当飞船的脚迅速摆开准备着陆时,机械震动在大多数情况下也会触发着地开关,设宜错误的数据位。

设想飞船开始着陆时,汁算机极有可能关闭推进器,而火星登陆飞船下坠1800米之后冲向地而,必然会撞成碎片。

为什么会岀现这样的结果?原因很简单。

登陆飞船经过了多个小组测试。

其中一个小组测试飞船的脚落地过程(leg fold-down procedure),但从没有检査那个关键的数据位,因为那不是这个小组负责的范围;另一个小组测试着陆过程的英他部分,但这个小组总是在开始测试之前重置汁算机、淸除数据位。

双方本身的工作都没什么问题,就是没有合在一起测试,苴接口没有被测,而问题就在这里,后一个小组没有注意到数据位已经被错误设左。

4.爱国者导弹防御系统美国爱国者导弹防御系统是主动战略防御(即星球大战)系统的简化版本,它首次被用在第一次海湾战争对抗伊拉克飞毛腿导弹的防御作战中,总体上看效果不错,贏得各界的赞誉。

但它还是有几次失利,没有成功拦截伊拉克飞毛腿导弹,英中一枚在沙特阿拉伯的多哈爆炸的飞毛腿导弹适成28名美国士兵死亡。

分析专家发现,拦截失败的症结在于一个软件缺陷,当爱国者导弹防御系统的时钟累计运行超过14小时后,系统的跟踪系统就不准确。

在多哈袭击战中,爱国者导弹防御系统运行时间已经累汁超过100多个小时,显然那时系统的跟踪系统已经很不准确,从而造成这种结果。

5.放射性设备治死4个人由于放射性治疗仪Therac-25中的软件存在缺陷,导致几个癌症病人受到非常严重的过量放射性治疗,其中4个人因此死亡。

一个独立的科学调查报告显示:即使在加拿大原子能公司(AECL, Atomic Energy of Canada Limited)已经处理了几个特定的软件缺陷,这种事故还是发生了。

造成这种低级但致命错误的原因是缺乏软件工程实践,一个错误的想法是软件的可靠性依赖于用户的安全操作。

1.3.2其他一些例子除了上述一些实例外,还有一些相对影响较小的由于软件缺陷而造成的事例,如因为软件缺陷给企业带来经济上或商业名誉上巨大的损失。

下而介绍几个曾经给美国迪斯尼、微软、英特尔等公司造成或多或少的损失的例子。

1.迪斯尼的圣诞节礼物1994年圣诞节前夕,迪斯尼公司发布了第一个而向儿童的多媒体光盘游戏“狮子王童话”。

尽管在此之前,已经有不少公司在儿童计算机游戏市场上运作多年,但对迪斯尼公司而言,还是第一次进军这个市场。

由于迪斯尼公司的著塔品牌和事先的大力宣传及良好的促销活动,结果,市场销售情况非常不错,该游戏成为父母为自己孩子过圣诞节的必买礼物。

但结果却出人意料,12月26日,圣诞节后的第一天,迪斯尼公司的客户支持部电话开始响个不停,不断有人咨询、抱怨为什么游戏总是安装不成功,或没法正常使用。

很快,电话支持部门就淹没在愤怒家长的责问声和玩不成游戏孩子们的哭诉之中,报纸和电视开始不断报道此事。

后来证实,迪斯尼公司没有对当时市场上的各种PC机型进行完整的系统兼容性测试,只是在几种PC机型上进行了相关测试。

所以,这个游戏软件只能在少数系统中正常运行,但在大众使用的其他常见系统中却不能正常安装和运行。

2.丹佛新机场启用推迟16个月丹佛新国际机场希望被建成现代的(state-of-the-art)机场,它将拥有复杂的、计算机控制的、自动化的包裹处理系统,而且还有5300英里长的光纤网络。

不幸的是,在这包裹处理系统中存在一个严重的程序缺陷,导致行李箱被绞碎,居然还开着自动包裹车往墙里而钻。

结果,机场启用推迟16个月,使得预算超过32亿美元,并且废弃这个自动化的包裹处理系统,使用手工处理包裹系统。

3.Windows 2000 安全漏洞微软曾经承认,Windows 2000操作系统远程服务中存在7个漏洞,并发布了相应的补丁软件来进行修补。

微软远程服务是一种用于远程登录到大学、政府机关以及其他机关网站的系统或邮件服务器上的协议。

Windows 2000内运行的远程服务软件所出现的安全漏洞可能导致3种截然不同的安全隐患一一拒绝服务、权限滥用、信息泄壺。

安全漏洞可能会导致DOS攻击,使得系统无法向合法用户提供远程登录服务。

而另外两种安全缺陷更严重些,都涉及到系统管理权限,有可能帮助攻击者通过键盘输入的一个系统功能在无须登录的情况下完全控制Windows 2000系统。

这样攻击者便可以在讣算机上执行任意操作,包括在计算机上添加用户,安装或删除系统组件,添加或删除软件,破坏数据,或执行其他操作。

据美国军方在2002年3月18日证实,微软网络软件中一个原来未知的缺陷让一名联机攻击者控制了美国国防部服务器的公开接口。

美国陆军网络技术事业司令部(NTEC)主任Dmuchowski上校说,受到攻击的军事网站不属于军方。

上校强调,陆军很认真地对待这种威胁。

微软IIS5.0和Windows 2000中的这个缺陷使微软公司的安全团队大吃一惊,因为没有一名安全研究人员曾经发现这个问题。

在通常情况下,发现缺陷的安全研究人员或黑客会公布缺陷详情,或者将问题报告提交给软件制作者。

4.英特尔奔腾芯片缺陷在计算机的“计算器”程序中输入以下算式:(4195835 / 3145727) X3145727-4195835如果答案是0,就说明该计算机浮点运算没问题。

如果答案不是0,就表示计算机的浮点除法存在缺陷。

1994年,英特尔奔腾CPU芯片就曾经存在这样一个软件缺陷,而且被大批生产岀来卖到用户那里,最后,英特尔为自己处理软件缺陷的行为道歉并拿出4亿多美元来支付更换坏芯片的费用,可见,这个软件缺陷造成的损失有多大!这个缺陷是美国弗吉尼亚州Lguchbny大学的Thomas R. Nicely博上发现的。

他在奔腾PC 机上做除法实验时记录了一个没想到的结果。

他把发现的问题放到因特网上,随后引发了一场风眾,成千上万的人发现了同样的问题,以及其他得岀错误结果的情形。

万幸的是,这种情况很少见,仅仅在进行精度要求很高的数学、科学和工程il•算中才导致错误。

大多数进行财会管理和商务应用的用户根本不会遇到此类问题。

这个故事不仅说明软件缺陷所带来的问题,更重要地是说明对待软件缺陷的态度。

•英特尔的软件测试工程师在芯片发布之前进行内部测试时已经发现了这个问题,但管理层认为这没有严重到一定要修正,甚至需要公布这个问题。

•当软件缺陷被发现时,英特尔通过新闻发布和公开声明试图掩饰这个问题的严重性。

•受到压力时,英特尔承诺更换有问题的芯片,但要求用户必须证明自己受到软件缺陷的影响。

结果舆论大哗。

因特网新闻组充斥着愤怒的客户要求英特尔解决问题的呼声。

得到这个教训之后,英特尔在网站上报告已发现的问题,并认頁•对待客户在因特网新闻组上的反馈意见。

5.赛门铁克安全软件的安全缺陷安全软件制造商赛门铁克公司曾通知客户,使用该公司联机安全检测(securitycheck) 服务的用户有可能下载了一个带有缺陷的ActiveX控件,该控件有可能被入侵者利用并侵入受害者的计算机。

安全检测(security check)服务的目的是帮助人们锁泄系统并安装一个ActiveX控件以对计算机进行扫描。

但具有讽刺意味的是,在扫描后仍存留在计算机中的这个ActiveX控件具有一个内存缺陷,该缺陷会被攻击者利用并进入计算机。

不过,该问题已经得到了较好的解决赛门铁克已经用一款新的软件替换和覆盖了原来的软件。