Bug是缺陷的形象比喻,人們喜歡說Bug是因為可以把Bug當作"替罪羊"。軟體的缺陷明明是人造成的,有了Bug這個詞后就可以把責任推給Bug--"都是Bug惹的禍"。唉,當一隻Bug真是太冤枉了!
軟體存在缺陷嗎?是的,有以下典故為證。
編程大師說:"任何一個程序,無論它多麼小,總存在著錯誤。"
初學者不相信大師的話,他問:"如果有個程序小得只執行一個簡單的功能,那會怎麼樣?"
"這樣的程序沒有意義,"大師說,"但如果這樣的程序存在的話,操作系統最後將失效併產生錯誤。"
但初學者不滿足,他問:"如果操作系統不失效,那會怎麼樣?"
"沒有不失效的操作系統,"大師說,"但如果這樣的操作系統存在的話,硬體最後將失效併產生錯誤。"
初學者仍不滿足,繼續問:"如果硬體也不失效,那會怎麼樣?"
大師長嘆一聲道:"沒有不失效的硬體。但如果這樣的硬體存在的話,用戶就會想讓那個程序做一件不同的事,這件事也是個錯誤。"
沒有錯誤的程序世間難求。(摘自《編程之道》)
錯誤是嚴重的缺陷。醫生犯的錯誤最終會被埋葬在地下,從此一了百了。但軟體的錯誤不會自動消失,它會一直騷擾用戶。據統計,對於大多數的軟體產品而言,用於測試與改錯的工作量和成本將佔整個軟體開發周期的30%,這是巨大的浪費。如果不懂得如何有效地提高軟體質量,項目會付出很高的代價,你(開發人員)不僅沒有功勞,也沒人欣賞你的苦勞,你擁有最多的將只是疲勞。
怎樣才能提高軟體的質量呢?
還是先來聽一個中國郎中治病的故事吧!
在中國古代,有一家三兄弟全是郎中。其中有一人是名醫,人們問他:"你們兄弟三人誰的醫術最高?"
他回答說:"我常用猛葯給病危者醫治,偶爾有些病危者被我救活,於是我的醫術遠近聞名並成了名醫。我二哥通常在人們剛剛生病的時候馬上就治癒他們,臨近村莊的人都知道他的醫術。我大哥深知人們生病的原因,所以能夠預防家裡人生病,他的醫術只有我們家裡才知道。"
提高軟體質量的基本手段是消除軟體缺陷。與上述三個郎中治病很相似,消除軟體缺陷也有三種基本方式:
(1)在開發過程中有效地防止工作成果產生缺陷,將高質量內建於開發過程之中。這就是"預防勝於治療"的道理,無疑是最佳方式,但是要求開發人員必須懂得正確地做事(門檻比較高)。我們學習"高質量編程"的目的就是要在幹活的時候一次性編寫出高質量的程序,而不是在程序出錯后才去修補。
(2)當工作成果剛剛產生時馬上進行質量檢查,及時找出並消除工作成果中的缺陷-這種方式效果比較好,人們一般都能學會。最常用的方法是技術評審、測試和質量保證等(詳見本章1.4節),已經被企業廣泛採用並取得了成效。
(3)當軟體交付給用戶后,用著用著就出錯了,趕緊請開發者來補救,這種方式的代價最高。可笑的是,當軟體系統在用戶那裡出故障了,那些現場補救成功的人倒成了英雄,好心用戶甚至還寄來感謝信。:
[火星人 ] 提高軟體質量的基本方法已經有373次圍觀