Object Oriented个人总结第四弹

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

测试是面对程序,构造样例进行验证,让程序运行,观察程序的运行结果和预期结果比较,来判断在这种情况下程序的正确性。有点像形式验证。

优点:相对容易,比较直观

缺点:不能保证绝对正确

正确性是根据规格推断程序的逻辑,检测是否完成任务。类似于逻辑验证。是进行测试的另一种方式。

优点:能够较好地保证验证效果。

缺点:繁琐复杂,不直观,成本高

 

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

OCL(Object Constraint Language)语言是面向对象设计中对图形符号的补充,能够完善建模元素的相关细节。其与JSF规格有相似之处,也有不同。

相同之处:

都是一种形式化的语言

具有无二义性

每个变量都有类型

不会改变系统的运行状态

都采用前置条件和后置条件对方法的运行加以约束

不同之处:

变量的类型:

OCL有自己的一套变量(如Integer, Real, String, Boolean, Set, Bag, Sequence)

JSF不仅支持Java语言定义的所有类型,还支持用户自定义的类型(比如有一个Request类, 则可以在JSF中用Request修饰变量)

变量的运算:

OCL对变量规定了可以进行的运算方式(如 Boolean类型的and, or)

JSF支持Java语言定义的所有运算方式

逻辑分支:

OCL支持if, else一类的逻辑分支。

JSF不支持if, else, while等逻辑分支。

上下文:

OCL支持用context表达上下文

JSF不支持上下文表述。

符号系统:

OCL用pre, post表达前置条件和后置条件

JSF用REQUIRES, EFFECTS表达前置条件和后置条件

 

 

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


类图:

 

 

时序图:

 

 

状态图:

 

 

 

四、 整理总结一个学期所学所练

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

第一单元概述面向对象,区别面向对象和面向过程。训练从类的角度看问题和事物。第二单元主要是多线程编程,学习并发时的同步与互斥。第三单元主要是JSF规格的撰写。学习如何通过规格约束代码,养成好的程序设计习惯。第四单元主要是测试与正确性论证,同样十分消耗精力。四个单元呈现出递进的层次关系,从单线程到多线程,从编写程序到测试程序到论证程序,从局部设计到整体规划,循序渐进。同时也是难度的增加,工程性的提高。

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

单个类的方法减少了,方法的行数也减少了。在设计上学会了提高多用性,提高代码的通用性。学会了形式验证的覆盖性测试和逻辑验证的正确性验证。同时大量的编程也提高了我的编程和debug能力。

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

工程化即系统化、模块化、规范化的一个过程。指将具有一定规模数量的单个系统或功能部件,按照一定的规范,组合成一个模块鲜明、系统性强的整体。工程化往往包含大量学科和学科分支的知识,是一个复杂的系统工程过程。我们这门课的作业的编写可能涉及到了许多工程化开发的思想,而实际的代码规模还谈不上工程化的水平。不过除了代码量之外,工程化开发重要的还是工程代码的可拓展性和可维护性,像是作业中的出租车系列,电梯系列,虽说都是基于前一次作业上稍加修改,但是在编写过程中能够很明显地感受到不同的设计方法,带来的拓展代价的差异巨大。

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

规范互测。

继续推行客服制度。

支持从一而终不换题目。

 

posted @ 2018-06-25 11:26  斗羽  阅读(191)  评论(0编辑  收藏  举报