OO学习总结(四)

一、 测试与正确性论证的比较

测试和正确性论证分别从用户角度和开发者角度对工程进行评估。前者能够评测程序在一般情况和可预见的特殊情况下的执行效果,后者能够较为全面地测试到每一个细节。

测试的优点:

  • 所需时间较短;
  • 能够较为全面地测试;
  • 样例编写容易;
  • 可保留样例,用于以后的回测;

测试的缺点:

  • 无法涵盖所有细节,测试样例不能保证以后在运行时一定不会出错

正确性论证的优点:

  • 逻辑严密;
  • 可信度更高;
  • 细节覆盖更广;

正确性论证的缺点:

  • 不易上手;
  • 测试时间成本高;
  • 对代码做了小改动,可能就需要对整个工程重新论证;

二、 OCL语言与JSF规格的比较

OCL(Object Constraint Language)语言是面向对象设计中对图形符号的补充,能够完善建模元素的相关细节。其与JSF规格有相似之处,也有不同。

相同之处:

  • 都是一种形式化的语言
  • 具有无二义性
  • 每个变量都有类型
  • 不会改变系统的运行状态
  • 都采用前置条件和后置条件对方法的运行加以约束

不同之处:

  1. 变量的类型:

    • OCL有自己的一套变量(如Integer, Real, String, Boolean, Set, Bag, Sequence)
    • JSF不仅支持Java语言定义的所有类型,还支持用户自定义的类型(比如有一个Request类, 则可以在JSF中用Request修饰变量)
  2. 变量的运算:

    • OCL对变量规定了可以进行的运算方式(如 Boolean类型的and, or)
    • JSF支持Java语言定义的所有运算方式
  3. 逻辑分支:

    • OCL支持if, else一类的逻辑分支。
    • JSF不支持if, else, while等逻辑分支。
  4. 上下文

    • OCL支持用context表达上下文
    • JSF不支持上下文表述。
  5. 符号系统

    • OCL用pre, post表达前置条件和后置条件
    • JSF用REQUIRES, EFFECTS表达前置条件和后置条件

三、 单电梯系统结构梳理

A. UML类图

B. 顺序图

C. 状态图

电梯:

调度器:

请求:

四、 学期小结

A. 知识点

B. 个人总结

通过这一学期的训练,我能感受到自己在面向对象设计与测试等方面的进步。

设计

  • 方法不会过于臃肿
  • 实现类层次的划分
  • 掌握多线程设计的基本原理
  • 避免死锁
  • 将具有联系的抽象数据归结于一个对象,通过对象来管理数据
  • 约束代码行为,各个类与方法只行使自己的职能

测试

  • 减少盲目测试和碰运气的测试
  • 学会根据规格进行测试
  • 学会根据参数构造不同输入组合
  • 使用Junit进行单元测试

质量

  • 提高鲁棒性
  • 确保程序能对每一种可能的输入组合做出响应

设计、测试和质量这三方面都是相辅相成的,好的设计+全面细致的测试当然能确保这是一份质量优秀的代码, 能写出质量优秀的代码+会设计当然也会促进测试能力。

C. 工程化开发

通过这学期的学习,我觉得工程化是指把系统的、可量化的、有序的方法应用到软件的开发和维护上来。 通过规格对代码设计进行约束, 或许有时候显得不那么灵活, 但正是这种“笨拙”使得整个工程的规范性大大提高, 减少了后续测试的难度, 提高了软件的易维护性。

工程化开发的一般流程:

需求分析-->概要设计-->详细设计-->编码-->测试-->验收-->维护

需求设计:深入了解和分析用户的需求,避免设计时不必要的改动。
概要设计:确定设计层次、模块划分、接口规范、数据结构、出错处理等。
详细设计:实现概要设计中各个模块的算法、调用关系、说明每一个程序的设计考虑。
编码:根据详细设计补充代码、完成系统的功能。
测试:对编写好的代码进行初步测试,通过后交给用户,由其确认各项功能得到正确实现。
验收:用户验收软件。
维护:根据用户需求和环境的变化,对程序进行部分或全部的修改。

软件工程化的优势

  • 降低软件系统的复杂性
  • 提高软件可靠性
  • 提高开发、维护、测试的效率
  • 减少系统内部的逻辑耦合
  • 提高人员协作的效率

D. 对课程的建议

  • 及时更新消息应。可以建一个大群,所有对指导书的更新和其他重大消息发布于此,不允许讨论。各小班另建客服群用于答疑。这样可最大程度避免有的同学错过消息。
  • 记录issue和各客服群中有价值的内容。可编成问答形式,用于以后助教的工作和答疑。(比如作为仲裁的依据)。
  • 鼓励独立思考。对于issue中有较大价值的提问(如激发了同学的广泛讨论),可对提问者予以一定程度的加分。
  • 否定恶意扣分。在仲裁时若发现有同学恶意扣分,可对其提出批评并记录在案。对于累犯者,可予以一定程度的扣分。所扣分数归被恶意扣分者所有。
  • 提高扣分门槛。若要报告被测试者的bug,测试者应提供充分的理由,对于理由不充分者,其所报告的bug不予以采纳。
posted @ 2018-06-24 09:26  xxxfff  阅读(233)  评论(1编辑  收藏  举报