oo第四次博客总结

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

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

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

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

二、OCL与JSF对比

OCL语言(对象约束语言)是一种用来进行约束定义的、形式化的、无二义性的语言,用来阐明建模元素的某些细节。

相同点:

二者均是声明型语言,不会改变描述对象的内容,并且二者都是形式化的、规范的无二义性语言,都有前置条件、后置条件和不变式。

不同点是OCL语言具有高级数据类型,并且它基于上下文给出,而JSF则是针对方法用布尔表达式描述相关条件,并且没有新的语言元素的参与。此外,二者的语法差异较大,OCL中有许多既定名词和JSF中不同。

三、第十四次作业的uml图

1、uml类图

2、uml时序图

3、uml状态图

四、学期总结

1、知识点总结

这一学期我们学习了四个单元的知识。系统的了解了面向对象程序设计的过程以及工程化的开发过程。

第一单元作为基础入门单元,介绍了面向对象程序的特点及描述方法等,让我们对面向对象有了初步的了解;

第二单元开始,我们的程序设计就有了质的飞跃——开始写多线程程序。这一部分介绍了多线程的实现机制、线程同步、冲突问题等,让我们对多线程程序有了一定的认识;

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

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

总的来说,这是一个循序渐进的过程,但不足点我觉得在于规格应该提前一些,因为它是一个整体的构造策略,而不是写完再去根据程序补充规格。

2、个人程序总结

经过这一学期的学习和磨练,我在写代码上的功夫又上涨了,的确比以前更加熟练。但从设计方面来讲,我觉得我的提升并不大,因为我本身代码基础比较薄弱,每次写程序之前都要绞尽脑汁去想这个程序到底要干嘛,也把每一部分的功能大致想好了,这里就有些思维定式的东西在里面,所以之后介绍的设计思路我并没有借鉴太多,还是根据自己的想法去设计这个程序(完美的自己的节奏-_-||);

谈到测试上的改变,我觉得Junit算是一个比较不错的工具,并且我在构造测试样例时也会从程序的逻辑出发去找一些尽量刁钻的数据,而不是像最开始的多项式直接开始轰炸。但是关于正确性论证我还是觉得比直观的测试来的复杂,这一块因为也没有后继作业我也就没有过多探究,也从未采用这种方式去验证我的程序;

最后,谈谈最关键的写代码环节。这一学期的作业写下来我写代码更加熟练了,这点是毋庸置疑的,并且也开始向大佬们学习分好多方法,也逐步有了自己的代码风格。面对一个复杂的需求也不太发怵了,也能循序渐进地去试着完成它。我觉得这一点上我收获很大。同时,互评阶段了解其他同学的设计思路对我也有一定帮助。

3、关于工程化开发

首先,我个人觉得工程化开发不应该是一个人的事情,应该是许多人按照某种约定的规则去开发同一个东西,并且相互之间了解彼此的想法、看懂代码都不是问题,oo这门课虽然有工程化开发中的规格设计、验证等环节,但终究是自己做给自己看,互评的同学只会把它当做一个扣分点,总的来说,还是因为没有合作关系的产生,才让工程化开发的理念和方法在这门课上显得如此鸡肋(JSF除了能被扣分还能干吗?我相信这应该是很多同学的想法),但是如果这门课设计一个合作环节,并规定几个合作者之间的工作范围,这样工程化开发的价值有可能就会被同学们发掘出来。

4、期望和建议

就如同我刚才分析的,希望这门课能开发一个合理的合作环节,以此来体现工程化设计的价值,同时减轻同学们的负担。并且,希望这个互评机制能更合理一些(虽然具体怎么做我不太清楚,但目前这个机制一定是存在问题的,不然不会导致几乎所有同学都对这个机制有意见)。最后,希望指导书能再完善一些,并且发布的时候就是最终的版本,不要再改来改去了。

总的来说,这门课锻炼了我写程序的能力,我也能写出以千行为单位的程序了,而且还能正确运行。我觉得就已经够了。

原文地址:https://www.cnblogs.com/xyt1606/p/9216812.html

时间: 2024-10-29 02:58:47

oo第四次博客总结的相关文章

oo第四次博客

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

[转载]关于CSDN, cnblog, iteye和51cto四个博客网站的比较与分析

CSDN:http://blog.csdn.net/ cnblog: http://www.cnblogs.com/ iteye: http://www.iteye.com/blogs/ 51cto: http://blog.51cto.com/ 1. 基本功能 博客(又名网络日志),顾名思义,最早的基本功能就是支持用户在网站上写日志,并进行修改.删除.分类管理,以及对他人博客的阅读和评论等.以上功能所有的博客网站都必须具备,为了更好地完成以上功能,这里对更细致的条目进行了比较:   csdn

oo第三次博客总结

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

OO第三次博客

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

面向对象第四次博客

测试与正确性论证差异对比 测试指为检测目标是否符合标准而采用特殊工具和方法进行验证.测试的优点在于你可以不用知道程序是如何实现的,直接输入测试样例,然后比较程序运行结果和正确结果,如果两者不同,就说明程序肯定有BUG.从中我们知道测试是快速方便的,它可以检测并定位一个程序的BUG.但是测试的效果很大程度取决于测试样例是否完善,如果不完善,就会遗漏一些潜在的致命的BUG,这也是测试最大的缺点.若要达到很好的测试效果,需要构造规模庞大的测试用例,这会消耗很多精力,而且你并不能保证这个庞大的测试用例已

软工第四次博客

阅读完构建之法的问题 <1>如何确定自己在团队中的位置 <2>团队的合作应该如何才会比较贴合,才能构建出更合适的软件 <3>在了解用户需求的时候是否需要时需要根据不同的用户层次指定不同的方式吗? <4>关于软件工程这个专业的描述 经常能看到“扎实的数学功底”的描述,请问扎实的数学功底怎么理解? <5>软件工程可能有不同的分法,常见的叫法有开发.嵌入式.数据库.测试几个,但是这些叫法放在一起也不伦不类的,请老师解答 第十二章  用户体验 要考虑用户

第四次 博客作业

对于<构建之法>的感想 这本书把开发方法讲得清晰有趣而且很实用,里面的每一章讲得很有用,例如,个人技术和流程让程序员更清楚的了解如何去编程:软件工程的成长,让程序员对自己的个人能力有更清楚的了解,并且使自己的能力进一步成长:两人合作中使我们代码更规范,里面的结对编程更是一种全新的编程方法,这样对于我们技巧也是一种提高! 这本书给了我们学生一个全新的学法,以前学习软件工程总觉得太多理论的东西在里面,但是在这本书打破常规的教学方法,十分有趣 “软件= 程序+软件工程”这句话就这么简单把程序跟软件工

OO终章--总结博客

一.测试与正确性论证的比较 从方法上看,测试是使用大量测试样例来覆盖测试代码,从而能够检测代码的实现是否正确,功能是否完善.而正确性论证是使用代码的规格和逻辑进行严密的推论和证明,从而验证代码的实现正确性.从优缺点来看,测试的优点在于能够直观地看出测试的结果是否正确,而缺点在于难以构造覆盖完整的测试集:正确性论证的优点在于能够保证正确性和覆盖率,但是不够直观,而且论证错误不易察觉,也就是不易二次检查. 因此,在对一个程序进行设计测试检查的时候,需要二者同时使用,相互补充,使用测试集测试程序功能的

第四次博客作业:bookstore缺陷报告

Bookstore系统集成测试缺陷报告 ------------------------------------------------------------------------------------------------------------------ 缺陷编号:01.01.01             发现人:林怡            记录日期:2016-06-12 所属模块:购物车                 确认人:林怡            确认日期:2016-06