测试是通过具体的测试用例来检验程序是否能正确的完成该测试用例,通过应用来检验程序的正确性;正确性论证是通过逻辑推演,从理论的角度按照一定的规范将程序抽象化进行论证。
测试的优点是构造简单,测试与实际应用更贴近,容易找出实际上易出现的bug,但缺点是难做到全面的覆盖,而且需要进一步确定bug出现的原因;正确性论证的优点是能够完备的论证程序的正确性,覆盖率高,缺点是过于抽象,容易脱离实际情况,做很多无用功。
OCL(object constraint language)对象约束语言,一种用来进行约束定义的,形式化的无二义的语言。OCL是一个类型语言,任何表达式的值都是属于一个类型的。这个类型可以是预定义的标准类型例如Boolean或者Integer,也可以是UML图中的元素例如对象。也可以是这些元素组成的集合,例如对象的集合、包、有序集合等等。
它与JSF的都可以用来在一定程度上描述对对象行为和状态的规范,而OCL作为一个相对完备的语言描述能力要强很多,严谨很多,相比之下JSF要比较自由一些。
UML图
顺序图
状态图
第一个单元主要学习面向对象编程的一些基础,包括继承、私有公有等;
第二个单元主要学习多线程的编程,要充分考虑线程间的信息传递,以及线程安全等问题;
第三个单元主要学习规格,在程序功能的基础上更多的为高效的工程化开发考虑;
第四个单元主要学习测试,在工程相对完备的情况下如何高效的对其进行检验,找出问题并改进。
代码能力略有提升,心态调整能力突飞猛进。
工程化开发意味着较大的规模以及较高的抽象程度,这种情况下的开发不能只考虑功能的实现,更要考虑程序的可读性,可扩展性,接口的规范性,维护的便利性,测试的完备性等很多因素,这需要更为规范的开发流程,更加严谨的代码编写。
从课程内容的角度,建议能够将测试和规格部分的学习适当提前,最后来学习这些更让人感觉是为了完成课程要求而去做,很难感受到其对于开发真正的帮助;
从课程体制的角度,不知从何说起...希望充分考虑课程对学生心理上折磨的问题吧。
原文:https://www.cnblogs.com/wynterr/p/9222309.html