OO终章--总结博客

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

从方法上看,测试是使用大量测试样例来覆盖测试代码,从而能够检测代码的实现是否正确,功能是否完善。而正确性论证是使用代码的规格和逻辑进行严密的推论和证明,从而验证代码的实现正确性。从优缺点来看,测试的优点在于能够直观地看出测试的结果是否正确,而缺点在于难以构造覆盖完整的测试集;正确性论证的优点在于能够保证正确性和覆盖率,但是不够直观,而且论证错误不易察觉,也就是不易二次检查。

因此,在对一个程序进行设计测试检查的时候,需要二者同时使用,相互补充,使用测试集测试程序功能的完备性,使用正确性论证验证代码的逻辑正确性和严密的覆盖所有代码,这样才能对程序进行充分的测试验证。

二、OCL与JSF的比较

OCL,即Object Constraint Language, 中文译为对象约束语言。OCL是一种用来在指定的模型单元上施加约束的语言。同时OCL也不仅用来写约束,还能够对UML图中的任何元素写表达式。OCL是约束和查询语言,有一个形式化的数学语义,并且允许用户定义自己的OCL符号集。

与JSF的相同之处:OCL和JSF都是形式化的语言,都有同样的规格即前置、后置条件以及不变式。

与JSF的不同之处:JSF基本上使用的是逻辑表达式,少量使用自然语言。而OCL的表达式具有类型,且数据也有基本类型,这点和JSF有较大区别。

三、UML图

类图:

时序图:

       状态图:

四、学期总结

1. 知识点总结:

第一阶段:从多项式加减到ALS电梯,一个入门的阶段,主要的知识是面向对象编程的思想,以及java语言一些基础的语法,比如正则匹配等等,较为简单,属于经验怪,前期给玩家升级用的。

第二阶段:从多线程电梯、IFTTT到第一次出租车作业,一个逐渐熟悉的阶段。主要讲解了多线程的机制,竞争和同步机制、文件监测和操作等等知识,同时对规格有了一定的要求,代码质量也更高了。这属于精英怪,对于在第一阶段没有花时间认真打怪升级的玩家来说,可能就会被这个阶段的精英怪秒杀了,然后消耗一次复活(无效作业)的机会来从头打怪升级,苦肝到深夜。

第三阶段:对出租车进行功能上的完善,添加了许多功能。这个阶段主要是对程序有了规格化要求的设计,包括JSF规格的书写,和程序的规格化设计,在总体的代码量上也有显著提升。属于boss级别的怪物,需要苦战几日,熬夜连战,才能最后干掉boss。

第四阶段:这个阶段的主要作业是对以往的代码进行验证和测试,以及正确性论证。虽然总体作业量小了很多,不用写大量代码,也不用构造复杂的结构。但是这个阶段的知识是很重要的,放在课程的最后,重要性也不言而喻。

2. 个人总结:

从一开始的多项式加减,到最后的功能强大的出租车,总共9次编程作业,说多不多,说少不少,总而言之,对于我的编程能力还是有较大提升的。最开始的作业,对于面向对象的思想还是不够理解,写出来的程序只是有面向对象的外壳,但是实际上还是一个面向过程的程序,一个方法占了100多行,质量也不高,debug还十分困难。到最后几次作业时,对面向对象已经有了比较深入的见解,对类和方法的区分比较严格,方法的代码量也不多,嵌套深度也少了,把各个模块和功能安排得比较明白,质量有了明显的提升,debug也容易多了。尽管如此,但还是有一些不足的地方,需要更深入的学习。

3. 工程化开发:

我认为工程化开发就是,首先需要规范设计好每个功能的规格。然后将各个功能的实现分发给不同的程序员实现,团队的各个成员负责自己的模块,同时又可以相互协调合作,提高总体效率,降低成本。在此基础上,良好的规格化设计和封装是必要的,大部分程序需要实现大量的功能,这对于工程化开发是必不可少的条件。

4. 对课程的建议:

其实要说平时的吐槽倒挺多的,真要给实际建议的时候,还找不到几条。首先就是指导书的问题,我相信绝大部分的同学都会提到这个,指导书写的实在是很粗糙,对于一些细节上的问题,还有几次作业的扣分点都交代得不清楚。有很多次情况就是,一些摸棱两可的问题,一开始说readme自行定义,然后发现这些条件又是必要的,在提交作业前突然通知说要改指导书的内容,这让很多同学心态会崩的。还有就是在issue里提到要更改的地方,没有正式的通知,最后询问得到的结果是自己没看issues。虽然有各种吐槽,但确实找不到更好的替代方法,包括互测的面向运气得分机制。希望学弟学妹们能存活吧。。

原文地址:https://www.cnblogs.com/y1027/p/9216618.html

时间: 2024-08-30 15:25:17

OO终章--总结博客的相关文章

OO终章

OO终章 OO完结,这个课程比我想象得要肝,看来暑假得养老了. 感谢各位老师,各位助教带来的全新窝窝,游戏体验良好. 不过,也有遗憾,所以谁能告诉我BUG修复界面长啥样?? OO无伤过 感谢wsb,lsj,shh,xcb,hdl,zyy,lyt,xsy,wjyi,zt几位巨佬的帮助. 10198 lines,0 bugs. 第四单元总结 Project13 类图 大体上是把每个类挂在到类图下,把类的方法.属性挂在到类下,接口的属性和方法因为不涉及查询,故直接忽略. 复杂度 Method ev(G

oo第三次博客总结

1.规则化发展历史 形式化方法的研究高潮始于20世纪60年代后期,针对当时所谓"软件危机",人们提出种种解决方法,归纳起来有两类:一是采用工程方法来组织.管理软件的开发过程:二是深入探讨程 序和程序开发过程的规律,建立严密的理论,以其用来指导软件开发实践.前者导致"软件工程"的出现和发展,后者则推动了形式化方法的深入研究.经过30多 年的研究和应用,如今人们在形式化方法这一领域取得了大量.重要的成果,从早期最简单的形式化方法一阶谓词演算方法到现在的应用于不同领域.不

软件工程---《构建之法》第1.2.3章读后感博客

之前以为软件工程只是一个理论学科,在细读第一章后,才对软件工程有了初步的认识,软件工程包括理论和实践,它是软件开发中的一个重要的过程,对于一个大型软件的开发来说,具有决定成功与否的意义.除此之外,还初步认识到单元测试的存在,学习到软件工程师的职业发展过程. 疑问: 1.什么类型的软件才需要软件工程,无论是“Hello World!”,还是"Microsoft Office 2010"这样的软件,都需要软件工程吗? 2.在第一章1.2.4小节中,提到“软件工程的一个重要任务,就是要决定一

OO第三次博客

一.规格化设计相关 编程语言的规格化使用历史在网上的资料真的很少,我查阅了维基百科和谷歌学术的相关论文,关于这部分的讨论非常少.但可以确定的是,规格化的使用和工业上规范规格是有很大关系的,程序语言的发展和工业制造的发展有着一定的相似性.诸如国际化标准组织ISO,其宗旨是促进时间范围内的标准化工作的发展,推动国际间知识.科学.技术和经济方面的合作.具体来讲,它需要协调世界范围内的标准化工作,与其他国际性组织合作研究有关标准化问题.我们课上所讲和课下所用的规格化是为了规范方法使用的.工业产品和程序一

oo第四次博客总结

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

oo第四次博客

一.测试与正确性论证比较 正确性论证是论证程序达到预期目的的一般性陈述,而该论证与程序输入数据的特定值无关,能够代表穷举性测试. 程序测试是指测试者特意跳出一批输入数据,通过运行程序,检查每个输入数据所对应的运行结果是否符合预期要求. 测试只能说明程序有错误但是不能说明程序是正确的,而有效的正确性论证则可以说明程序的正确性. 二.OCL语言与JSF规格的比较 OCL是面向对象设计中对图形符号的补充.与jsf有类似,但是也有 不同.相同的地方在都是形式化语言,都没有二义性,采用前置条件和后置条件对

OO第三单元博客总结

原文地址:https://www.cnblogs.com/xiongmaoage/p/10903350.html

【原创】博客园重大Bug!管理员快来!!

事情的起因 今天在修改密码时提示修改失败(必须包含字母,数字,特殊字符),习惯性的查看下请求响应,如图, 轻松获取到改密码的接口地址,以及请求方式. 查看POST请求参数 很显然,应该是使用js把新密码和旧密码进行了加密.关于具体如何加密,这无关紧要.因为需要原密码,所以密码你可以放心,这个改不了~~~不过,举一反三,细思极恐,不需要密码的岂不是完蛋了!!! emmmm,写着写着举报文成了教唆文~~~~(尴尬的表情) 如果我是黑客,我如何盗号 说一下过程,比如,我发布了一篇文章到博客园首页,你看

Django博客开发-数据建模与样式设定

开发流程介绍 之前Django的学习过程当中已经把基本Django开发学完了,现在以Django 的博客项目完成一遍课程的回顾和总结.同时来一次完整开发的Django体验. 一个产品从研究到编码我们要经历以下的过程: 博客开发需求分析与建模 需求分析 本次项目完成的是一个博客的项目,博客主要目的是为了分享个人的技术,进行技术积累. 主要是发布文章日志.但是也需要有评论和互动.需要完成以下功能点: 1.文章的发布.展示.修改.删除. 2.文章评论 3.读者互动 4.图片管理 概要设计 我们对上面的