OO第四次作业总结
一:测试与正确性论证的效果差异
首先,测试和正确性论证都是对程序的可靠与否,是否有误进行测试,从整体上来看,测试多偏向于实践,而正确性论证则大多偏向于理论。
测试:测试首先是构造一组测试样例,之后将程序用这组样例运行,将得到的结果与预期的结果进行对比,来进行程序的正误判断,若程序得到的结果与预期不符,就查找测试程序所覆盖处的代码,对每个地方进行勘察以找出错误之处,找到之后即刻进行修改,这样重复进行,直至将代码部分全部覆盖,反复多次去查找存在的bug,复现它并解决它。测试的好处在于实现起来十分简单,只要找到一组输入数据就能对应一种情况的测试,再者,它不仅可以测试程序的正确性,还能运行程序,从而能在程序的性能方面进行研究,更偏向于实践,在现实中使用较广。但测试也存在一定的缺点,对于输入情况较少的程序,测试起来较为简单,但对各种各样输入情况复杂的程序,能够完全覆盖程序运行时的每一点实在太难了,往往会耗费大量的精力去进行测试。
正确性论证:正确性论证是从程序的规格出发,基于规格对代码进行逻辑上的论证,从而确认某一类或某个方法是否正确。正确性论证的有点在与:对于规格化实现的程序,能很好地对代码进行彻底地复查,能很好地覆盖到所需要论证程序的每个类每个方法,这是测试无法保障的,此外正确性论证是从原理出发,从根本上确保了论证方法的正确性。正确性论证的缺点在于,它是针对已实现的程序进行论证的,只能证明程序的实现过程不具有问题,但若程序的设计从根本上是存在问题的,这就不是正确性论证能解决的,并且对于程序代码量过大(如一个方法超过50行)则很难进行正确性论证。
二:OCL和JSF的比较
OCF语言是一种对象约束语言,他是一种施加在指定模型元素上的语言。OCL表达式以附加在模型元素上的条件和限制来表现对该对象的约束,其中包括附加在模型元素上的不变式和约束的表达式,附加在操作和方法上的前置条件和后置条件等。对象约束语言是一种形式化的语言,它主要用于表示UML模型中施加于模型上的约束。OCL特点如下:
(1)OCL是一种精确的,无二义性的语言
(2)OCL是一种规范说明性的语言,所有有关实现的问题都不能用OCF来表达
(3)OCL是一种纯表达性语言,它是具有没有任何副作用的申明性语言
(4)OCL是一种类型化语言,即OCL的每一个表达式都是具有类型的
(5)OCL不是一种程序设计语言,不能用OCL编写程序逻辑和控制流程
与JSF的对比如下
(1)JSF是针对类和方法而产生进行约束,而OCL是对对象进行约束而产生的
(2)OCL的语言是精确的,没有二义性,而JSF相对较为开放,同一段程序可以有不同的写法。
三、类图 时序图和状态图
类图
时序图
状态图
四、课程总结
1.四个单元模块之间的联系
第一个模块:学习了面向对象语言java中的基本思想,知道了java面向对象的几个基本概念:继承、重载与重写、多态、抽象类、封装、接口等等,这一章让我们从之前学c语言时的基本的面向过程的思想转为面向对象思想,是将之前一长段的代码逐渐分割成较为简单的每个类的过程,也是在这里也开始会用java语言写一些简单的程序。
第二个模块:在第一模块的基础上,去学习更复杂的多线程编程,将各个进程之间用共享资源进行限制,更有效的提高了程序的运行效率。
第三个模块:类和方法上规格的实现,要求我们要依据规格去写程序,好的规格能让我们写代码的思路更为清晰简介。
第四个模块:对程序的正确性进行判断,用了两种方法:测试与理论的正确性论证,两种方法各有优劣,能在不同方面去测试程序的正确性。
2.自己的进步
在一开始学习这门课的时候,我是崩溃的,因为自身对于java语言这方面完全不了解,但在不断学习中,逐渐会写一些java语言的程序,明白了将一个程序的各个部分划分为多个抽象对象,这些抽象对象含有一定的属性和各类方法对对象的 属性进行改变和判断,简洁有效地对一个程序各个需求部分进行分析处理。原本以为写一个程序最麻烦的是写的阶段,在不断地做测试的过程中明白了测试才是写一个程序的大部分,在不断的测试中,不断发现程序存在的bug,并不断修复它,而这个修复过程是尤为繁琐的,不仅要找到错误的地方,还要分析是什么情况导致了错误,修改时会不会造成其他情况的错误等等,在后面写程序的过程中,测试几乎成了最烦的问题,分类划分各种情况,然后一块块测试,这是在测试中养成的良好习惯。
3.对工程化的理解
在我看来,工程化程序开发它不同于简单的编写程序,个人编写程序只需考虑自己能看懂即可,而工程化开发则要求自己的程序能让别人读懂,并且自己的程序绝对不能有错误,工程化开发往往需要大量的时间,由每个人负责一部分,这就很要求代码的可读性,因此规格化的设计就显得尤为重要,在测试方面,要充分覆盖程序存在的每个输入输出,使自己撰写的部分不能有一点错误,一点错误的存在就会导致整个程序出现故障进而导致崩溃。
4.对课程的建议
我的建议在于以下几方面:
(1)在课程中能增加一些具体例子,如一开始的面向对象编程,希望能有两个程序分别是面向对象编程的和面向过程编程,而不是简单的一段代码,这样能加深对面向对象的理解;在多线程中,能加入具体的多线程的代码,结合具体的一个多线程代码才能让我们开始从会写开始,减少过多的课外研究时间。
(2)对于互测和公测,希望能增加公测的比例,多加一些例子,因为公测具有绝对的公正性,让公测集覆盖多个方面才能使程序发现多个问题,仅仅依赖互测找到问题或许不可行,在互测方面,对于规格等这一些的判断希望能加一个上限,不让滥报、多报等行为产生。
最后,感谢各位老师和助教们一学期的陪伴,希望OO课程能越来越好。
OO第四次作业总结的更多相关文章
- 【OO学习】OO第四单元作业总结及OO课程总结
[OO学习]OO第四单元作业总结及OO课程总结 第四单元作业架构设计 第十三次作业 第十四次作业 总结 这两次作业架构思路上是一样的. 通过将需要使用的UmlElement,封装成Element的子类 ...
- oo第四单元作业总结暨课程总结
oo第四单元作业总结暨课程总结 一.本单元作业架构设计 本单元需要构建一个UML解析器,通过对输入的UML类图/顺序图/状态图的相关信息进行解析以供查询,其中课程组已提供输入整体架构及输入解析部分,仅 ...
- OO第四单元作业总结以及课程总结
第四单元总结--UML 第四单元作业架构分析 第一次作业其实是本单元三次作业中最难的一次.由于第一次是第一次作业,要考虑到搭建框架和设计架构,这次作业的思维性很强.在了解了各个类型元素(Element ...
- OO第四次作业
一.论述测试与正确性论证的差异 我认为论述测试代表从理论的角度来进行运行正确性的判断,而正确性测试则是从实践的角度来看待程序的正确性问题.两者之间有着明显的差异. 正确性论证是仅仅从代码的逻辑结构方面 ...
- UML结构与解析——BUAA OO第四单元作业总结
UML与解析架构 UML是什么 统一建模语言(英语:Unified Modeling Language,缩写 UML)是非专利的第三代建模和规约语言.UML是一种开放的方法,用于说明.可视化.构建和编 ...
- OO第四单元作业小结
一.本单元两次作业的架构设计 1.第一次作业 整体思路:以class为核心,建立MyInterface.MyAttribute.MyOperation.MyAssociation四个类分别储存每个类的 ...
- 北航OO第四单元作业总结(4.1~4.3)及课程总结
前言 在学习过JML规格描述语言之后,本单元进行了UML(Unified Modeling Language)的学习.和JML单纯用语言描述的形式不同,UML通过可视化的图形形式,对一系列有关类的元素 ...
- OO第四单元作业总结及课程总结
一.本单元作业架构设计 1.第一次作业 本单元首次接触到UML以及相关概念,在面对第一次作业时首先花了很大功夫去阅读官方接口中各种UmlElement的代码,才理解了输入的模型元素中各属性的含义.总的 ...
- oo第四单元作业总结
一.本单元两次作业的架构: 本单元两次作业的架构基本是一致的,所以两次作业的架构就一起说了. 为了避免查询时出现同一个结果反复计算的情况(连续两次查询一个类的顶级父类,如果我们在查询的指令中来计算其父 ...
随机推荐
- 持久层Mybatis3底层源码分析,原理解析
Mybatis-持久层的框架,功能是非常强大的,对于移动互联网的高并发 和 高性能是非常有利的,相对于Hibernate全自动的ORM框架,Mybatis简单,易于学习,sql编写在xml文件中,和代 ...
- Bigger-Mai 养成计划,Python基础巩固四
一.装饰器:定义:本质是函数,(装饰其他函数)就是为其他函数添加附加功能.原则:1.不能修改被装饰的函数的源代码 2.不能修改被装饰函数的调用方式实现装饰器的知识储备:1.函数即‘变量’2.高阶函数 ...
- xml转json和实体类的两种方式
本文为博主原创,未经允许不得转载: xml在http通信中具有较高的安全性和传输速度,所以应用比较广泛, 在项目中往往需要对xml,json和实体类进行相互转换,在这里总结一下自己所用到的一些方法: ...
- web 页面间传值 js 封装方法
用法 var id = getParam("id"); function getParam(strKey) { var url=document.URL; //var url=&q ...
- DataTable转实体类
/// <summary> /// DataTable与实体类互相转换 /// </summary> /// <typeparam name="T"& ...
- C++ 基本数据类型,常量,变量
基本数据类型 整数类型 基本的整数类型(int) 按符号分 符号的 (signed) 无符号的(unsigned) 按照数据范围分 短整数(short) 长整数(long) 长长整数(long lon ...
- 分页查询最好加排序(order by)
昨天,与外部化系统对接时,发现有一个数据一直咩有集成到,双方各自排查了自己系统的代码,都觉得逻辑非常简单,无法就是一个分页查询而已. 问题就出在这个分页查询上. 为了说明当时问题发生的情景,我模拟了一 ...
- vuex的学习和理解
初识Vuex: vuex是 vue官方推荐的一个状态管理器,也是vue专用的一个插件.当我们遇到很多状态改变时,组件之间的通信就会变得复杂,这时候vuex的强大就体现出来了. Vuex 应用的核心就是 ...
- springBoot 项目war包部署及改为war包后资源路径错误问题
参考资料: https://blog.csdn.net/rico_zhou/article/details/83415114 https://blog.csdn.net/pz641/article/d ...
- Linux下启动weblogic服务
第一步找到目录:cd weblogic/user_projects/domains/odm_dat_dc_domain/bin/ 第二步查看进程: ps -ef|grep java 第三步杀进程: k ...