面向健壮性和正确性的软件构造

目录

1 实验目标概述 1
2 实验环境配置 1
3 实验过程 1
3.1 Error and Exception Handling 2
3.1.1 处理输入文本中的三类错误 2
3.1.2 处理客户端操作时产生的异常 2
3.2 Assertion and Defensive Programming 2
3.2.1 checkRep()检查rep invariants 2
3.2.2 Assertion/异常机制来保障pre-/post-condition 2
3.2.3 你的代码的防御式策略概述 2
3.3 Logging 2
3.3.1 异常处理的日志功能 2
3.3.2 应用层操作的日志功能 2
3.3.3 日志查询功能 2
3.4 Testing for Robustness and Correctness 2
3.4.1 Testing strategy 2
3.4.2 测试用例设计 2
3.4.3 测试运行结果与EclEmma覆盖度报告 2
3.5 SpotBugs tool 2
3.6 Debugging 3
3.6.1 EventManager程序 3
3.6.2 LowestPrice程序 3
3.6.3 FlightClient/Flight/Plane程序 3
4 实验进度记录 3
5 实验过程中遇到的困难与解决途径 4
6 实验过程中收获的经验、教训、感想 4
6.1 实验过程中收获的经验和教训 4
6.2 针对以下方面的感受 4

1 实验目标概述
本次实验重点训练学生面向健壮性和正确性的编程技能,利用错误和异常处
理、断言与防御式编程技术、日志/断点等调试技术、黑盒测试编程技术,使程序
可在不同的健壮性/正确性需求下能恰当的处理各种例外与错误情况,在出错后
可优雅的退出或继续执行,发现错误之后可有效的定位错误并做出修改。
实验针对 Lab 3 中写好的 ADT 代码和基于该 ADT 的三个应用的代码,使用
以下技术进行改造,提高其健壮性和正确性:
⚫ 错误处理
⚫ 异常处理
⚫ Assertion 和防御式编程
⚫ 日志
⚫ 调试技术
⚫ 黑盒测试及代码覆盖度
2 实验环境配置
在 Eclipse IDE 中安装配置 SpotBugs

在这里给出你的GitHub Lab4仓库的URL地址(Lab4-学号)。
https://github.com/ComputerScienceHIT/Lab4-1180300616
3 实验过程
因为某些特殊原因,实验未完成,只用Spotbugs寻找了bug,还有增强了代码的健壮性,但是异常和日志都没有写

需要修改的程序只重写了FlightClient里面的comparator函数
4 实验进度记录
请使用表格方式记录你的进度情况,以超过半小时的连续编程时间为一行。
每次结束编程时,请向该表格中增加一行。不要事后胡乱填写。
不要嫌烦,该表格可帮助你汇总你在每个任务上付出的时间和精力,发现自己不擅长的任务,后续有意识的弥补。
日期 时间段 计划任务 实际完成情况

5 实验过程中遇到的困难与解决途径
遇到的难点 解决途径

6 实验过程中收获的经验、教训、感想
6.1 实验过程中收获的经验和教训
6.2 针对以下方面的感受
(1) 健壮性和正确性,二者对编程中程序员的思路有什么不同的影响?
正确性只需要考虑正确的思路,而健壮性则需要将所有的思路(正确的、错误的)都考虑进去
(2) 为了应对1%可能出现的错误或异常,需要增加很多行的代码,这是否划算?(考虑这个反例:民航飞机上为何不安装降落伞?)
需要对错误异常的代价和增加代码的代价进行平衡比较,选出最优结果
(3) “让自己的程序能应对更多的异常情况”和“让客户端/程序的用户承担确保正确性的职责”,二者有什么差异?你在哪些编程场景下会考虑遵循前者、在哪些场景下考虑遵循后者?
前者的工作量更大,但是更加负责任;在编写客户端、面向用户需求的程序时会考虑前者,在编写测试程序、不需要考虑异常(如算法测试)时会用后者
(4) 过分谨慎的“防御”(excessively defensive)真的有必要吗?你如何看待过分防御所带来的性能损耗?如何在二者之间取得平衡?
需要根据两者的代价进行平衡
(5) 通过调试发现并定位错误,你自己的编程经历中有总结出一些有效的方法吗?请分享之。Assertion和log技术是否会帮助你更有效的定位错误?
(6) 怎么才是“充分的测试”?代码覆盖度100%是否就意味着100%充分的测试?
并不是,代码覆盖度100%只代表编程时所考虑到的情况都测试了,并不代表所有的情况都测试了
(7) Debug一个错误的程序,有乐趣吗?体验一下无注释、无文档的程序修改。
(8) 关于本实验的工作量、难度、deadline。
因为个人身体原因,实验并未完成,但是在看实验手册时可以知道实验的难度和工作量并不小,编写文档、异常处理、日志都是新的尝试,即使实验临近截止,我在截止后也会把它完成的
(9) 到目前为止你对《软件构造》课程的评价和建议。
(10) 期末考试临近,你对占成绩60%的闭卷考试有什么预期?
希望可以开学后再考试,不要在线上考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值