OO第四次随笔

一、测试与正确性论证

  • 测试

    测试:基于前置条件和后置条件对输入划分并抽样产生测试数据,检查方法执行输出是否满足后置条件。

    优点:易于实施,工程广为采用,需要的时间更短

    缺点:无法确保正确性,很难测试全面

  • 正确性论证

    论证:针对格式化的规格和代码实现,人工方式对代码逻辑进行分析,确认是否所有满足前置条件的输入都能产生满足后置条件的结果

    优点:折衷,形式验证与自然语言层次逻辑推理相结合,逻辑严密,可靠性更高

    缺点:无法确保自然语言层次逻辑推理的严谨性

二、OCL语言

  对象约束语言(OCL语言)是一种用于施加在指定的模型元素上约束的语言。OCL表达式以附加在模型元素上的条件和限制来表达对该对象的约束,其中包括附加在模型元素上的条件和限制来表达对该对象的约束,其中包括附加在模型元素上的不变量或约束的表达式,附加在操作和方法上的前置条件和后置条件等。
  OCL和JSF用途相同,都是用于描述对象的约束规范的形式化语言,用这二者描述的约束都是没有二义性的。但是,OCL提供的语法体系更高级,它支持分支,并且定义了高级的数据结构比如群、集合、袋和序列等。而JSF只有逻辑结构,不支持分支,没有类似的对与数据类型的描述。

三、UML图

类图:

时序图:

电梯类的状态转化图:

四、整理总结一个学期所学所练

  4.1阐述四个单元模块知识点之间的关系

     我们四个单元模块分别是Java基础、多线程和线程安全设计、抽象与规格、测试和论证。这四个阶段在我看来是循序渐进、逐步深入的。首先Java是介绍了Java作为一门面向对象的语言的知识,并帮助我们形成了基本的面向对象的思维。为之后的多线程打下了一定的基础,而多线程编程则是很难但是很重要的一个知识点,它为我们提供了提高代码效率的手段,但是却需要我们时刻注意线程安全的问题。再后来的抽象与规格则是尽可能的使代码规范化,使合作编程的时候代码的可靠性提高。而测试和论证则是写完代码之后的工作,它要求我们以一种更加严谨的手段去测试和验证自己的代码的正确性。

  4.2进步总结

  在设计上:

    • 少了很多臃肿的方法和重复的代码段
    • 会留意类的层次和类的属性的划分
    • 养成在写程序前先想好架构的习惯
    • 熟悉了多线程编程

  在测试上:

    • 生成一些大的数据来测试代码
    • 用JUnit来根据前置后置条件覆盖代码
    • 比从前更重视代码的测试环节

  在质量上:

    • 代码的容错性比之前提高,尽量确保程序在任何情况下都不会crash

  在这门课之前,自己根本没有学过Java,也没有所谓的面向对象的思想,但是通过课程的训练,自己渐渐的学会了如何抽象以及如何合理规划自己的代码,但是还是存在着很多的不足,希望自己能再接再厉~

  4.3阐述自己对工程化开发的理解

    从前根本没有工程化开发的概念,只是觉得写好了代码就万事大吉,但其实工程化开发远不止写代码。在前期需要和用户沟通确定需求,并在此基础上对需求做出分析,确定设计层次、模块划分等等,然后才是编码工作,写完代码之后需要进行大规模全覆盖的测试,确保代码的正确性之后,才能交付使用。这一系列的步骤通常是由很多人完成的,在协作的过程中,需要用统一的约束来减少错误,例如JSF,这样可能会很麻烦,但确实能够降低软件的复杂度,提高可靠性。

  4.4对课程的任何期望或建议

    希望针对指导书的问题可以说的详细一点,有任何改动的话在通知版及时通知大家,最后,祝OO课程越来越好~

posted @ 2018-06-25 02:24  zzpp2333  阅读(143)  评论(0编辑  收藏  举报