时光倒转到了我们还使用电子管技术制造计算机的那个年代,那是计算机的主机重达数吨,并常常占据整个房间的时代。在某个实验室的某个平常的早晨,这个庞然大物突然停止了工作,我们的IT前辈们马上就开始寻找出现这种情况的原因。凭借设计图纸的引导,他们很快就圈定了可能发生问题的那一部分。在接下来的检查中,他们发现这次故障原来是一只虫子在经过两只继电器时造成了短路所致。在修复了计算机并重新开始工作之后,负责计算机维护的工程师把这次故障记录在了一份备忘录上,以便将来其他人遇到类似的情况可以迅速的找到答案。当然,他还写了一份文档给计算机的设计人员,希望以后在主机的散热孔那里可以加装一层更加细密的金属网,即不影响散热,又可以防止虫子爬到主机里。
发现上面的区别了吗?一只虫子爬进主机引起短路的这个事件,更多的被我们称为Bug,这个名词一直从计算机硬件故障沿用到了计算机软件故障。那么缺陷又是什么呢?
还是看上面的这个例子。真正的缺陷是计算机维护工程师提出来的那个问题:在主机的散热孔那里可以加装一层更加细密的金属网,即不影响散热,又可以防止虫子爬到主机里。这是计算机设计人员疏忽的地方,是产品真正的缺陷。而虫子引发的那个故障只是这个缺陷导致的故障的其中一种表现形式。也就是说,Bug是缺陷的一种表现形式,而一个缺陷是可以引起多种Bug的。