测试与正确性论证
测试是经过构造一系列测试数据,经过对比程序的实际运行结果和预期输出结果来判断程序是否有bug的一种手段。同时,在测试的时候是默认看不到程序的具体实现的,即进行黑盒测试,例如每次OO做业的互测阶段。测试的具体方法是将输入进行划分,经过构造一个错误分支树,而后每一个分支构造一个或多个测试样例来对程序进行测试。其手段简单,易于实现,一般状况下能够覆盖大多数状况。但也能够看到经过测试的话是须要大量的测试数据的,若是在输入很麻烦的状况下,须要花费大量的时间。同时,就算全部的测试输入都是正确的,也不能保证程序的正确性,这一样是其缺点所在。java
正确性论证和测试不一样,是经过推敲程序的具体实现来论证程序是否正确,例如第十四次做业。其具体过程是对程序的每个模块,每个方法,经过数理逻辑的推导加上大量的文字描述将程序的整个逻辑梳理一遍。它的优势是很明显的,就是若是程序经过了正确性论证,那么这个程序的实现必定是正确的。可是缺点在于论证正确性须要大量的文字描述,工做量很大。算法
OCL语言与jsf
OCL对象约束语言是用来进行约束定义的,形式化的无二义的语言,于1995年由Warmer等人,在IBM设计成功,并开始使用。编程
OCL做为形式化语言,基本语言要素包括: 类型(基本类型,高级类型),操做,表达式,语句。安全
OCL语言做为图形符号的补充,说明建模元素的有关细节,例如:约束,前置条件,后置条件等。 多线程
OCL语言虽然是一种形式化语言, 可是它既具备形式化语言无二义性的特色, 又消除了形式化语言的复杂性。二者具备很强的类似性,即都是对于规格的形式话进行约束的语言。相比之下,jsf的主要组成是布尔表达式,能够说是简化版的OCL。OCL的要求更加严格,也更完善,但实现相对复杂,在要求不是很严格的状况下,使用jsf更能事半功倍。模块化
第十四次做业的UML
UML类图
UML顺序图

UML状态图

总结
- 第一单元主要是让咱们熟悉java的初级知识以及开始接触面向对象的思想。第一次做业的多项式做业要求不算严格,只须要用java完成便可。第二次和第三次做业则是在第一次左右的基础上新增了要求必须进行类的划分,这能够简单理解为开始oo编程。因此,经过第一单元的练习咱们才算是oo初级入门。第二单元则主要是多线程,其中多线程设计的知识点不是很难,难点在于数据的共享和线程安全的实现。例如第五次做业的多线程电梯,这也是大多数同窗的第一次oo通宵,此次做业的难点在于如何协调时间的同步问题以及线程之间的互斥访问。oo做业的特色在于代码能够在很短的时间以内写完,但剩下还须要花不少时间来完善细节和bug的修复。可是接下来的第六次做业的代码量倒是有点超乎想象,因为我本人在一开始写时思路有些问题,因此浪费了大量的时间在一个错误的算法上,固然最终此次做业的完成效果天然是很差的。第三单元开始进入了jsf的书写,经过这一单元的练习我对代码的规格化书写又有了新的认识,也认识到了代码规范的重要性。第四单元呢则主要是在前几回做业的基础上进行了部分修改,包括代码的规范书写,代码的正确性论证,这个时候再翻看前几回做业的代码以为真是惨不忍睹,不少莫名其妙的变量名以及一个方法超过100行等等,因此,我毅然决然的选择重构了。总的来讲,这四个单元之间确定是按部就班的关系,经过前面单元的练习来打好对后面做业的铺垫。
- 经过oo这门课的练习本身也是收获匪浅。前三次做业个人代码都是一个形式,即主方法中构造一个类,而后这个类的构造方法又构造新的其余类或方法来实现具体功能。一开始我还以为这个思路时不错的,但是后来仔细一想,这个和面向过程有什么区别呢,类与类之间没有实现数据的交互,简直就是面条式代码。因此后来个人设计方法有了新的变化,固然也参考了同窗的设计,首先要清楚各个类的职能,每一个类的变量和方法都作必定的限制,同时各个类之间尽可能不经过public属性了来实现数据的交互,而是经过其余的手段来实现数据共享。经过每次做业的练习,本身写的程序也算有了一点面向对象编程的影子。
- 工程化即系统化、模块化、规范化的一个过程。指将具备必定规模数量的单个系统或功能部件,按照必定的规范,组合成一个模块鲜明、系统性强的总体。工程化每每包含大量学科和学科分支的知识,是一个复杂的系统工程过程。咱们的这门课程也涉及了不少工程化设计的思想,虽然本身的实际开发能力并无达到那个水平,另外我以为咱们这门课接触更多的是规范化,对设计并无强调得那么多,因为后面几回做业是基于前几回做业的,因此不少设计留下的坑也没有注意,致使浪费了不少没必要要的时间。总体这门课学下来对工程化的感受并非特别深入。
- 经历了这学期,感触仍是蛮多的,学天然是学到了不少东西,另外就是以为这么课还蛮有意思,比其余不少(其实也就几门)吹上天的专业课体验要好,多是老师太负责助教们又太认真了吧。而后是说一说本身的建议,我我的感受平时的做业量有点大,倒不是由于完不成,而是在这样做业压力下,大多数同窗的重点是完成这门课的做业而不是认真听老师讲授内容,简单说就是听不听课无所谓,周五的课直接在宿舍写下一次做业了。因此仍是感受课程组能够减轻一些做业量,如何增强课上讲授的内容和平时做业的联系才是最重要的。