OO第15次作业

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

  测试比较简单,只需要设计测试样例,并检查结果是否符合期望就可以检查程序是否有bug。而正确性论证需要写复杂的公式,需要进行严密的推理才能论证。测试的优点是操作简单,找bug也比较简单,缺点是不能覆盖所有的情况。正确性论证的优点是基本上能覆盖所有的情况,缺点是证明比较复杂。

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

  相似:都有前置条件和后置条件,都有不变式。

  不同:OCL是约束语言和查询语言,OCL是基于数学的,但没有使用数学符号,OCL是强类型的语言,是声明型的语言,OCL有监护条件。OCL是一种形式语言,可以应用于任何实现方式的非正规语言。对象约束语言对UML中图形或其他组件都没有控制权,它只是在使用时返回值。OCL并不能修改对象的状态,而是用来指示对状态的修改何时发生。OCL表达式以附加在模型元素上的条件和限制来表现对该对象的约束,其中包括附加在模型元素上的不变量或约束的表达式、附加在操作和方法上的前置条件和后置条件。

3. 根据第十四次作业的单电梯系统,针对调度器、电梯、请求队列和请求,至少整理出 一幅UML类图、一幅顺序图和一幅状态图,并使用图(graph)来表示出模型

UML类图:

顺序图:

状态图:

4. 整理总结一个学期所学所练

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

  第一单元主要是让我们先熟悉java语言,熟悉基本语法以及java编程的基本规则,这一部分的测试主要以公测为主,培养输入输出的规范性。第二单元是多线程电梯、IFTTT以及出租车,主要培养我们多线程的编程,如何编写多线程的程序。第三单元主要是JSF规格的编写,以及迭代器的实现。最后一个单元是覆盖率测试以及类实现正确性论证。四个单元环环相扣,循序渐进,我们编程的能力得到了很大提高。

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

  第一次作业是多项式,我当时连正则表达式都不会用,浪费了很多时间来判断输入的正确性。第二次作业学会了正则表达式,初步接触电梯。第三次作业实现更复杂的电梯。第5,6,7次作业实现多线程。第5次作业我连调度器都没有,写的很乱,我自己都不知道写的是啥。自从第六次作业开始,我逐渐学会了多线程编程,到第七次作业我已经基本掌握了多线程编程的要点。从第九次作业开始,我开始写JSF规格,这让我的代码更清晰易懂。第13次作业,我学会了如何进行覆盖率测试。第14次作业,我学会了如何进行类实现正确性论证。

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

  工程化开发最早我是从计算机组成这门课中听到的,它的意思就是规范人们代码的写法。本来人们的写法有很多,但应用了工程化方法之后,所有人的写法都统一了,这有利于找出自己代码的缺陷,以及编程能力的缺陷。

4.4 对课程的任何期望或建议

  这门课非常好,极大的提高了我们的能力,对本科生来说非常有用。虽然有些累,但总体来说还是很值得的。

猜你喜欢

转载自www.cnblogs.com/Aaa-14/p/9216712.html