oo第十五次作业

1.论述测试与正确性论证的效果差异,比较其优缺点。

测试与正确性论证的差异是,测试是从实践角度进行的,以大量的各种不同的数据来验证代码的正确性或是发现bug。而正确性论证是从逻辑推理角度进行的,相对于测试即使有大量数据也可能无法覆盖各个分支的情况,正确性论证可以完全覆盖代码所有的可能性。只要正确性论证的过程没有错误,也就可以证明程序是正确的。但是从难度来说,正确性论证的难度是要远远大于测试的。因为可以进行黑盒测试,无需了解代码内容。而正确性论证则是需要测试者需要深入代码的实现,去逐个论证代码实现是否严格遵守规格内容。在繁琐的过程中出现了一步错误都不能得出最后正确的结论。二者各有优缺点,在使用时应该是相互辅助的关系。在完整一份正确代码的工作中,二者缺一不可。

2.调研OCL语言,并比较其与课程所介绍的JSF规格之间的相似和不同之处。

同:二者都是形式化,声明,约束性语言,本质都是前置条件向后置条件的一个导向,对过程规格的关心程度有限。同时,二者都使用了数理化的逻辑,但是出于自然语言的转化困境,二者也都创立了一部分数理逻辑语言之外的,便于规范的新语法。

异:OCL语言有JSF语言所没有的监控条件部分,使得作为一种约束语言的约束真值表达性更为强大,同时,OCL的语法结构相较于JSF更为复杂,这使得他更便于规格的书写,但难于对于规格的验证。JSF语言比较于OCL语言多了Modifies域,更好的能够让书写者完成变量监控,同时JSF语言对布尔表达式的数理逻辑依赖性更强,这对书写者提升了抽象性的难度,但是在验证正确性和进行迁移的时候更为方便。

3.UML类图:

 

4.时序图:

 

5.状态图:

 

6.四个单元模块知识点之间的关系

这一学期我们学习了四个单元的知识。系统的了解了面向对象程序设计的过程以及工程化的开发过程。第一单元作为基础入门单元,介绍了面向对象程序的特点及描述方法等,让我们对面向对象有了初步的了解;第二单元开始,我们开始写多线程程序。这一部分介绍了多线程的实现机制、线程同步、冲突问题等,将多线程这个概念带入到了我的脑海中;第三单元则在多线程程序的基础上添加了规格描述的过程,主要介绍了JSF的规范书写和程序的规格化设计,这一部分重点就开始从写程序转移到设计与规范了;最后,第四单元着重介绍测试,包括JUNIT测试和正确性论证,重点又从规格转移到了测试。

7.心得体会

这一学期,这门学科,给我留下了太多回忆了。基本上人可以有的情绪在这门课中都已经出现过了。有完成作业,正确性颇高时的喜;有被莫名扣掉很多bug的怒;有还没完整完成就提交的忧;有期盼自己每次成绩的思;有因为自己能力不足而无效的悲;有到了最后ddl时还在猛赶作业的恐;还有得知自己应该不用去补给站的惊。种种复杂的情感,一周一周的在我心中呼啸而过,周而复始。要是比喻的话,说oo是献给小心脏的过山车应该不过分吧,而且一坐就是一个学期。我水平很低,只能常常为自己会不会进补给站而挣扎。不过在一次次挣扎中,也确实学到了很多知识。更重要的是,oo教会了我面对各种各样的需求时该如何思考,而不单单是上来就埋头傻干。我认为这才是最宝贵的东西。

原文地址:https://www.cnblogs.com/zhanghao16061096/p/9223473.html