论述测试与正确性论证的效果差异

  单元测试利用测试者构造的测试用例来检查类或方法的正确性,一般来说所需要测试的用例是无穷多的,通过人为构造代表性的测试用例来尽量测试所有代码。测试的优点在于不易出错,只要能正确确定测试结果就行了,但是缺点在于难以考虑到所有的代表性用例,在复杂工程中,完全周密的测试是几乎不存在的,测试者不能保证没有不被考虑到的用例。

  而正确性论证是逻辑论证,从代码层面出发,用自然语言来描述程序的运行正确性。优点是逻辑论证可以完全覆盖类或方法的运行过程,但是缺点是自然语言论证本身就是不能保证正确的,无法与单元测试的机器运行相媲美。

OCL与JSF的比较

  OCL是对象约束语言,可以应用与任何实现方式的非正规语言。对象约束语言对UML中图形或其他组件都没有控制权,他只是在使用时返回值。OCL、并不能修改对象的状态,而是用来指示对状态的修改何时发生。而JSF更加强调对代码功能的说明,OCL是形式化语言,JSF是半形式化语言,可以使用自然语言;OCL表达式的值可以有不同的类型,JSF表达式的类型都是布尔型。共同点在于OCL和JSF都可用于描述规格的前置条件和后置条件。

UML图

整理总结

  阐述四个单元模块知识点之间的关系:第一个单元应该是整个java编程的基础,初步了解面向对象编程的过程,帮助大家熟悉Java语言的使用情况。第二单元和第三单元都着重于多线程编程,先利用电梯作业体验简单的多线程编写,只限于三个电梯和楼层间信息交换,开始设计进程同步等知识,而到了第三单元将多线程复杂化为更多的出租车和地图,加大多线程编程的难度。第四单元着重于规范化代码的编写,对JSF、规格文档、正确性论证进行训练。

  梳理自己所设计实现的程序:以第十四次作业为例,我完全重写了第三次作业的代码,第三次作业的类图如下:

  第三次作业的数据管理非常非常混乱,共享的数据分布在各个类中都有定义,其中还AskDisposeOverride的长度达到了四百多行,可读性基本为0。而在第十四次作业中,我将共享数据集中在一个类中进行管理,每个方法的长度都控制在五十行以内,代码的规范度有了质的提升。同时重写后的方法使用了完全不同的调度方法,更加贴合多线程运行的实际情况,请求管理也使用了ArrayList,代码更加方便维护。

  阐述自己对工程化开发的理解:而在企业项目中,代码的规格化尤为重要,一个项目大多都是由一个团队来完成,如果没有统一的代码规范,那么每个人的代码必定会风格迥异。且不说会存在多个人同时开发同一模块的情况,即使是分工十分明晰的,等到要整合代码的时候也有够头疼的了。大多数情况下,并非程序中有复杂的算法或是复杂的逻辑,而是去读别人的代码实在是一件痛苦的事情。统一的风格使得代码可读性大大提高了,人们看到任何一段代码都会觉得异常熟悉。显然的,规格化的代码在团队的合作开发中是非常有益而且必要的。

  对课程的任何期望或建议:强烈建议对于部分测试删除互测阶段,对于JSF、规格检查,互测其实无可厚非,这些内容有些时候就是用来给别人看的,但是第一、二、三单元完全可以依靠公测进行测试,指导书统一输入方式和输出结果就行了。课程组可能对于匿名后的学生素质期望过高,乱扣bug是一个低风险的行为,除了一些明显无理由的bug外,大部分互测争端是助教难以评判的,而且工作量巨大。所以强烈建议前一二三单元使用公测进行测试,这三个单元的作业更加注重结果的正确性而非规范性。

第四次oo博客的更多相关文章

  1. 第四次oo博客作业

    (1)本单元是撰写UML数据分析器,架构大致如下,在指导书要求的函数外,对于UmlClass类,Umlinterface类,以及状态机,顺序图这四个类重现构造一个类,这个类里有他们所需要的全部信息,另 ...

  2. OO博客总结——OO落下帷幕

    OO博客总结--OO落下帷幕 凡此过往,皆为序章. 不知不觉OO课程即将落下帷幕,一路坎坎坷坷磕磕绊绊,可算是要结束了,心里终于松了一口气,也有小小的不甘和遗憾.凡此过往,皆为序章.特殊的线上OO课程 ...

  3. Beta版本——第四次冲刺博客

    我说的都队 031402304 陈燊 031402342 许玲玲 031402337 胡心颖 03140241 王婷婷 031402203 陈齐民 031402209 黄伟炜 031402233 郑扬 ...

  4. 第十四次ScrumMeeting博客

    第十四次ScrumMeeting博客 本次会议于12月3日(日)22时整在3公寓725房间召开,持续30分钟. 与会人员:刘畅.辛德泰.张安澜.方科栋. 1. 每个人的工作(有Issue的内容和链接) ...

  5. 第四次ScrumMeeting博客

    第四次ScrumMeeting博客 本次会议于10月28日(六)22时整在3公寓725房间召开,持续15分钟. 与会人员:刘畅.辛德泰.窦鑫泽.张安澜.赵奕. 1. 每个人的工作(有Issue的内容和 ...

  6. OO博客作业-《JML之卷》

    OO第三单元小结 一.JML语言理论基础以及应用工具链情况梳理 一句话来说,JML就是用于对JAVA程序设计逻辑的预先约定的一种语言,以便正确严格高效地完成程序以及展开测试,这在不能容忍细微错误的工程 ...

  7. 做个开源博客学习Vite2 + Vue3 (四)实现博客功能

    我们再来看一下管理类的设计. Composition API,就是组合API的意思,那么是不是应该把js代码分离出来,做成独立的管理类的形式呢? 这样代码可以更整洁一些,主要是setup里面的代码就不 ...

  8. OO博客作业1:第1-3周作业总结

    (1)基于度量来分析自己的程序结构 注:UML图中每个划分了的圆角矩形代表一个类或接口,箭头可代表创建.访问数据等行为.类的图形内部分为3个部分,从上到下依次是类的名称.类包含的实例变量(属性).类实 ...

  9. 接着继续(OO博客第四弹)

    .测试与JSF正确性论证 测试和JSF正确性论证是对一个程序进行检验的两种方式.测试是来的最直接的,输入合法的输入给出正确的提示,输入非法的输入给出错误信息反馈,直接就能很容易的了解程序的运行情况.但 ...

随机推荐

  1. sql prompt 缩写 快捷键

    快捷键代码 1. df DELETE FROM 2. ssf SELECT * FROM  3. be BEGIN  END 4. ij INNER JOIN  5. ap ALTER PROCEDU ...

  2. [20190214]11g Query Result Cache RC Latches.txt

    [20190214]11g Query Result Cache RC Latches.txt --//昨天我重复链接http://www.pythian.com/blog/oracle-11g-qu ...

  3. 语句调优基础知识-set statistics profile on

    set statistics profile on 获取语句真实的执行计划信息 set statistics profile on go select distinct Productid,unitp ...

  4. SQL Server的实例恢复解析

    同Oracle一样,SQL Server在非一致性关闭的时候也会进行实例恢复(Instance Recovery),本文根据stack overflow的文章介绍一些SQL Server实例恢复的知识 ...

  5. JAVA API的下载和中文查看API

    一.JAVA API的下载 1.1 JAVA由SUN公司开发,2006年SUN公司宣布将Java技术作为免费软件对外发布,标志着JAVA的公开免费.2009年,SUN公司被甲骨文公司收购,因此我们现在 ...

  6. 复制 cmd 窗口文本三步曲:

    1:右键菜单点"标记": 2:按住左键选文字: 3:选完右键点一下!  (关键一步,只需点一下就好!!) so 待选文字就跑到剪切板上了

  7. MATLAB常微分方程数值解——欧拉法、改进的欧拉法与四阶龙格库塔方法

    MATLAB常微分方程数值解 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 1.一阶常微分方程初值问题 2.欧拉法 3.改进的欧拉法 4.四阶龙格库塔 ...

  8. Fetch请求后台的数据

    <style> #btn{ width: 50px; height: 50px; background-color: red; } #output{ width: 100px; heigh ...

  9. Ubuntu 普通用户无法启动Google chrome

    删除 /home/你的用户名/.config/google-chrome文件,再打开就好了 root@ecos:cd /home/ecos/.config root@ecos:~/.config# r ...

  10. C#深度学习の枚举类型(IEnumerator,IEnumerable)

    一.关于枚举的含义 .Net提供了可枚举类型的接口IEnumerable和枚举器接口IEnumerator,程序集System.Collections 另: IQueryable 继承自IEnumer ...