软件构造-第六章-第一节-健壮性与正确性


软件构造第六章 第一节 健壮性与正确性

一、健壮性与正确性

1.1 健壮性

  1. 定义:系统在不 正常输入或不正常外部环境下仍能够表现正常的程度
  2. 面向健壮性编程:
    • 处理未期望的行为和错误终止
    • 即使终止执行,也要准确/无歧义的向用户展示全面的错误信息
    • 错误信息有助于进行debug
  3. 健壮性原则:
      Paranoia (偏执狂):总是假定用户恶意、假定自己的代码可能失败
      把用户想象成白痴,可能输入任何东西(返回给用户的错误提示信息要详细、准确、无歧义)
      对别人宽容点,对自己狠一点(对自己的代码要保守,对用户的行为要开放)
  4. 面向健壮性编程的原则:
    • 封闭实现细节,限定用户的恶意行为
    • 考虑极端情况,没有“不可能”

1.2 正确性

  1. 含义:程序按照spec加以执行的能力,是最重要的质量指标!
  2. 对比健壮性和正确性:
    • 正确性:永不给用户错误的结果; 让开发者变得更容易:用户输入错误,直接结束(不满足precondition调用)。
    • 健壮性:尽可能保持软件运行而不是总是退出; 让用户变得更容易:出错也可以容忍,程序内部已有容错机制。
    • 正确性倾向于直接报错(error),健壮性则倾向于容错(fault-tolerance);
    • 对外的接口,倾向于健壮性;对内的实现,倾向于正确性。
      Reliability(可靠性) = Robustness + correctness

二、如何评价健壮性与正确性

2.1 外部观察角度

  • Mean time between failures (MTBF,平均失效间隔时间):描述了可修复系统的两次故障之间的预期时间,而平均故障时间(MTTF)表示不可修复系统的预期故障时间。

2.2 内部观察角度

  • 残余缺陷率:每千行代码中遗留的bug的数量

文章作者: Demerzel Sun
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Demerzel Sun !
评论
 上一篇
软件构造-第六章-第二节-错误与异常处理 软件构造-第六章-第二节-错误与异常处理
软件构造第六章 第二节 错误与异常处理 一、JAVA中的错误和异常1.1 Throwable Throwable 类是 Java 语言中所有错误或异常的超类。 继承的类:extends Object。 实现的接口:implement
2020-05-16
下一篇 
软件构造-第五章-第三节-面向可维护性的构造技术 软件构造-第五章-第三节-面向可维护性的构造技术
软件构造第五章 第三节 面向可维护性的构造技术 一、基于状态的构造技术 基于状态编程 使用有限状态机来定义程序的行为、使用状态来控制程序的执行 根据当前状态,决定下一步要执行什么操作、执行操作之后要转移到什么新的状态 1.1
2020-05-10
  目录