缺陷預防手段知多少
誰都不希望自己的軟體缺陷一大堆,特別是交付給使用者驗收時,哪怕只有一兩個缺陷爆發出來,也會讓使用者罵個狗血淋頭。
可是,要想交付的軟體沒有缺陷,達到95%以上的缺陷去除效率談何容易。即使花費了很大力氣去做軟體測試,遺留的缺陷依然居高不下。畢竟各種測試方法的缺陷去除效率只有35%(資料來自《軟體工程最佳實踐》)。
所以要控制軟體缺陷,不能僅靠後期的軟體測試。這種做法成本又高,而且效果也不好。
為什麼等到缺陷已經產生了,才去控制呢?如果使用缺陷預防技術,在缺陷產生之前就將其消滅掉,既省時省力,效果還好。
不僅如此,按照克勞士比的零缺陷理論,要想使產品質量零缺陷,就要一次把事情做對,而要一次把事情做對,減少出錯的機會,就要使用缺陷預防技術。所以如果我們能夠做好軟體的缺陷預防,還有可能實現軟體的零缺陷。
那麼,我們能夠使用哪些缺陷預防技術呢?
-
需求開發的缺陷預防技術(2種)
-
使用聯合應用設計和收集需求。
-
使用質量功能展開來獲得質量需求。
-
軟體設計的缺陷預防技術(1種)
正規的設計方法。
-
軟體編碼的缺陷預防技術(1種)
結構化的編碼方法。
-
軟體維護的缺陷預防技術(3種)
-
舊軟體程式碼更新之前,改造程式碼;
-
舊軟體程式碼更新之前,分析程式碼複雜性;
-
從舊軟體中移出易錯模組。
-
度量分析的缺陷預防技術(1種)
正規的缺陷和質量評估。
-
軟體驗證的缺陷預防技術(3種)
-
正規的測試計劃;
-
正規的測試用例結構;
-
測試驅動開發。
-
軟體變更的缺陷預防技術(1種)
正規的變更管理辦法。
-
專案監控的缺陷預防技術(1種)
SCRUM每日會議。
-
開發規範的缺陷預防技術(2種)
-
利用CMMI(軟體能力成熟度模型)。
-
使用PSP(個人軟體過程)和PSP(團隊軟體過程)。
-
特殊場景的缺陷預防技術(3種)
-
正規的安全規劃(用於高安全軟體);
-
六西格瑪方法(用於定製軟體);
-
使用者參與開發團隊工作(採用敏捷方法)。
以上的軟體缺陷預防技術共有18種之多,涉及到除了測試執行之外的所有的軟體工程活動以及測量分析和專案管理等活動。這些還不能說是全部的軟體缺陷預防技術。我們還可以在實踐中挖掘出更多的缺陷預防技術。
使用缺陷預防技術,一步步提高軟體缺陷去除效率,最終有望一次寫出無缺陷的程式碼,既有遠景也有現實意義。缺陷預防,值得我們去研究和探索。