测试与正确性论证的效果差异及各自的优缺点:

测试针对一些典型的输入情况进行方法验证,可操作性更强,结果直观。但不能完全覆盖所有的输入情况。

正确性论证则是根据代码逻辑从所有的方面对方法进行论证,可操作性很差,工程量大,不过验证出来的结果更加可信。

OCL语言与JSF规格:

OCL语言具有如下特点:

1.OCL是一种精确的,无二义性的语言

2.OCL是一种规范说明性语言,所有有关实现的问题都不能用OCL来表达

3.OCL是一种纯表达式语言,具有没有任何副作用的申明性语言

4.OCL是一种类型化语言,每一个表达式都是有类型的

5.OCL是一种程序设计语言,不能用OCL编写程序逻辑和控制流程

jsf是以命题逻辑为主,利用蕴含表达式将代码逻辑与结果表达清楚,主要用于描述方法规格,但在实际操作中,很难将复杂的逻辑表达式简单地用蕴含表达式表示清楚,表达能力有限,但这两者都是约束型的方法或者规格。

整理总结四个学期所学所练:

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

第一单元是简单的java面向对象程序,其中第一次作业的感受就是程序对输入处理的重要性,二三次作业是简单的电梯调度的实现,第一单元是一个过渡单元,从过程编程到面向对象编程的过渡,另外就是熟悉java语言。

第二单元是多线程编程,经过了第一单元的洗礼,对面向对象有了一丝理解,java也有了一定的编程基础,接下来就是深入多线程编程,多线程编程也是由浅入深,从最开始三个多线程电梯,然后文件监控系统和100辆出租车,加深对多线程的理解和运用掌握。

第三单元是多线程编程的续写,100辆出租车的各种要求增加,难度系数提升,从红绿灯暂停,初始化文件,道路开闭等等,都是对多线程编程的进一步考验。

前三单元主要是对编程能力的提升,第四单元则重视程序规格,代码的质量。第四单元通过jsf测试和正确性验证等方法让我们对代码的设计更加重视,不断提升自己的代码质量,更合理地构造代码框架。

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

第一次作业入门级别,学会了正则表达,输入的处理重要性。电梯的调度程序,代码比较散乱,复杂。在程序处理方面没有大局观,想到一种情况就添加一种情况,完全没有考虑是遗漏了还是重复了;程序实现的方式不是最优。第二次多电梯重构了一次,代码明显减少。程序的质量不断提高,冗余代码明显减少。在出租车阶段,程序的输出处理变得更加友好。

3.对工程化开发的理解

看到有同学都提到了计算机组成,我想说我也是这样。仔细想来,要是自己没有经历过计组的洗礼,面对OO这门课的时候估计会不知所措,毕竟OO每周的程序作业都可以看作是一个系统,而不是一个简单的过程化程序,要想完成这样一个系统化程序,就必须有一个系统的观念。在我看来,工程化开发是对一个系统的开发模式,要有一个整体的观念,另外要懂得将各部分细化,再整合,也就是模块化。

4.期望与建议

这门课学起来是有意思,每次完成作业就像是自己做完了一个小系统,有成就感。另外自己的编程能力得到了锻炼,不管是代码质量,还是编程思想。希望老师和助教们继续加油,完善这门课内容和评测机制。

oo第四篇博客作业的更多相关文章

  1. OO第四次博客作业!

    oo第四次博客作业 一.测试与正确性论证比较 测试只是单方面片面的证明对于当前的输入程序是正确的,测试只能证明程序有错误,不能说明程序是对的. 正确性论证是程序达到预期目的的一般性陈述,是通过规范化的 ...

  2. OO第四单元博客作业

    OO第四单元博客作业 BUAA_1706_HugeGun 目录 第四单元作业架构设计 四个单元架构设计及OO方法理解 四个单元测试理解与实践演进 课程收获 一点建议 第四单元作业架构设计 ### 第十 ...

  3. OO第四次博客作业(第四单元作业及期末总结)

    (注意:本文写作顺序与作业要求不完全一致,但涵盖了作业的所有要求) 一学期的BUAA特色OO课程结束了. PART 1  我想先写我这一学期的感想 从第一单元满怀期待地写完多项式求值到最后看着60分不 ...

  4. OO第四次博客作业--第四单元总结及课程总结

    一.总结第四单元两次作业的架构设计 1.1 第一次作业 类图如下: 为了突出类.接口.方法.属性.和参数之间的层次结构关系,我为 Class 和 Interface 和 Operation 分别建立了 ...

  5. [BUAA OO]第四次博客作业

      一.      测试与正确性论证的区别 在最后一个单元的OO作业中,我们主要进行了代码的测试与正确性论证工作.这俩者在作业中的体现分别是junit单元测试以及jsf论述语言.这两者在java代码开 ...

  6. OO第四次博客作业

    测试与正确性论证的效果差异及其优缺点 测试是利用测试代码,通过编写测试用例来验证代码是否能正常完成所要求的功能,自动测试相较于正确性论证来说更加的直观,直接测试代码的功能,而正确性论证是在JSF的基础 ...

  7. OO第三次博客作业——规格

    OO第三次博客作业——规格 一.调研结果: 规格的历史: 引自博文链接:http://blog.sina.com.cn/s/blog_473d5bba010001x9.html 传统科学的特点是发现世 ...

  8. OO第4次博客作业

    OO第4次博客作业 一.第4单元设计 第四单元主要围绕UML图的结构进行JAVA代码编写,对JAVA的层次结构进行更多的认识.个人认为编程操作在实质上与上一章的PathContainer有许多的相同之 ...

  9. [BUAA OO]第三次博客作业

    OO第三次博客作业 1. 规格化设计的发展 我认为,规格化设计主要源自于软件设计的两次危机.第一次是由于大量存在的goto语句,让当时被广泛应用的面向过程式的编程语言臃肿不堪,在逻辑性上与工程规模上鱼 ...

随机推荐

  1. cocoapod 快速更新,加载

    pod install --verbose --no-repo-update pod update --verbose --no-repo-update

  2. PHP开发者成长图

    作为PHP开发者,根据自己给自己的定位和这幅图,是否觉得自己还需要比平时更努力呢~

  3. PHP多进程处理并行处理任务实例(转,备用)

    本文目的本文通过例子讲解linux环境下,使用php进行并发任务处理,以及如何通过pipe用于进程间的数据同步.PHP多进程通过pcntl_XXX系列函数使用多进程功能.注意:pcntl_XXX只能运 ...

  4. 在win和android上同时进行OpenCV程序设计

    基于qt进行Android图像处理项目设计的时候,初期可以首先在windows上进行调试,等到比较成熟后将代码转换到adnroid上. 这里仅以widget为例,如果使用qtquick是一样的.具体以 ...

  5. 20145206邹京儒《网络对抗技术》 PC平台逆向破解

    20145206邹京儒<网络对抗技术> PC平台逆向破解 注入shellcode并执行 一.准备一段shellcode 二.设置环境 具体在终端中输入如下: apt-cache searc ...

  6. noip2016普及组题解和心得

    前言 感觉稍微有些滑稽吧,毕竟每次练的题都是提高组难度的,结果最后的主要任务是普及组抱一个一等奖回来.至于我的分数嘛..还是在你看完题解后写在[后记]里面.废话不多说,开始题解. (其实这篇博客只有题 ...

  7. SQL语句 查询同一个字符在某一个字符串中出现的次数

    select len(replace(字段名A,';','--'))-len(字段名A) from table表名

  8. 在ubuntu下随意编译安装需要的python版本

    一.环境 ubuntu14.04 二.准备 2.1更新软件库 sudo apt-get update 2.2安装编译器及相应工具 2.3安装相应的开发库 sudo apt-get install zl ...

  9. fedora中使用 mariadb数据库建库和建表-- mariadb数据库服务无法启动?

    /proc(进程, 过程等含义) 文件系统是一个虚拟文件系统,通过它可以使用一种新的方法在 Linux® 内核空间(内核)和用户空间(用户)之间进行通信.在 /proc 文件系统中,我们可以将对虚拟文 ...

  10. 51nod 1266 蚂蚁

    蚂蚁这道题 就是 不管两只蚂蚁相撞  他们会朝自己的反方向走 不过可以这么想  有蚂蚁1 和 蚂蚁2   并且相向而行 如果撞了以后 蚂蚁1和蚂蚁2 就往回走   ,这里可以理解成蚂蚁1,蚂蚁2 继续 ...