時光倒轉到了我們還使用電子管技術制造計算機的那個年代,那是計算機的主機重達數噸,并常常占據整個房間的時代。在某個實驗室的某個平常的早晨,這個龐然大物突然停止了工作,我們的IT前輩們馬上就開始尋找出現這種情況的原因。憑借設計圖紙的引導,他們很快就圈定了可能發生問題的那一部分。在接下來的檢查中,他們發現這次故障原來是一只蟲子在經過兩只繼電器時造成了短路所致。在修復了計算機并重新開始工作之后,負責計算機維護的工程師把這次故障記錄在了一份備忘錄上,以便將來其他人遇到類似的情況可以迅速的找到答案。當然,他還寫了一份文檔給計算機的設計人員,希望以后在主機的散熱孔那里可以加裝一層更加細密的金屬網,即不影響散熱,又可以防止蟲子爬到主機里。
發現上面的區別了嗎?一只蟲子爬進主機引起短路的這個事件,更多的被我們稱為Bug,這個名詞一直從計算機硬件故障沿用到了計算機軟件故障。那么缺陷又是什么呢?
還是看上面的這個例子。真正的缺陷是計算機維護工程師提出來的那個問題:在主機的散熱孔那里可以加裝一層更加細密的金屬網,即不影響散熱,又可以防止蟲子爬到主機里。這是計算機設計人員疏忽的地方,是產品真正的缺陷。而蟲子引發的那個故障只是這個缺陷導致的故障的其中一種表現形式。也就是說,Bug是缺陷的一種表現形式,而一個缺陷是可以引起多種Bug的。