一、健壯性
健壯性是指軟件對於規范要求以外的輸入情況的處理能力。
所謂健壯的系統是指對於規范要求以外的輸入能夠判斷出這個輸入不符合規范要求,並能有合理的處理方式。
另外健壯性有時也和容錯性,可移植性,正確性有交叉的地方。
比如,一個軟件可以從錯誤的輸入推斷出正確合理的輸入,這屬於容錯性量度標准,但是也可以認為這個軟件是健壯的。
一個軟件可以正確地運行在不同環境下,則認為軟件可移植性高,也可以叫,軟件在不同平台下是健壯的。
一個軟件能夠檢測自己內部的設計或者編碼錯誤,並得到正確的執行結果,這是軟件的正確性標准,但是也可以說,軟件有內部的保護機制,是模塊級健壯的。
軟件健壯性是一個比較模糊的概念,但是卻是非常重要的軟件外部量度標准。軟件設計的健壯與否直接反應了分析設計和編碼人員的水平。即所謂的高手寫的程序不容易死。
為什么印度人的軟件業在國際上要比中國的好,除了印度人母語是英語的原因外,更重要的是因為印度人嚴謹,他們的程序更有健壯性。印度的一個老程序員,月代碼量在一千行左右,這一千行代碼,算法平實,但都是經過仔細推敲,實戰檢驗的代碼,不會輕易崩潰的代碼。我們的程序員,一天就可以寫出一千行代碼,寫的代碼簡短精干,算法非常有技巧性,但往往是不安全的,不完善的。印度人的程序被稱作:傻壯。但程序就得這樣。
寫一段功能性的代碼,可能需要一百行代碼,但是寫一段健壯的程序,至少需要300行代碼。例如:房貸計算器的代碼,算法異常簡單,十多行就完成了,但是,這段程序完全不具備健壯性,很簡單,我的輸入是不受限制的,這個程序要求從用戶界面讀取利率,年限,貸款額三個數據,一般同學的寫法很簡單,一句
doubleNum = Double.parseDouble(JOptionPane.showInputDialog(null,"請輸入"+StrChars)) ;
就萬事OK了。
但是,真的有這么簡單么,開玩笑,這么簡單就好了,列舉以下事例
1,我輸入了負數
2,我的輸入超出了double類型所能涵蓋的范圍
3,我輸入了標點符號
4,我輸入了中文
5,我沒輸入
6,我選擇了取消或者點了右上角的關閉
這一切都是有可能發生的事件,而且超出了你程序的處理范圍,這種事情本不該發生,但是程序使用時,一切輸入都是有可能的,怎么辦,你只能在程序中限制輸入。
作為一個程序員,你如何讓你的代碼在執行的時候響應這些事件呢,我用了四十行代碼編寫了一個方法,用來限定我的輸入只能為正實數,否則就報錯,用戶點擊取消或者關閉按鈕,則返回一個特殊數值,然后在主方法增加一個循環,在調用輸入方法的時候檢查返回值,如果為特殊值,就返回上層菜單或者關閉程序。
二、魯棒性
魯棒性(robustness)就是系統的健壯性。它是指一個程序中對可能導致程序崩潰的各種情況都充分考慮到,並且作相應的處理,在程序遇到異常情況時還能正常工作,而不至於死機。