OO最后一次博客
一、测试与正确性论证比较
测试是使用测试样例对程序进行检测而正确性论证则是根据代码的逻辑进行验证。
测试想要完全覆盖的难度较大,需要大量的样例才能达到近似的完全覆盖,而正确性论证则不需要花费那么大的精力,只需要根据代码的逻辑和规格进行一系列验证即可。
二者相互补充,相辅相成。正确性论证可能由于一开始设计的错误导致程序运行的错误,而测试则难以覆盖全面,二者相互补充之后便可以对程序进行充分的测试。
二、OCL与JSF
对象约束语言(Object Constraint Language),简称OCL,是一种指示用户建模系统中的限制方式。它是UML可选的附加内容,可以用来更好地定义对象的行为,并为任何类元指定约束。
与JSF的相似:二者都是形式语言,声明式的语言,都没有二义性,都有前置条件和后置条件以及不变式;
与JSF的区别:OCL每个表达式都是具有类型的,且具有许多的基本数据类型等,不像JSF一样完全使用逻辑表达式。
三、第十四次作业UML图
1.UML类图
2.UML时序图
3.UML状态图
四、学期小结
1、知识点小结
第一个单元主要讲的是面向对象语言的思想等,较为简单,也是为了让我们入门;
第二单元难度便加大了,开始进行多线程的相关训练,讲了多线程的机制、冲突等等;
第三单元便开始了规格化设计,主要是JSF语言的书写与程序的规格化设计;
第四单元则是代码的验证与测试,主要是单元化测试、正确性论证等。
这四个单元是循序渐进,相辅相成。
2、个人程序分析
这一个学期一共写了9个程序,从最简单的多项式加减到最后的出租车问题,可以看出代码的质量是逐渐提高的。
现在看前几次作业,发现当初的代码是那么的惨不忍睹,一个方法上百行,很难看出到底在写什么;而后面的代码便好了许多,方法也就十几行二十行,条理较为清晰,读起来也很方便,修改bug也很简单。尽管如此,代码还是有很大的进步空间,是可以再进行提高的。
3、工程化开发理解
工程化开发即是按照一定的规格设计进行程序的开发,便于团队间的合作,提高工作效率和降低成本。
良好的工程化,能降低沟通成本,实现更好的协同,节省开发和测试人员的重复劳动,降低发布的常见问题等等。
4、对课程的期望与建议
其实能提出的建议不多,一是希望指导书能详尽一点,同时后面几次作业互测的时候能把扣分点明确一下,以减少或避免恶意扣分现象的发生。
对于互测机制,其实没什么好说的,虽然确实很想吐槽但也很难想到更好的替代方法,全部让助教和老师来批改作业也很不现实。
至于期望嘛,自然是希望OO越办越好,能好好的锻炼一下学弟学妹咯。