OO第四次总结

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


 1.测试

  测试:基于前置条件和后置条件对输入划分并抽样产生测试数据,检查方法执行输出是否满足后置条件

  优点:易于实施,工程广为采用

  缺点:无法确保正确性

2.正确性论证

  优点:折衷,形式验证与自然语言层次逻辑推理相结合

  缺点:无法确保自然语言层次逻辑推理的严谨性


 

二、调研OCL语言


 

1.概念  

  OCL(object constraint language),对象约束语言,是用来进行约束定义的、形式化的无二义的语言。它作为图形符号的补充,说明建模元素的有关细节。

2.OCL vs JSF

  相似点:

  (1).都有不变式、前置条件、后置条件

  (2).都采用形式化的逻辑语言,对程序设计进行约束

  不同点:

  (1).OCL支持上下文,但是JSF不支持

  (2).JSF约束的是类和方法,OCL约束的是对象

  (3).OCL有着丰富性和完备的可计算性,允许自然语言的表述


 

三、图


1.UML类图

2.时序图

3.状态图

 


四、学期总结


1.阐述四个单元模块知识点之间的关系

  第一单元:对象与类、OO程序构造、层次化设计

  第二单元:对象运行机制、线程交互、线程安全设计

  第三单元:过程规格设计、类规格设计、设计原则

  第四单元:自动化测试、基于规格的程序正确性证明、程序的模型化表示

  关系:前两个单元是训练代码能力,后两个单元是基于规格基于测试提高代码的质量。

2.梳理自己所设计实现的程序,分析自己在设计、测试和质量上的进步

  这个学期设计实现了多项式加减、电梯系列、IFTTT、出租车系列的作业,从一开始的面向过程程序、一个方法几百行到现在写的程序有了面向对象的影子,方法也只有几十行的规模。在接触了规格和测试之后,再回过头去看自己之前写的ALS电梯,真的会有一种惨不忍睹的感觉。现在再写程序,在设计之前我会好好构思,测试的时候会尽可能的全覆盖,代码质量也比之前的好多了。

3.阐述自己对工程化开发的理解

  对于工程化开发,要求代码有统一的规格,必须要规范、可扩展、可移植,且易于理解,对每个类都要进行很好的封装,对外提供接口,使其具有良好的移植性。在代码完成之后,要进行充分的测试或者正确性的论证,力求自己的代码能最大程度的满足需求。

4.对课程的任何期望或建议

  这门课是从第一周就开始很紧张的一门课,尤其是对于我这种没有java基础的小白。虽然一直在吐槽,但是在经过这么多次训练之后,也能理解课程组这么设计的原因。最大的槽点就是互测制度吧,希望课程组能修改一下互测的制度,减少疯狂扣分和随意无效的情况。想法是好的,程序有bug也应该吃到教训,但是不应该让学生觉得努力没有意义,也不应该成为某些人达到某些目的的工具:)

  

 

posted @ 2018-06-25 16:38  Headlights  阅读(115)  评论(0编辑  收藏  举报