zoukankan      html  css  js  c++  java
  • OO13-14总结

    1.论述测试与正确性论证的效果差异,比较其优缺点

      测试是过去我们常用来测试代码正确性的方法。而第十三次作业编写的junit代码,是对于每个函数,事先写好规格,再基于前置条件和后置条件对输入划分,利用多组测试数据,检查方法输出是否满足后置条件。

    • 优点:

      • 易于找出不符合前置条件后置条件的BUG。
      • 测试有针对性,编写起来方便快速。
    • 缺点:

      • 能够找出BUG,但不能保证程序没有BUG。
      • 覆盖一个函数所有可能需要构造的样例数目并不少。 
      • (由于规格写的不够全面严谨,许多方法的执行效果需要自己事先预估)

      正确性论证通过代码及代码规格进行逻辑分析,以论证代码是否符合设计。

    • 优点:

      • 全面覆盖。
    • 缺点:

      • 有些方法论证起来难度大,很难保证正确论证。
      • 进行整体的论证需要大量时间。
      • 建立在已有代码上,此时不太方便大改代码。

    2. 调研OCL语言,并比较其与课程所介绍的JSF规格之间的相似和不同之处

      OCL(Object Constraint Language)即对象约束语言,是一种指示用户建模系统中的限制方式。它可以用来更好地定义对象的行为,并为任何的类元指定约束。利用OCL表达式附加在模型元素上的条件和限制来表现对该对象的约束,其中包括加在模型元素上的不变量或约束的表达式、附加在操作和方法上的前置条件和后置条件等。

    相同:

    • 均有不变量、前置条件、后置条件这些用于限制行为的概念
    • 均有一个清晰、形式化的数学语义,希望能藉此达到无二义性

    不同:

      OCL有上下文、定义的基本类型和基本数据结构,还提供多种有语法表达式。因此更偏向于建模的OCL比JSF表达能力更强,且更加严密。


    3. 根据第十四次作业的单电梯系统,针对调度器、电梯、请求队列和请求,至少整理出 一幅UML类图、一幅顺序图和一幅状态图,并使用 图(graph)来表示出模型

       类图:

    时序图:

    状态图:

     

     4. 整理总结一个学期所学所练

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

      第一个单元是接触Java,接触面向对象语言。因此主要的任务量在于学习Java语法以来实现功能。

      第二个单元接触多线程。通过电梯、文件、出租车三连让我们了解线程安全控制。

      第三个单元开始集中设计,描述代码规格、抽象。让我们接触到工程软件设计。

      第四个单元开始对设计好的程序进行测试、正确性论证。

      因此大致是先做到能写出一个程序,然后了解怎样在程序中运用多线程设计,之后已有写程序的基础时让我们更注重设计抽象,使得设计程序更有规章。最后在交付程序前完成程序正确性的验证。

      4.2梳理自己所设计实现的程序,分析自己在设计、测试和质量上的进步

      设计上:当遇到要新写的功能时,会想到是否是一个类,怎样抽象状态功能。

      测试上:当时IFTTT的测试是整个程序一起测,因此找Bug需要依靠各种中间输出以及肉眼查错。而到后来的程序能够对每个方法进行测试,也因此找到了一些小Bug。

      质量上:不会出现第一次作业的一个方法100行。方法都能控制在30行。并且在变量命名上进步了,愿意写全一个单词了。

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

      工程化开发需要多个人合作开发一个程序。因此更强调一个规则,使得大家能够高效率的合作。

      就OO作业而言,大概就是认真读懂指导书,分析需求,在纸上认真画一下类和功能,最后细化。再根据issue(用户反馈?)对自己的程序进行修正。

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

      第一个建议是统一答疑群。因为有些问题助教们的意见并不相同,这样可以更好地统一标准。可以要求除问问题外禁水。

      第一个期望是适当减小作业量。在本学期的大半时间,我的一周都是OO。周六日读指导书,周一周二周三写,周四周五互测。(可能是我太菜的原因)

      第二个建议是统一issue、指导书、答疑。这样标准更统一。(建议追加助教工资使得助教们更加热情回答issue)

  • 相关阅读:
    HDU Problem 1811 Rank of Tetris【拓扑排序+并查集】
    POJ Problem 2367 Genealogical tree【拓扑排序】
    HDU Problem 2647 Reward【拓扑排序】
    HDU Problem 1285 确定比赛名次【拓扑排序】
    HDU Problem HDU Today 【最短路】
    HDU Problem 3665 Seaside【最短路】
    HDU Problem 一个人的旅行 【最短路dijkstra】
    HDU Problem 1596 find the safest road【最短路dijkstra】
    Beyond Compare文本合并进行内容替换要注意什么
    用这些工具都可以比较代码的差异
  • 原文地址:https://www.cnblogs.com/AAO972/p/9224661.html
Copyright © 2011-2022 走看看