oo第十五次作业

一、论述测试与正确性论证

   单元测试的特点是:针对程序编写测试代码、从结果验证、保证基本模块的正确性;

 正确性论证的特点是:通过分析代码进行逻辑论证、从原理验证、保证了基本模块和整体的正确性。

 对比两者,测试能更准确、快速地发现bug,验证过程更模块化,便于不同的程序员对同一个程序进行交互;正确性论证则全面地验证了代码的正确性,在写论证文档时,能够发现一些自己代码中一些逻辑错误以及结构上不合理的地方。但是在编写测试样例的时候,需要花费很多时间才能做到高覆盖率,而且对程序的整体性论证有些欠缺;正确性论证的缺点是理论分析不一定能够完全符合代码的内容。总的来说,两者结合,理论加实践,基本能够保证代码的正确性。

二、OCL语言调研

OCL时对象约束语言(Object Constraint Language)的缩写。为了解决约束表达问题,IBM公司设计了OCL,经过发展,OCL已经为标准化组织OMG所接受,成为UML标准的一部分。OCL语言虽然是一种形式化语言,但是它既具有形式化语言无二义性的特点,又消除了形式化语言的复杂性。它是一种精确的、无二义性的语言,它包含的集合类型有Collection, Set, OrderedSet, Bag和Sequence。语言要素包括类型,操作,表达式和语句。

OCL与JSF的相同点在于他们都是形式化的约束语言。OCL包括的不变量、前置、后置条件、监护规则对应着JSF中的repOK、REQUIRES、EFFECTS、MODIFIES。不同点在于OCL相比JSF要复杂的,因为它要保证严格的无二义性并且遵守一些列规范,复杂到几乎是一门编程语言。而我们使用的JSF确实简化的多,也相对容易书写。

三、十四次作业UML

UML类图

 

UML顺序图

 

UML状态图

 

四、学期总结

(1)单元模块知识点关系

      第一单元主要是对JAVA基础知识的学习,通过一些比较基础的作业,初步了解面向对象的思想。从第二单元开始,就出现了多线程程序。更多地学习了一些设计原则和线程安全的知识。第三单元开始进行jsf的编写,让我们更加了解工程和软件开发,第四单元是单元测试和正确性论证,更偏向于测试与验证,使得我们对工程化方法认识更加清楚。

(2)进步

   这学期学了一门新的语言java,而java这门语言和我们之前学过的语言都不相同,它是面向对象语言,这使得我了解到了面向对象编程思想,这学期每次作业都需要先提前构思好,一步一步来才能将代码很好的实现好,在代码质量上也进一步提升,代码风格和规范性上也有进步。

(3)理解

       大二上学期在学计组是接触了工程化的思想,这学期的oo课进一步对这一思想进行了学习,我认为工程化的推进只是为了提高效率和降低成本。这里说的效率和成本,并不只是公司层面,还包括个人。良好的工程化,能降低沟通成本,实现更好的协同,节省开发和测试人员的重复劳动,降低发布的常见问题等等。

(4)建议

    其实oo课真的能学到不少东西,对自己的编程也有很大提高,不过这门课上需要花费的时间真的好多,希望能将作业的周期延长一些,让同学有充足的时间进行设计。

posted @ 2018-06-25 17:23  jun_xiao  阅读(109)  评论(0编辑  收藏  举报