健壮性
健壮性:系统在不正常输入或不正常外部环境下仍能够表现正常的程度。面向健壮性的编程主要有以下特点:
- 处理未期望的行为和错误终止
- 即使终止执行,也要准确/无歧义的向用户展示全面的错误信息
- 错误信息有助于进行debug
面向健壮性的编程总是假定用户是恶意的,可能对输入的东西进行任意情况的输入,因此可能对程序造成影响,如果健壮性没有做好的话,程序甚至可能会直接崩溃。健壮性的原则是Postel’s Law:对别人宽容点,对自己狠一点。也就是说对自己的代码要保守,对用户的行为要开放。
健壮性的编程要求程序员封闭实现细节,限定 用户的恶意行为。并且在实现代码的过程中考虑极端情况,没有“不可能”。
正确性
正确性:程序按照spec加以执行的能力,是最重要 的质量指标!正确性和健壮性相比较而言,正确性永不给用户错误的结果,健壮性尽可能保持软件运行而不是总是退出,两者在一定程度上而言是存在矛盾的。正确性倾向于直接报错(error),健壮性则倾向于容错(fault-tolerance)。
| 可能的问题 | 健壮性 | 正确性 |
|---|---|---|
| 浏览器发出包含空格的URL | 跳过空格 | 返回HTTP 400 Bad Request error 状态 |
| 视频文件有坏帧 | 跳过坏帧到下一个帧 | 停止播放,抛出错误 |
| 配置文件使用非法字符 | 忽视非法字符 | 终端提示配置出错 |
| 奇怪格式 |
健壮性与正确性:软件构造的关键考量

本文探讨了软件构造中的健壮性和正确性。健壮性关注系统在异常输入或环境下的稳定运行,强调处理错误并提供有用的错误信息。正确性则保证程序按规范执行,避免给用户错误结果。两者之间存在一定的权衡,健壮性倾向于容忍错误,而正确性主张严格报错。在设计时,通常对外接口注重健壮性,对内实现强调正确性。衡量健壮性可参考平均故障间隔时间(MTBF),而正确性则可通过残余缺陷率来评估。
最低0.47元/天 解锁文章
2514

被折叠的 条评论
为什么被折叠?



