文档详情

软件缺陷与软件故障案例 .pdf

发布:2025-04-15约5.81千字共4页下载文档
文本预览下载声明

软件缺陷与软件故障案例--第1页

软件所带来的悲剧

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

然这种情况不是很多,但一旦发生后果是很严重的。这里,我们介绍几个典型的例子,如千年

虫、“冲击波”计算机病毒、火星登陆事故、爱国者导弹防御系统和放射性机器系统等。

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周时间就制造了这个恶毒的程序,“冲击波”计算机病

毒仅仅是利用微软MessengerService中的一个缺陷,攻破计算机安全屏障,可使基于Windows

操作系统的计算机朋溃。该缺陷几乎影响当前所有微软Windows系统,它甚至使安全专家产生

更大的忧虑:独立的黑客们将很快找到利用该缺陷控制大部分计算机的方法。

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

3.火星登陆事故

仅仅由于两个测试小组单独进行测试,没有进行很好沟通,缺少一个集成测试的阶段,结

果导致1999年美国宇航局的火星基地登陆飞船在试图登陆火星表面时突然坠毁失踪。质量管理

小组观测到故障,并认左出现误动作的原因极可能是某一个数据意外更改。什么情况下这

个数据修改了?又为什么没有在内部测试时发现呢?

从理论上看,登陆计划是这样的:在飞船降落到火星的过程中,降落伞将被打开,减缓飞

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

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

美国宇航局为了省钱,简化了确左何时关闭推进器的装置。为了替代其他太空船上使用的

贵重雷达,在飞船的脚上装了一个廉价的触点开关,在计算机中设置一个数据位来关掉燃料。

很简单,飞船的脚不“着地”,引挚就会点火。不幸的是,质量管理小组在事后的测试中发现,

当飞船的脚迅速摆开准备着陆时,机械震动在大多数情况下也会触发着地开关,设宜错误的数

据位。设想飞船开始着陆时,汁算机极有可能关闭推进器,而火星登陆飞船下坠1800米之后冲

向地而,必然会撞成碎片。

为什么会岀现这样的结果?原因很简单。登陆飞船经过了多个小组测试。其中一个小组测

试飞船的脚落地过程(legfold-downprocedure),但从没有检査那个关键的数据位,因为那不是这

软件缺陷与软件故障案例--第1页

软件缺陷与软件故障案例--第2页

个小组负责的范围;另一个小组测试着陆过程的英他部分,但这个小组总是在开始测试之前重

置汁算机、淸

显示全部
相似文档