OO第四阶段总结

一、测试与正确性论证


 

  测试:对于每个方法,基于前置条件和后置条件对输入划分并抽样产生测试数据,检查方法执行输出是否满足后置条件。对于每个类和整个项目,构造覆盖性测试样例来测试能否正确实验类和工程的要求。

  优点:容易实施,工程采用较多。

  缺点:由于构造的测试样例可能无法覆盖到所有情况,无法确保正确性

  正确性论证:针对格式化的规格和代码实现,人工方式对代码逻辑进行分析,确认是否所有满足前置条件的输入都能产生满足后置条件的结果。

  优点:既容易实施,又能严格进行验证,将形式验证与自然语言层级逻辑推理相结合。

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

二、OCL语言


 

  OCL(object constraint language)对象约束语言。它是一种用于施加在指定的模型元素上约束的语言。OCL表达式以附加在模型元素上的条件和限制来表现对该对象的约束,其中包括附加在模型元素上的不变量或约束的表达式,附加在操作和方法上的前置条件和后置条件等。 

  与JSF的相同点:

  1、声明性语言,不会改变模型中的内容。

  2、形式化语言。

  3、无二义规范语言。

  4、类型性语言,每一个表达式都有类型。

  5、都有不变量、操作表达式、前置条件和后置条件。

  与JSF的不同点:

  1、OCL是基于数学的,但是没有使用数学符号。OCL的基础是数学中的集合论和谓词逻辑,但它没有使用什么数学符号。OCL取了自然语言和数学符号折中的方案,使用普通的ASCII字符来表达数学中同样的概念。而JSF主要使用数学符号。

  2、OCL的监控条件比JSF强大,JSF比OCL多了MODIFIES域。

  3、OCL相较于JSF更侧重于对类的约束。

三、UML类图、顺序图、状态图


 

UML类图

顺序图

状态图

四、总结


 

1、四个单元模块知识点之间的关系

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

  第二单元:对象运行机制、线程交互、线程安全涉及。

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

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

  四个单元的知识点层层递进,由浅入深,由实现代码到设计规格到正确论证,让我们明白完成一个工程代码的几个要素。

2、梳理程序、分析进步

  经过一学期的学习,自己独立设计完成了多项式的加减、多线程电梯、文件监控、出租车调度程序。这一学期可谓收获颇丰,我从一开始只会写过程化代码的java小白,变得能够写出不错的面向对象程序。从互测时拿到别人的代码无从下手,到可以系统、全面地分析别人的代码可能存在的bug。在代码质量方面,从初学这门课时不能很好地分析要求、bug百出到现在基本可以写出一份满足要求,质量也不错的工程代码。

3、对工程化开发的理解

  要实现工程化开发,代码首先要具有很好地可规范性、扩展性、可移植性。所以,需要严格遵循编码规范,正确编写规格,进行充分的测试,每个类提供接口,便于移植。良好的设计也极其重要,一个好的设计对于团队合作十分重要。代码也需要通俗易懂,便于维护。

4、对课程的期望

  希望课程组能够改进互测制度,对指导书中模棱两可的内容进行完善,规范申报bug的标准,避免恶意竞争。

posted on 2018-06-25 17:21  buaascse  阅读(148)  评论(0编辑  收藏  举报

导航