测试和正确性论证的效果差别
- 测试:测试通常分为功能性测试和边界条件测试,功能性测试是为了保证程序可以完成要求的正常功能,边界测试是测试边界条件,好比游戏中地图越界的问题,通常来讲,若是不能正常处理边界条件,程序崩溃也是常常的事情。测试的优势是 效率比较高,缺点是即便全部的测试点都过了,也不能保证程序没有bug。
- 正确性论证:正确性论证是从代码逻辑的角度来论证代码是否有无bug,优势是可以全面覆盖程序正确性,缺点是十分繁琐,并且耗时多。目前各类招聘网站有不少测试工程师岗位,但却没有正确性论证工程师。可见,测试才是通常商业项目开发的重点流程。
OCL语言调研
调研OCL语言,比较和JSF的类似和不一样之处:
OCL(Object Constraint Language)直译是对象约束语言,OCL最先是由IMB在1995年提出的business engineering language,后被采用为正式规范语言做为UML(Unified Modeling Language)的一部分,目前的版本是OCL 2.0。
OCL和JSF类似,也有Precondition、Postcondition和Invariant,定义和语法以下:html
可见和JSF语法上差别比较大,相同之处是二者都是形式化语言,起约束定义的做用。
第十四次电梯做业Graph
类图UML
UML图中能够看出,单线程ALS电梯结构比较简单,至下而上首先是调度输入处理InputHandler,返回的Request集合经过main函数传递给Scheduler类,而Scheduler调度时结合电梯灯的状况,结果经过OutputHandler输出到控制台。
时序图
状态图
OO学期总结
模块知识点
本学期OO做业基本概况以下:git
做业 |
主要完成功能 |
1 |
多项式处理 |
2 |
单线程傻瓜电梯 |
3 |
单线程ALS电梯 |
5 |
多线程ALS电梯 |
6 |
文件系统IFTTT |
7 |
出租车:多线程 |
9 |
出租车:增长道路开关 |
10 |
出租车:增长红绿灯 |
11 |
出租车:增长类规格和LSP原则 |
13 |
单线程ALS电梯:Junit4覆盖测试 |
14 |
单线程ALS电梯:正确性论证 |
大体能够分为四个单元:正则表达式
- 第一单元:Java基础语法入门,掌握正则表达式
- 第二单元:多线程电梯,掌握基本的多线程和互斥处理
- 第三单元:出租车,继续多线程,程序套上图形接口
- 第四单元:重构代码、修复Bug以及规格化测试和JSF约束
设计、测试上的进步
本学期应该是大学以来代码量最多的一个学期,收获比较大。
感觉就是coding是最好的学习方式,看不太懂的东西,写着写着就会了。多线程
- 模块化:最开始写的面向过程式、面条式代码,中期发现修改功能很是痛苦,后期重构代码后可以保证大多数方法控制在40行之内。
- 设计进步:在后期重构的过程当中,设计上可以各个类的功能更加清晰。
- 程序规范:对各类变量的命名规范化,保证程序过一段时间还能看懂。
对工程开发的理解
- 工程开发通常须要严格的规范,以便组内可以互相看懂代码,好比命名和函数功能。
- git、maven等工具在工程开发中比较重要。
- 本身写的接口须要提供文档,方便别人使用。
课程建议
- 多线程部分难度跨度比较大,入门就写多线程捎带电梯接受不来。
- 对于Java SE的基础语法考察覆盖不够,好比泛型、Collection框架和图形界面如Swing。
- 课程后期的测试部分,恶意扣分比较严重,而且繁琐的正确性论证占用了大量的课余时间。