OO Final Blog (第四次博客作业)

测试与正确性论证的效果差异


这此的测试是使用规格通过测试用例对实现方法正确性的检查,与平时测试时直接用数据输入输出判断不同,这测试针对每一个具体方法的实现,使用JUnit。

优点:

  1. JUnit能够快速地找到自己的bug。
  2. 对程序员很有帮助,因为我们不需要重复做数据输入输出判断。

缺点:

  1. 但要是代码规模增大,测试很难做到覆盖性的检查。
  2. 刚用的时候会感觉有点难。

正确性论证可以做到全面的覆盖,在论证过程中会找到了不少写不正确的规格。但是,它的工作量实在是太大了,除了单纯论证还要重构代码。

这两者配合使用,可以快速而全面地完成代码正确性的检查。而且这两者对程序员很有帮助,而会帮助程序员提高代码质量。

OCL与JSF


OCL是一个约束就是对一个(或部分)面向对象模型或者系统的一个或者一些值的限制。UML类图中的所有值都可以被约束,而表达这些约束的方法就是 OCL。在UML2标准中,OCL不仅用来写约束,还能够用来对UML图中的任何元素写表达式。每个OCL表达式都能指出系统中的一个值或者对象。因为 OCL表达式能够求出一个系统中的任何值或者值的集合,因此它具有了和SQL同样的能力,也就是说OCL也是一种查询语言。OCL的基础是数学中的集合论和谓词逻辑,并且它有一个形式化的数学语义,但是它并没有使用某种数学符号。因为虽然数学符号能够清晰的、无歧义的表达事物,但是只有极少的专家可以看懂。所以数学符号并不适合用于一个广泛应用的标准语言。(参考:https://www.cnblogs.com/zhoujg/archive/2010/12/21/1912294.html , https://en.wikipedia.org/wiki/Object_Constraint_Language)

相似:

  • 使用清晰的数学语义
  • 包含前置条件,后置条件和不变式。

不同:

  • OCL有监护条件,JSF没有。

 

总结 


 1。单元模块知识点之间的关系

  第一单元:

  基础的Java语言的训练以及面向对象编程思想的熟悉在这次单元有帮助于更了解Java语言的语法及使用,这与后面的三个单元做为以个基础。

  第二单元:

  集中的多线程训练,是任务最重的一个单元,在这次单元做了关于多线程的作业。

  第三单元:

  对出租车的完善设计以及规格训练,在这次单元作业也越来越复杂了,而对面向对象编程会很熟悉了。

  第四单元:

  测试的训练,对前三个单元的总结,在这次单元作业是测试我们做的前三个单元的作业,而完善设计我们做的程序。

2。设计实现的程序,测试,和质量的进步

  在第一单元,是我第一次使用Java语言写代码,第一次感觉很难而要想方法怎么实现作业。然后在第二单元及第四单元,虽然我自己写的程序还有许多Bug而有些作业都没有做出来的,但过了哲学期我感觉自己的能力有进步了。

  在测试上,在测试自己时我们自己应该会知道了怎么输入与他的输出是什么应该知道了,但测试别人的代码,有时候会遇到很多困难,比如:输入不匹配,等。但在最后单元老师介绍了JUnit这对测试者和开发者很有帮助。

  质量上我自己感觉有进步了很多,现在过了这学期我学了怎么写好代码,之前我写代码的时候并没有写注释,在这门课为了方便测试者我需要写注释,而最后单元老师也介绍了JSF,老师也教怎么写一个好的Documentation。

 

3。期望或建议

  我对这门课有很深的感觉,因为老师对我们学生也好,虽然作业很难,而Deadline也比较快,可是对我自己这是一个挑战,我自己希望这门课会有助于我们以后找工作的时候。因为我自己也是留学生,我只希望指导书将来会有英文版本的:) ,或者也可以给一点英文翻译的,因为有时候我自己会不太明白指导书的要求,而会误会设计要求。但对我来说这课程已经很好了,比我国家大学的难度更难,而老师讲课也让我明白了面向对象的概念。谢谢 !!

  

猜你喜欢

转载自www.cnblogs.com/zhangjinyuan9/p/9225997.html