一个著名的bug -- 1999 年“火星气候卫星” 因导航错误而坠入火星大气层

1999 年“火星气候卫星” 因导航出现重大错误而坠入火星大气层。从Peter Norvig(在NASA 工作的时候参与了调查)在coders at work的问答中,我们可以看到一个大略的错误发生过程:

1)      软件外包公司对于 mission-critical 的软件模块有很完备的检查和测试,但是对于其他模块则没有完备的管理。

2)      程序员写了一个不重要的log 功能,其中用英制 (磅* 英尺) 表示力,  但是 NASA 用“牛顿”=  千克*米/(秒*秒)

3)      外包公司接到一个新的工程,他们进行了软件重用,log 功能中记录的力被重用为导航功能的输入参数,成为 mission-critical 的模块。 //错误: 一个模块从 non-mission-critical 变成 mission-critical 没有经历必要的复审和测试。

4)      这个新的工程由发包公司 Lockheed (洛克希德公司) 交给了客户 JPL (喷气推进实验室)

5)      火箭带着卫星发射了,在10个月的飞行中,JPL  可以每天两次启动小推进器,来调整太空船的航向,在这一过程中,有人发现了导航功能的一些不正常现象, 于是 -

a.       JPL 发邮件给 Lockheed, 说 – 这个模块有些参数看起来好像不正常…

b.      Lockheed 回邮件...

c.       JPL 再发邮件…

d.      最后没有人再发邮件了

e.      JPL的同志认为, Lockheed 的同志们估计已经搞定了。

f.        Lockheed 的同志认为, JPL 的同志们没再追问这个问题,可能已经不是问题了。

错误: 这个问题从来没有收录到NASA 的错误跟踪系统 (Bug tracking system),只是在email 中交流,导致最后没有人对这个问题负责。在错误跟踪系统中,总得有一个人“拥有”这一个bug,这样可以避免推诿责任

十个月之后, 1999年9月23 日,卫星抵达火星大气层,错误的导航参数造成卫星坠入大气层烧毁。 单单卫星的造价就高达一亿两千五百万美元。


==========================================

质量控制不好,小毛病也会酿成大问题!

你可能感兴趣的:(Program,PrjManage)