軟件構造 7-1 健壯性與安全性


健壯性與安全性

什么是健壯性與安全性?

如何衡量健壯性與安全性?

 

 

健壯性:系統或組件在存在無效輸入或壓力環境時一顆正確運行的程度。

健壯性編程關注異常終止和異常活動的處理。

 

健壯性原則:嚴於律己(滿足specification),寬以待人(接受各種輸入)

 

健壯性編程原則(把用戶當做小孩)

1.用戶會修改代碼,而且自己寫的還不對

2.用戶不會看specification(所以我們應該在他操作錯誤時返回明確的錯誤信息幫助其改正)

3.危險行為,我們不應當將信息暴露給用戶,以至於產生漏洞,使用戶專注於自己的代碼部分

4.使不可能發生的事情真的不可能發生。(指異常)

 

安全性:正確實現規格說明的能力

比較健壯性:

1.安:不會有不准確結果,無結果優於不准確。

2.健:總是嘗試做一些事情,確保軟件運行,即使有時會產生不准確的結果。

總;健壯性增加了對常見錯誤和非嚴重錯誤的容錯性。而正確性在遇到任何不完美輸入時會引發錯誤

例子:

 

 健壯性:對第三方和用戶更為友好。(在出現錯誤會提醒給他們第二次機會,而不是直接崩)

正確性:對開發者友好1.專注一種模式,所有要求都滿足。

          2.因為單一所以易於理解,易於維護

內外兼修

外部接口,(UI,輸入文件,配置,API等):使其健壯起來,盡可能的友善(就像公司前台),即使別人輸入的一堆垃圾我們也要微笑面對。 

內部模式:越簡單越好,最好100%的有用狀態。使用不變量和斷言使命令安全。拋出excpetion(大的不是具體的以保證最快拋出)

及對外健壯,對內正確

可靠性:系統在任何需要的規定條件下執行所需功能的能力

可靠性 = 健壯性 + 正確性

 

軟件災難的條款

error:在開發過程中的錯誤決定

defect:使程序偏離原來的目的

fault:在代碼中錯誤或者缺失該有的功能

failure:在在運行過程中fault的體現,在運行過程中與希望的行為相悖

 

通常 error - > defect/fault/bug - >failure

例子

 

 注意:

1.並非所有缺件缺陷都是編碼錯誤引起的,如遺漏需求

2.不是否有缺陷(defects)都必然導致失敗

3.在環境改變時缺陷會變為failure

4.單個缺陷可能會產生各種各樣的失敗現象

 

提高健壯性和正確性

1.健壯性安全性編程。(斷言,防御性編程,代碼審查,形式驗證)

2.發現failure的症狀(信息轉儲,棧追蹤,執行日志,測試)

3.找出潛在fault(debug,bug定位)

4.修復errors

 

如何衡量健壯性和正確性

1.MTBF:平均故障間隔時間,相鄰兩次故障之間的平均工作

2.MTBF的計算歷來與系統failure的定義

  a.導致系統不可使用的failure

  b.出現failure,但是系統仍可以運行

MTBF:可修復

MTTF:不可修復系統的平均失效時間

 

Residual defect rates:每千行代碼的產生bug數

1 - 10 正常工業軟件

0.1 - 1高質量代碼

0.01 - 0.1最好,嚴格安全的代碼

 

 接下來是本章的結構圖

 

 

 謝謝觀看

 


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com