要提高軟體缺陷去除效率,就必須要重視審查技術
很多專案團隊的去除軟體缺陷的手段,都是依賴於軟體測試,都是在軟體開發完成之後,將程式交由專業的測試人員進行測試。這樣的操作常常會由於前期遺留太多的bug,使得測試周期被拉長,測試的代價非常高昂。
實際上測試並不是去除軟體缺陷的唯一手段。在《軟體工程最佳實踐》中,給出了不同缺陷的最佳發現方法:
-
需求缺陷:正規的需求審查
-
設計缺陷:正規的設計審查
-
程式碼缺陷:靜態分析、程式碼審查、測試
-
文件缺陷:文件編輯、文件審查
-
不良缺陷:修復後的重新審查、修復後的靜態分析、迴歸測試
-
測試用例缺陷:測試用例審查
通常我們所說的軟體缺陷並不只是單純的程式碼缺陷。前期的需求缺陷和設計缺陷,最終都會反映到程式碼缺陷中。這些缺陷如果能夠在早期發現修復的代價很小,只需要需修改技術文件,再通過聯合評審就可以完成;而如果這些缺陷直到後期測試的時候才發現,就需要進行需求跟蹤,修改技術文件,制定修復方案,修改程式碼調整測試計劃和測試用例,進行迴歸測試,變更控制等諸多操作才可以完成,代價會變得非常之高。有資料表明後期發現缺陷的修復成本是早期的十倍!
當前對發現需求缺陷和設計缺陷的最有效的方法是審查技術。
審查就是由一些專家組成的審查組,對技術文件在逐頁進行審查,對程式碼逐行進行審查,以使程式碼和文件滿足相應的技術準則和規範,並且與使用者需求保持一致。
當然對於程式碼來說,在進行審查之前,最好應先進行靜態分析,由此可以先行消除一些語法錯誤以及在邊界條件、呼叫和連結方面的問題。靜態分析可以發現87%的常規編碼缺陷。這樣就會使得程式碼審查的內容更多地集中到工具不能完美取代的、必須由人來完成的邏輯問題的發現上。
審查所以有效,是因為人的大腦具有分析和處理歸納邏輯和演繹邏輯的能力。正因為如此,審查技術可以適用於任何軟體構件的缺陷去除上面。所以我們應當在整個軟體開發生命週期中,都應該使用審查技術。這樣才有可能使交付軟體的缺陷去除效率能夠達到90%以上。
最後,經驗資料表明在軟體缺陷去除效率的方法上,多數測試方法的效率低於35%,而審查的效率可以超過65%(當審查的範圍介於50%到80%),大約是多數測試方法的兩倍。
大多陣列織都是能夠以評審的方式進行需求和設計規範的審查,但有些程式碼的審查常常會由於資源的關係而沒有執行。鑑於審查技術具有超高的缺陷去除效率,所以我們應當注重需求和設計的評審績效,重視程式碼審查工作,以追求更高的軟體缺陷去除效率。