软件构造期末总结第七章

7.1 Robustness & Correctness
(1)健壮性:系统在不正常输入或不正常外部环境下仍能够表现正常的程度。
面向健壮性编程:
a.处理未期望的行为和错误终止
b.终止执行,向用户展示全面的错误信息
c.错误信息有助于进行debug
健壮性原则:Paranoia:总是假定用户恶意、假定自己的代码可能失败
面向健壮性编程的原则:
a.封闭实现细节,限定用户的恶意行为
b.考虑极端情况。
(2)正确性
含义:程序按照spec加以执行的能力,是最重要的质量指标
永不给用户错误的结果;用户输入错误,直接结束。
健壮性:尽可能保持软件运行而不是总是退出; 让用户变得更容易:出错也可以容忍,程序内部已有容错机制。

可靠性=健壮性+正确性

7.2 Error and Exception Handling
(1)Error的类型:用户输入错误、设备错误、物理限制
(2)异常(Exception):程序执行中的异常事件,程序无法按照设定程序执行。
异常处理:将错误信息传递给上层调用,并传递信息。若找不到异常处理程序,系统完全退出。
(3)checked异常的处理机制:异常中的LSP原则、利用throws进行声明、try-catch语句、finally语句

7.3 Assertions and Defensive Programming
(1)断言
作用:允许程序在运行时检查自己,测试有关程序逻辑的假设,如前置条件、后置条件、内部不变量、表示不变量、控制流不变量等。
目的: 在开发阶段调试程序、尽快避免错误。
(2)防御性编程
防御式编程的主要思想就是,子程序不应该因为传入错误数据而被破坏。其核心想法就是要承认程序都会有问题,都需要被修改。
防御式编码的最佳方式就是一开始代码中引入错误,使用迭代式设计、编码前先写伪代码、写代码前先写测试用例、底层设计检查等活动都可以防止。

7.4 Debugging
当程序中出现bug时,我们需要debug。
(1)bug产生原因
代码错误
未完成的要求或不够详细
误解用户需求
设计文档中的逻辑错误
缺乏文件
没有足够的测试
(2)debug
在这里插入图片描述7.5 Testing and Test-First Programming
我们应该养成好习惯,为我们的代码写测试用例,目的是为了检测和提高我们代码的正确性,增强代码能力。
测试有手写测试策略和利用JUNIT测试,此外,还需要测试代码覆盖度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值