程序的健壯性和魯棒性


一、健壯性

健壯性是指軟件對於規范要求以外的輸入情況的處理能力。

所謂健壯的系統是指對於規范要求以外的輸入能夠判斷出這個輸入不符合規范要求,並能有合理的處理方式。
另外健壯性有時也和容錯性,可移植性,正確性有交叉的地方
比如,一個軟件可以從錯誤的輸入推斷出正確合理的輸入,這屬於容錯性量度標准,但是也可以認為這個軟件是健壯的。
一個軟件可以正確地運行在不同環境下,則認為軟件可移植性高,也可以叫,軟件在不同平台下是健壯的。
一個軟件能夠檢測自己內部的設計或者編碼錯誤,並得到正確的執行結果,這是軟件的正確性標准,但是也可以說,軟件有內部的保護機制,是模塊級健壯的。

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

不是硅谷,印度才是全球軟件精英向往之地

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

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

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

就萬事OK了。

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

  1,我輸入了負數

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

  3,我輸入了標點符號

  4,我輸入了中文

  5,我沒輸入

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

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

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

二、魯棒性

魯棒是Robust的音譯,也就是健壯和強壯的意思。
魯棒性(robustness)就是系統的健壯性。它是指一個程序中對可能導致程序崩潰的各種情況都充分考慮到,並且作相應的處理,在程序遇到異常情況時還能正常工作,而不至於死機。
比如說,計算機軟件在輸入錯誤、磁盤故 障、網絡過載或有意攻擊情況下,能否不死機、不崩潰,就是該軟件的魯棒性。
相應的處理,例如有異常處理 捕獲異常,避免發生越界讀寫等等,這些要靠程序員的經驗來完成。
所謂“魯棒性”,是指控制系統在一定(結構,大 小)的參數攝動下,維持某些性能的特性。根據對性能的不同定義,可分為穩定魯棒性和性能魯棒性。以閉環系統的魯棒性作為目 標設計得到的固定控制器稱為魯棒控制器。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM