博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OO第四次博客作业
阅读量:5125 次
发布时间:2019-06-13

本文共 1805 字,大约阅读时间需要 6 分钟。

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

  (1)测试

    测试,也就是通过实例输入得出的结果,并与正确结果相对比来寻找bug的过程,这种方法个人认为有以下几个优点:

    (1)操作简便

    (2)结果真实可靠

    (3)能够快速、准确和直观的定位bug

    但其也以下缺点:

    (1)对于复杂程序,个人构造的数据集难以判断是否正确

    (2)难以构造全面的数据集

  (2)正确性论证

    正确性论证,也就是分析需求、撰写规格后,通过严密的逻辑论证来验证程序的正确性,这要求我们完全理解需求,正确撰写规格,同时全面细致的分析代码是否实现了需求和规格,理论上来讲,这种方法应该可以做到全面覆盖bug。

    但是个人认为这也只是理论上,因为按道理来说,我们写程序的时候就应该是按照需求和规格去写的,那么为什么还是会出现bug呢,大多数情况存在bug是因为我们连需求和规格都没有完全理清,那么论证也只会是重复我们错误的逻辑,这也是我对正确性论证存在疑问的地方。

二.OCL语言调研与比较

    对象约束语言它是一种用于施加在指定的模型元素上约束的语言。OCL表达式以附加在模型元素上的条件和限制来表现对该对象的约束,其中包括附加在模型元素上的不变量或约束的表达式,附加在操作和方法上的前置条件和后置条件等。

    对象约束语言是一种形式化语言,它主要用于表示UML模型中施加于模型上的约束。OCL具有如下特点:

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

        2、OCL是一种规范说明性语言,所有有关实现的问题都不能用OCL来表达
        3、OCL是一种纯表达式语言,它是具有没有任何副作用的申明性语言。
        4、OCL是一种类型化语言,即OCL中的每一个表达式都是具有类型的。
        5、OCL不是一种程序设计语言,不能用OCL编写程序逻辑和控制流程。

    OCL与JSF的相同点在于他们都是形式化的约束语言。OCL包括的不变量、前置、后置条件、监护规则对应着JSF中的repOK、REQUIRES、EFFECTS、MODIFIES。不同点在于OCL相比JSF要复杂的多。

三.图

  (1)UML图

  (2)时序图

(3)状态图

四.学期总结

  (1)单元模块知识点关系

    第一单元是基础,让我们初学JAVA,了解面向对象编程,入门OO课程,为之后的单元做铺垫。

    第二单元是进阶,也是整个课程的重心所在,让我们了解多线程,开始对写代码有新的认识,掌握一些完成工程的技巧。

    第三单元是巩固,开始考虑代码的规格、规范和正确性,让我们在锻炼写代码能力的同时也考虑代码的规范性。

    第四单元是总结,引入自动化测试、正确性论证,通过多方面的完善使代码更加全面正确,也是对之前的三个单元做个总结。

  (2)进步

    首先在设计上再也不是盲目的开始直接写代码,而是先构思先布局,在开始动手。

    其次在测试上,掌握了多种测试方法,自己构造测试集,通过调试debug,JUnit自动化测试,正确性论证。

    最后是质量,可以说写完最后一次作业后,往前翻翻之前作业的代码自己都不愿意看了,也不是说bug少了多少,当然是少了,但是还有在代码风格,规范性等等各方面的进步。不得不说其实规范性,至少在代码的观感来说,还是有很大提升作用的。

  (3)理解

    工程化开发,它是一个完整的体系,它包括了需求、实现、完善一整个过程,它也是一种方法,是对一个问题的理解,把问题转化为工程,就有了一个程序化的解答方法,是循规蹈矩的褒义,它也是一个需求,是对程序的更高要求,因为工程是合作的体现,要求程序具有很高的易读性。

  (4)建议

    虽然大家都对OO怨声载道,但是回过头来看,这么14次作业也就一晃而过了,好像也没那么难,甚至总结起来发现原来自己竟然提升了那么多,还挺开心的。而且真的说不上什么建议,最多也就是希望课程能够拉长一些,因为作业的负担实在太重了,很大程度上影响了其他课程的学习。对于平时抱怨最多的互评、规格,想来想去其实也没什么改进的方法。

  最后,希望OO课程能够越来越好吧,也很感谢助教和老师们的辛苦付出!

 

转载于:https://www.cnblogs.com/jjjjjjjiyun/p/9222154.html

你可能感兴趣的文章
[Poi2011]Tree Rotations线段树合并
查看>>
Ubuntu 12.04(32位)安装Oracle 11g(32位)全过程以及几乎所有问题的解决办法
查看>>
Timer更新UI的合理办法
查看>>
jquery中对动态生成的标签响应click事件(二)…与ajax交互使用
查看>>
推荐几个.NET开源图表组件 [转]
查看>>
脚本两则--用于快速部署HADOOP,SPARK这些(特别是VM虚拟机模板部署出来的)。。...
查看>>
用JQUERY为INPUT的TXT类型赋值及取值操作
查看>>
(视频) 《快速创建网站》 3.2 WordPress多站点及Azure在线代码编辑器 - 扔掉你的ftp工具吧,修改代码全部云端搞定...
查看>>
(转) 一步一步学习ASP.NET 5 (四)- ASP.NET MVC 6四大特性
查看>>
Python学习笔记——基础篇【第六周】——hashlib模块
查看>>
python的collection系列-默认字典(defaultdict)
查看>>
Noip 2014酱油记+简要题解
查看>>
loadrunner学习记录一
查看>>
转为win64后, MS的lib问题
查看>>
jQuery操作cookie
查看>>
编码解码错误
查看>>
HDU-1008
查看>>
利用curl验证ssl网站(webservice)
查看>>
RHEL6 下Cfengine V3 安装测试1
查看>>
【perl】simpleHTTP
查看>>