一、测试与正确性论证差异对比

测试,顾名思义,就是用一些有意义或无意义的输入去检测程序的正确性或鲁棒性,因其直观明了所以在写简单的程序时我们能迅速找出bug并加以解决。并且,这种方式是绝对客观的,只要和正确结果不匹配那么程序就一定存在一些问题。测试最大的缺点便是无法完全覆盖所有情况,即使很大的测试数据也可能跑不出来某些细微的bug,但这种bug有可能是致命的。

正确性论证则是从代码逻辑角度去分析代码,它的好处便是可以完全覆盖程序的所有情况并加以分析,只要分析不出错就能保证程序不出错,但这种方法的缺点也比较明显,需要耗费大量时间和精力去完成这一工作,并且这种方法的正确性是建立在规格正确的基础之上的,一旦规格不完善也将导致该方法出现纰漏。

总之,两种方法各有利弊,在面对复杂程序时两种方法都显得比较吃力,但若只考虑正确性,那正确性论证无疑要比测试来的可靠。但如果程序本身实现的功能不多,那么靠测试用例轰炸一番基本就不会遗留bug了。

二、OCL与JSF的异同

  OCL(对象约束语言)是一种形式化语言,它用于对设计对象进行约束,主要是在UML模型中施加于模型上的约束。OCL是一种精确的,无二义性的语言。其只是一种规范说明性语言,所有有关实现的问题都不能通过OCL来进行表达。另外,它是一种类型化语言,OCL中的每一个表达式都是具有类的。但是,不能用OCL编写程序逻辑和控制流程。

  与JSF的对比

  相似的点:

  (1) 都是一种约束语言,用于对程序的设计进行约束。

  (2) 都具有统一的标准。

  不同点:

  (1) OCL语言是精确的,没有二义性,而对于同一个程序不同人可能会写出不同的JSF。即JSF具有更大的开放性。

  (2) OCL主要是对对象进行约束,JSF的则是对类和方法进行约束。

  同样的,两者各有优缺点,没有明显的优劣之分。

三、 类图、顺序图、状态图

类图

时序图

状态图:

四.学期总结

(1).

  第一章介绍了一些JAVA语言的基本知识和简单的面向对象思想,相对后面的课程来说可以算作一个小小的过渡(虽然相比计组的初始阶段还是难上不少)。

  第二章开始了噩梦一样的多线程程序设计,从第五次作业的三电梯开始,生活对话中充斥着以“你三电梯会写吗”,“synchronized咋用”等开始的对话。正是在这一章的学习和多线程作业的编写中让我理解了多线程程序编写的困难之处(我不会再骂那些多核优化差的游戏了),但也正是这一阶段的训练加深了我对多线程和并行的理解,在程序的设计上有了很大的提高。

  第三章则在多线程程序的基础上添加了规格描述的过程,主要介绍了JSF的规范书写和程序的规格化设计,这一部分重点就开始从写程序转移到设计与规范了;

  最后,第四章着重介绍测试,包括JUNIT测试和正确性论证,重点又从规格转移到了测试。

(2).

  总体上是从0学习了一门全新的语音,刚开始的时候,是很困难,因为一点java的写法都不明白,所以第一次很吃力,但是后面慢慢适应了,感觉有些好转,多线程可以说是又一场灾难,又是一次从0开始的起步,所以第一次的多线程电梯写的很烂漏洞百出,但是后面多线程的出租车慢慢的不断优化,也算是有了一个很不错的结果,总体上是学习了一些新产品。后面就是在代码风格,规范性等等各方面的学习,了解了这些规范化的写法。

(3)

  首先是开发上的问题。开发者一定要对程序进行规格化描述,这样方便测试者对于代码的测试。另外,需要遵循一定的设计原则,使得代码的可移植性高,方便重构,否则会对之后的更新完善带来不小的麻烦。然后是测试的问题。如何对软件进行合理有效的测试也是工程化开发的重要问题。因为,一个软件的测试所需要花费的时间往往是开发的数倍。进行高效的测试便可以大大缩短工程的时间。

(4)

  oo总体上来说难度是很高的,尤其是第一次java作业和第一次多线程的作业,但是也很人性允许有几次的无效。所以若是肯花一些时间的话还是能够保证不被挂科的。若是能够在入门的时候讲的更加的详细,更加的平滑的提升难度可能会好一些吧。互测的话,可以加入一个类似隐藏分的东西吧,把那些乱胡扯的人的隐藏分降低(根据被申诉的次数判断或者别的什么)。可能现在的骂声会少一点吧。

OO学期总结的更多相关文章

  1. 2019年北航OO第四单元(UML任务)及学期总结

    第四单元两次作业总结 第十三次作业 需求分析 本次作业需要完成一个UML类图解析器,所需要解析的只有符合UML标准和能够在Java 8中复现的UML类图.查询指令存在两种:仅与所查对象有关的指令,以及 ...

  2. UML系列——OO Unit4分析和学期总结

    一.本单元的架构设计 1.类图 第一次 第二次 2.关键方法和架构简述 总体而言是读取图的时候就完成大部分计算(完成缓存),调用查询方法时只是展示计算的结果,少部分直接计算.主要是设计了各种自己定义的 ...

  3. 返璞归真——OO第四单元总结暨学期总结

    本次作业是第四单元的最后一次作业,也是本学期面向对象的最后一次作业,在此我将分别对第四单元和整个学期进行总结. 一.本单元的两次作业 第四单元的作业是关于UML的一些处理.UML语言是一种区别于具体语 ...

  4. OO第四单元总结暨学期总结

    一.第四单元作业架构设计 我们第四单元围绕UML图展开,在第四单元开始之前,本来以为我们的工作是学习如何使用UML工具,开始后才意识到我们要做的是解析UML类图.顺序图和状态图.当然,让我们解析的只是 ...

  5. OO第四单元总结及学期总结

    目录 OO第四单元总结及学期总结 第四单元三次作业架构设计 第十三次作业 第十四次作业 第十五次作业 四个单元中架构设计及OO方法理解的演进 第一单元 第二单元 第三单元 第四单元 四个单元中测试理解 ...

  6. OO第四单元总结 and 学期总结

    第四次单元总结 本单元架构设计总结 第一次作业:类图解析 本次作业仅仅需要实现官方的UmlInteraction接口,通过反射机制在Runner中实例化一个我们实现的类,来进行类图元素的分类解析,从而 ...

  7. 北航OO(2020)第四单元博客作业暨学期总结

    一.第四单元架构设计 1.第一次作业 我在本次作业中设置了多个储存结构:Directory,ElementsInName,ElementsInId,Cache. Directory: 顾名思义,这是个 ...

  8. oo第四次博客-UML暨学期总结

    一. 本单元两次作业架构设计 这两次作业实际上难度不大,不存在算法上的难题,大部分时间都是用在处理UML图中各个元素的关系上. 第一次UML主要处理UML类图.有UMLclass,UMLinterfa ...

  9. OO第四单元及学期总结

    OO第四单元及学期总结 第四单元两次作业的架构设计 第一次作业 类图: 树形结构:使用Operation类管理UMLOperation以及parent为该UMLOperation的参数(UMLpara ...

随机推荐

  1. JavaScript:鼠标拖拽效果

    (之前的那个模板方法模式实在没搞懂...等几天再去研究8) 预览效果: 限制拖动范围在视口内.调整窗口时自动居中... <!DOCTYPE html> <html lang=&quo ...

  2. NFS存储服务

    NFS存储服务笔记======================================================================NFS共享存储是什么: 英文名-Netwo ...

  3. mybatis学习1

    一.mybatis步骤 1.根据xml配置文件(全局配置文件)创建一个SqlSessionFactory对象 有数据源一些运行环境信息2.sql映射文件:配置了每一个sql,以及sql的封装规则等. ...

  4. css:伪类和伪元素

    一:伪类 1.   :active   想被激活的元素添加样式 2.   :focus   向拥有键盘输入焦点的元素添加样式 3.   :hover   当鼠标悬浮在元素上方时,向元素添加样式 4.  ...

  5. leetcode数据库题目及答案汇总

    1. 第二高的薪水 select ifnull((select distinct Salary from Employee order by Salary desc limit 1,1),null) ...

  6. 5.SLB排错思路

    500/502/504可能的原因: https://help.aliyun.com/knowledge_detail/55207.html 请求不均衡可能的原因: https://help.aliyu ...

  7. fsync和fdatasync

    在看LevelDB源码的时候,看到PosixWritableFile类的Sync函数用到了fsync和fdatasync两个Linux系统调用来将文件的修改同步到磁盘上,所以粗浅的学习了一下这两个系统 ...

  8. tabpanel如何隐藏页签表头以及基本用法总结

    tabpanel是extjs中一种比较常用的布局容器控件,也比较简单. ///1:相关的插件, var tabScrollerMenu = Ext.create("Ext.ux.TabScr ...

  9. MySQL多实例的环境下,服务器端本地连接到指定实例的问题(sock方式连接)

    涉及到sock连接的问题. 为了测试MySQL的某些个特性,在一个机器上安装了多个MySQL的实例,如下截图,有两个实例,一个端口是8000,一个端口是8001.在使用mysql -uroot -p ...

  10. 字符IO流

    输入 FileReader的用法: 1. 找到目标文件 2. 建立数据的输入通道 3. 读取数据 4. 关闭资源 具体实例:从硬盘中读取文件 输出 FileWriter的使用步骤: 1. 找到目标文件 ...