天天看點

【架構設計】【程式名額】魯棒性與健壯性的細節差別 本文轉自:http://blog.csdn.net/bigpudding24/article/details/49069805 一、健壯性 二、魯棒性

本文轉自:http://blog.csdn.net/bigpudding24/article/details/49069805

一、健壯性

健壯性是指軟體對于規範要求以外的輸入情況的處理能力。

所謂健壯的系統是指對于規範要求以外的輸入能夠判斷出這個輸入不符合規範要求,并能有合理的處理方式。

另外健壯性有時也和容錯性,可移植性,正确性有交叉的地方。

比如,一個軟體可以從錯誤的輸入推斷出正确合理的輸入,這屬于容錯性量度标準,但是也可以認為這個軟體是健壯的。

一個軟體可以正确地運作在不同環境下,則認為軟體可移植性高,也可以叫,軟體在不同平台下是健壯的。

一個軟體能夠檢測自己内部的設計或者編碼錯誤,并得到正确的執行結果,這是軟體的正确性标準,但是也可以說,軟體有内部的保護機制,是子產品級健壯的。

軟體健壯性是一個比較模糊的概念,但是卻是非常重要的軟體外部量度标準。軟體設計的健壯與否直接反應了分析設計和編碼人員的水準。即所謂的高手寫的程式不容易死。

(不是矽谷,印度才是全球軟體精英向往之地)

為什麼印度人的軟體業在國際上要比中國的好,除了印度人母語是英語的原因外,更重要的是因為印度人嚴謹,他們的程式更有健壯性。印度的一個老程式員,月代碼量在一千行左右,這一千行代碼,算法平實,但都是經過仔細推敲,實戰檢驗的代碼,不會輕易崩潰的代碼。我們的程式員,一天就可以寫出一千行代碼,寫的代碼簡短精幹,算法非常有技巧性,但往往是不安全的,不完善的。印度人的程式被稱作:傻壯。但程式就得這樣。

  寫一段功能性的代碼,可能需要一百行代碼,但是寫一段健壯的程式,至少需要300行代碼。例如:房貸電腦的代碼,算法異常簡單,十多行就完成了,但是,這段程式完全不具備健壯性,很簡單,我的輸入是不受限制的,這個程式要求從使用者界面讀取利率,年限,貸款額三個資料,一般同學的寫法很簡單,一句

doubleNum = Double.parseDouble(JOptionPane.showInputDialog(null,"請輸入"+StrChars)) ;

就萬事OK了。

  但是,真的有這麼簡單麼,開玩笑,這麼簡單就好了,列舉以下事例

  1,我輸入了負數

  2,我的輸入超出了double類型所能涵蓋的範圍

  3,我輸入了标點符号

  4,我輸入了中文

  5,我沒輸入

  6,我選擇了取消或者點了右上角的關閉

  這一切都是有可能發生的事件,而且超出了你程式的處理範圍,這種事情本不該發生,但是程式使用時,一切輸入都是有可能的,怎麼辦,你隻能在程式中限制輸入。

  作為一個程式員,你如何讓你的代碼在執行的時候響應這些事件呢,我用了四十行代碼編寫了一個方法,用來限定我的輸入隻能為正實數,否則就報錯,使用者點選取消或者關閉按鈕,則傳回一個特殊數值,然後在主方法增加一個循環,在調用輸入方法的時候檢查傳回值,如果為特殊值,就傳回上層菜單或者關閉程式。

二、魯棒性

魯棒是Robust的音譯,也就是健壯和強壯的意思。

魯棒性(robustness)就是系統的健壯性。它是指一個程式中對可能導緻程式崩潰的各種情況都充分考慮到,并且作相應的處理,在程式遇到異常情況時還能正常工作,而不至于當機。

比如說,計算機軟體在輸入錯誤、磁盤故 障、網絡過載或有意攻擊情況下,能否不當機、不崩潰,就是該軟體的魯棒性。 相應的處理,例如有異常處理 捕獲異常,避免發生越界讀寫等等,這些要靠程式員的經驗來完成。

所謂“魯棒性”,是指控制系統在一定(結構,大 小)的參數攝動下,維持某些性能的特性。根據對性能的不同定義,可分為穩定魯棒性和性能魯棒性。以閉環系統的魯棒性作為目 标設計得到的固定控制器稱為魯棒控制器。

繼續閱讀