程式人雜誌 -- 2014 年 1 月號 (開放公益出版品)

你的程式是不是最後的版本,還會不會有 bug 啊? (作者:Bridan)

寫程式二十多年累積不少經驗,但是程式的臭蟲未曾少過,雖然一般性與邏輯性的問題較少,但是轉變成系統性的問題,也就是開始規劃新系統時,若有疏漏沒考慮到的情形,就會可能發生問題,小毛病通常容易補漏,但也遇過大問題要系統改寫。

不管是自己寫程式或是帶人進行一些程式開發,在專案末期,常常有人詢問我們軟韌體工程師們一個問題,你的程式是不是最後的版本,還會不會有 bug 啊?他們 期待聽到一個 OK 沒問題的答案,但是隔天又怕聽到程式有錯必須改版的情形 。以個人經驗,只要是人寫的程式,幾乎都會發生錯誤,那如何觀察程式版本是否穩定?較簡單的方法就是,觀察錯誤發生的頻度,也就是每天除錯次數要遞減,並且好幾天才出現一個錯誤,這樣的軟體才算穩定。

那有沒有數字指標,可以表達軟體沒有錯誤的信心程度?我有一個方法可以利用 卜瓦松( Poisson) 機率分佈 計算。 這個理論跟等公車的理論是相同的,假設某公車每十分鐘會開出一班,那麼十分鐘內沒有公車出現的機率是多少?

數學公式 說明
亂數 Y 屬於 Poisson 機率分佈
y=0,1,2,3..., 亂數 Y 屬於 Poisson 機率分佈
表示公車在固定時間內出現的平均次數
假設公車固定時間會出現一班,那沒公車出現的機會約 36.79 %

以這樣的方式來對比臭蟲出現率, 如果現在每天平均出現一個錯誤,那麼某天沒臭蟲的機率也是 36.79 %,連續三天沒臭蟲的機率約為 5 % ,這時候你可以有很高信心程度,認為軟體版本已經穩定,也就是說 解決完所有的 bug 再多等三天,沒有任何負面反應才正式對外軟體發行 ,這樣可以提高他人對你軟體穩定度的信心,當然緊急狀況就沒辦法等了。

至於 5% 是如何算出?我有兩種解法,留給數學高手補充。

(本文來自「研發養成所」 Bridan 的網誌,原文網址為 http://4rdp.blogspot.tw/2011/03/bug.html ,由陳鍾誠編輯後納入程式人雜誌)