一、健壮性
健壮性是指软件对于规范要求以外的输入情况的处理能力。
所谓健壮的系统是指对于规范要求以外的输入能够判断出这个输入不符合规范要求,并能有合理的处理方式。
另外健壮性有时也和容错性,可移植性,正确性有交叉的地方。
比如,一个软件可以从错误的输入推断出正确合理的输入,这属于容错性量度标准,但是也可以认为这个软件是健壮的。
一个软件可以正确地运行在不同环境下,则认为软件可移植性高,也可以叫,软件在不同平台下是健壮的。
一个软件能够检测自己内部的设计或者编码错误,并得到正确的执行结果,这是软件的正确性标准,但是也可以说,软件有内部的保护机制,是模块级健壮的。
软件健壮性是一个比较模糊的概念,但是却是非常重要的软件外部量度标准。软件设计的健壮与否直接反应了分析设计和编码人员的水平。即所谓的高手写的程序不容易死。
为什么印度人的软件业在国际上要比中国的好,除了印度人母语是英语的原因外,更重要的是因为印度人严谨,他们的程序更有健壮性。印度的一个老程序员,月代码量在一千行左右,这一千行代码,算法平实,但都是经过仔细推敲,实战检验的代码,不会轻易崩溃的代码。我们的程序员,一天就可以写出一千行代码,写的代码简短精干,算法非常有技巧性,但往往是不安全的,不完善的。印度人的程序被称作:傻壮。但程序就得这样。
写一段功能性的代码,可能需要一百行代码,但是写一段健壮的程序,至少需要300行代码。例如:房贷计算器的代码,算法异常简单,十多行就完成了,但是,这段程序完全不具备健壮性,很简单,我的输入是不受限制的,这个程序要求从用户界面读取利率,年限,贷款额三个数据,一般同学的写法很简单,一句
doubleNum = Double.parseDouble(JOptionPane.showInputDialog(null,"请输入"+StrChars)) ;
就万事OK了。
但是,真的有这么简单么,开玩笑,这么简单就好了,列举以下事例
1,我输入了负数
2,我的输入超出了double类型所能涵盖的范围
3,我输入了标点符号
4,我输入了中文
5,我没输入
6,我选择了取消或者点了右上角的关闭
这一切都是有可能发生的事件,而且超出了你程序的处理范围,这种事情本不该发生,但是程序使用时,一切输入都是有可能的,怎么办,你只能在程序中限制输入。
作为一个程序员,你如何让你的代码在执行的时候响应这些事件呢,我用了四十行代码编写了一个方法,用来限定我的输入只能为正实数,否则就报错,用户点击取消或者关闭按钮,则返回一个特殊数值,然后在主方法增加一个循环,在调用输入方法的时候检查返回值,如果为特殊值,就返回上层菜单或者关闭程序。
二、鲁棒性
鲁棒是Robust的音译,也就是健壮和强壮的意思。
鲁棒性(robustness)就是系统的健壮性。它是指一个程序中对可能导致程序崩溃的各种情况都充分考虑到,并且作相应的处理,在程序遇到异常情况时还能正常工作,而不至于死机。
比如说,计算机软件在输入错误、磁盘故障、网络过载或有意攻击情况下,能否不死机、不崩溃,就是该软件的鲁棒性。
相应的处理,例如有异常处理 捕获异常,避免发生越界读写等等,这些要靠程序员的经验来完成。
所谓“鲁棒性”,是指控制系统在一定(结构,大小)的参数摄动下,维持某些性能的特性。根据对性能的不同定义,可分为稳定鲁棒性和性能鲁棒性。以闭环系统的鲁棒性作为目标设计得到的固定控制器称为鲁棒控制器。