OO最后一次博客作业

• 1. 论述测试与正确性论证的效果差异,比较其优缺点

  测试:针对每一个具体的方法,按照规格规范,编写不同情况下的测试数据,验证执行效果是否符合预期(规格)。测试虽然比较麻烦,但是是最准确的测试方法,因为在正确性论证中有可能会有人为的推导错误,所以根据每种情况编写代码会更保险一些。但是编写过程中可能会遗漏某些输入的划分,而且检查起来也比较慢和繁琐。

  正确性论证:针对每一个方法,根据规格,划分为不同的情况,以逻辑的方式推导出每种情况的执行结果符合规格。这种方法的逻辑清晰,执行起来很流畅(划分->挨个验证),而且检查起来会比较方便(因为都是逻辑上的式子)。但是除了核能会有人为错误之外,完成过程还会比较繁琐。我个人认为正确性认证不是很容易查出来错,因为程序是自己写的,有时写程序的逻辑错误会保留到写正确性论证的过程中,或者因为相信自己的程序而“想当然”地认为逻辑的正确性,造成只有形式化的论证而没有和程序细节紧密结合好。所以我比较推荐测试。

• 2. 调研OCL语言,并比较其与课程所介绍的JSF规格之间的相似和不同 之处

  (1)OCL语言

  OCL(Object Constraint Language)语言是面向对象设计中对图形符号的补充,能够完善建模元素的相关细节。对象约束语言是一种形式化语言,它主要用于表示UML模型中施加于模型上的约束。OCL具有如下特点:

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

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

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

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

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

  (2)与JSF规格的异同

  同:都是形式化约束的、要求没有二义性的语言,思路都为约束输入和期望输出等。

  不同:适用范围不同。JSF仅支持逻辑表达式和java中相关的操作,而OCL还支持分支结构、上下文等复杂功能。主观上觉得OCL比JSF规范程度更高和完备一些。

• 3. 根据第十四次作业的单电梯系统,针对调度器、电梯、请求队列和 请求,至少整理出 一幅UML类图、一幅顺序图和一幅状态图,并使用 图(graph)来表示出模型

   这次作业的完成侧重调度器算法,所以类间关系和状态转化相对简单。

  (1)UML

  

  (2)顺序图

  

  (3)状态图,以调度器为中心

 

• 4. 整理总结一个学期所学所练

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

  (1)JAVA入门,主要为面向对象思维的适应

  (2)多线程编程,从java虚拟机结构讲起,理解多线程的基层管理,并使用多线程编程

  (3)规格化设计,如何更“工程化”自己的代码,并且介绍了推荐的设计原则与规范

  (4)验证与检验,主要为单元测试和正确性论证两个手段

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

  代码上有三个阶段:

  (1)基础java:多项式(熟练掌握正则表达式),电梯1,电梯2

  (2)对于多线程的恶心阶段:电梯3

  (3)淡定面对多线程:出租出系列

  虽然很累,但不得不说面对指导书变得越来越从容,不会再觉得可能写不完什么的。而且对于程序编写的节奏把握的越来越好,也逐渐掌握了在高压下如何调节心态。从一开始有些拖延,吃到苦头后对编程略有焦虑,再到后来学会如何紧张地有效思考和平稳心态。尤其是学会适当放下,先保证头脑清晰再去调bug,从迫不得已地追求编程时间到主动地追求编程效率。回过头来真的是很感谢这门课逼得这么紧。

   4.3阐述自己对工程化开发的理解

  (1)最大的收获:先动脑,把过程都走全,走顺,而且要把特殊情况也走一遍再开始编程。以前编程时思路来的挺快,就是想不全,所以会有很多浪费的时间。应该把思考算法、检查算法和编程脱离,边写边想对于我来说效率不高。

  (2)如果是自然性语言的要求,尽量先沟通好能预见的分歧。

  (3)由于时间紧迫,课程中都是先编程再写的jsf。实际上jsf应该先写,可能之后会改jsf。理想的程序是画UML、自动生成框架、补上jsf、编程、单元测试、走一遍正确性、压力测试等。

   4.4对课程的任何期望或建议

  (1)关于体验问题:

  我的互测体验还行,就是有一次,我的被测者对我使用了攻击性语言,心情十分失落,比扣分还难受。我觉得可能大家不太能分清磋商和吵架的界线和如何就事论事?年轻且高压很容易生气?而且我觉得双方有认识矛盾很正常,表示一下仲裁就可以了。但如果使用攻击性语言,双方都会变得特别“戾气”,这是我恶心互测的最主要原因。

  所以我建议在以后的课设中重点强调一下语言使用的问题。我非常希望这门课不是“互撕”,而是“辩论”。对于方法我想到的是可以举报语言暴力行为,当成incomplete来扣。

  (2)JSF实际教学效果提升建议

  由于时间太紧,jsf都是编完程序后补上去的。我觉得如果想让学生接受这种思想,最好就是留一周或者写博客那周,专门搭一下框架,感受一下先写框架、确定jsf然后编程测试的感觉。否则感觉jsf会是会了,但是浮于表面,变成纯粹的“体力活”了。

   (3)关于无效问题

  说实话我觉得想交易的话,总有办法的,比如定个暗号什么的。而且这学期也有很多同学很冤枉。所以我觉得以后的readme就直接在线预览好了,规定基本的格式之类。或者提前说一下pdf和word怎么看个人信息,删的方法可以让学生自己查。

  (4)机制问题

  希望能在一开始公布一个比较全的指导手册,比如仲裁是分拆仲裁,而不是一个助教看一个程序,所以不能有“跨申诉”交流和约定的情况。以及如何取消仲裁,即沟通好申诉失败后去哪里取消。

  (5)正确性文档

  写正确性文档那周正好是需要开始复习的那周,大家都挺紧张,但是这个还挺费时间的。我觉得想练的话,不如练部分的?或者给定一个程序?或者有详有略?希望老师能考虑一下烤漆减一下工作量,毕竟大家平时时间都给OO了,其他课都挺虚的。

  谢谢!

转载于:https://www.cnblogs.com/iwanna/p/9225742.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值