软件的军工六性
“軍工六性”是對指軍工產品六個方面的要求,包括穩定性、維修性、測試性、安全性、保障性和環境適應性,也稱之為通用質量特性。我結合軟件的研發,介紹如下:
穩定性(可靠性):一把槍,總得能穩定地發揮自己的性能。對照到軟件中,就是軟件得表現穩定,操作的輸出可預測。任由用戶有意或無意地亂輸入,系統總能給出正確的輸出。這需要嚴謹的設計邏輯,和嚴謹到苛刻的代碼編寫規范,規范養成習慣,成為代碼人(coder)的修養。
維修性:在規定使用條件下使用的可維修產品,在規定條件下并按規定的程序和手段實施維修時,保持或恢復能執行規定功能狀態的能力。在戰場上,壞了得好修。在軟件上,出錯了得容易定位Bug。這就要求出錯時,有簡潔清晰的提示信息(反倒:把錯誤消滅在肚子里,只告訴用戶“發生了一個錯誤”,具體是啥錯誤,你猜;-),在日志上有足夠的信息,能方便地定位錯誤位置,快速地驗證和修復錯誤。
測試性:產品能及時并準確地確定其狀態,并隔離其內部故障的一種設計特性。不用到真要修的程度,這個產品隨時能告訴你,它是可工作還是不可工作、是性能完好還是性能下降。就像我們的手機電池顯示電量百分比那樣。軟件需要對與自己相關的各種連接的資源和交換數據進行檢測,第一時間發現和報告問題。比如SQL執行很慢,不監測就不知道,可以通過框架去監測。前面說的是自測,后面說的是被測。即軟件操作的一切資源(如文件,網絡,甚至另一個軟件),都應該是可以模擬(Mock)的,這樣可以把軟件放到仿真環境中進行各種測試。
保障性:系統(產品)的設計特性和計劃的 保障資源滿足平時和戰時使用要求的能力稱保障性。不僅產品要好,還得好生產、好運輸、好儲存。不僅功能實現要正確,還要容易學習,操作方便,容易擴展,性能要好,兼顧美觀。
安全性:產品所具有的不導致人員傷亡、系統毀壞、重大財產損失或不危及人員健康和環境的能力。計算機世界的安全是一個系統工程,不是把安全模塊做好了就好了。而是要全流程安全。千里之堤,潰于蚊穴,任何一個的薄弱環節都可能成為入侵者的突破口。認為“加個防火墻就安全了”的這種思想就很不安全。
環境適應性:產品在其壽命期預計可能遇到的各種環境的作用下能實現其所有預期功能、性能和(或)不被破壞的能力。把常見的,極端的輸入都考慮在內,采用嚴謹的邏輯來思考和推敲如何寫代碼,就能把這件聽起來很難的事解決好。不能在極端情況下,系統處理結果不正確,比如用戶輸入一個數字后多敲了個空格,結果軟件就多發或多收一倍的錢。排序算法不能因為遇到某些特定的數字,就要耗費比平時多得多的時間才能完成排序。
不要認為以上軍工六性用在軟件很牛逼,標準很高,而應該認為這是起碼的要求。從現實來看,做到的還真不多,所以做到的還真牛逼。既要努力達到軍工六性的要求,也要不局限于它,把眼光放高放遠,才能做出更好的軟件。現實可能骨感,理想必須豐滿。
參考:
聽羅胖講“軍工六性” - 簡書
質量與可靠性工程師“密碼”必備(下)
總結
- 上一篇: 建行信用卡现金转出和现金分期有什么区别?
- 下一篇: Spark SQL 编程初级实践