1、测试与正确性论证的比较
测试:
效果直观,便于调试,可操作性强,但是覆盖率不如正确性论证。
正确性论证:
覆盖率高,可靠性高,但是可能会忽略代码实现的错误细节,不够直观,篇幅过长,不易于阅读。
比较:
测试和正确性论证都是测试工程的好方法,但是面向对象本身就是一种极为具体化的简单设计思路,正确性论证的必要性很小,大多数情况使用单元测试就能很好的应付测试需求。
2、OCL和JSF的比较
OCL是一种对象约束语言,没有二义性,能够完善建模元素的相关细节。
相似之处:思想类似,目标相同,框架相仿。
不同之处:OCL实用性更强,JSF不知所谓;OCL更加完善,JSF表达混乱;OCL用途广泛,JSF……不知道说什么好,先点菜吧。
3、
类图
时序图
状态图
4、总结
四个单元模块:面向对象基础,多线程开发,代码工程化,测试论证。
关系:多线程开发需要前一模块的代码基础;代码工程化需要有线程的代码来工程化,前两个模块就是创造了足够多的代码;测试论证也需要代码,第一个模块提供了这些代码。
梳理:实际上面向对象基础的部分我基本没学到什么东西,写代码挺简单的,也不会有什么BUG,感觉花费了很多时间却没有学到知识。多线程开发由于指导书混乱的原因让人很痛苦,最终选择了比较低劣的同时只有一个线程运行的模式,也没有学到什么东西,真的很惭愧。代码工程化由于JSF这个规格语言太愚蠢也只忙着互测撕逼了。测试论证部分让我很满意,学到了很重要的内容,但是一些同学在互测中的丑恶嘴脸也一览无余,极大地增长了人生阅历,认识到了社会的残酷,改变了对一些平日里看似友善淳朴实则阴险恶毒的同学的第一印象,让我不仅学到了重要的测试方法(真的很重要),也看清了许多同学的本质面貌,一举两得,大快人心。
总体来讲,程序设计部分真的没有学到多少东西,可能是因为我本身的代码水平就在平均之上。java的学习也很轻松,百度和谷歌是最好的老师。经过OO的锻炼,我的代码可以说有了一定程度的工程化改观,至少不那么难看了,这还是值得欣慰的。但是本学期花大量时间的JSF在日后一点用处也没有,除了能锻炼钢铁一般的意志以及百折不挠的心态以外我真的想不出这个规格有什么意义。
工程化开发的理解:
你的代码别的开发者能看懂,反之亦然。
你的代码一年之后你自己还能看懂,而不会出现完全难以维护的情景。
你的建模别的开发者也能看懂,反之亦然、
你的代码简洁而美观,你的代码可读性强,让人有阅读的欲望。
但是OO课程的工程化实在是让人不知道怎么说……先点菜吧。
OO课程的工程化的核心是JSF,但是这个JSF具体怎么样上文已经描述过了,而且实际工作中也不可能有这么愚蠢的规格写法。
对课程的期望和建议:
希望课程组能够正视多年以来的广泛的批评,仔细思考并处理这些建议,同时要深入群众,了解同学们不满的关键。摊开来说就是,恶意扣分并不是同学们厌恶这门课的首要原因,首要原因是因为课程评价机制的不完善,即课程组难以遏制恶意扣分现象。社会是复杂的,只要采用互测的机制就不可能杜绝恶意扣分,所以课程组的体系建设核心应该立足于让恶意扣分的同学得不偿失,而非现在的试图让同学没办法恶意扣分。要知道我们北航的同学一个比一个精明,钻空子恶意扣分的本领真的是全国数一数二,课程组的几位老师就算再辛苦再强调也根本无法扑灭互测下的恶意扣分现象。相反,恶意扣分的行为不但得不到惩罚,连被纠正都很难。很多同学完全被恶意扣分之后,完全就是虽然心里很不爽,但是找不到什么反驳的理由,只能一边大骂测试者一边直接申请仲裁,给助教带来了很大的工作负担。另一方面,有一些同学心术不正,视规则如无物。有的同学在发现对方暴露了个人信息之后,即使对面只暴露了学号,他也会不辞辛劳的查找各种资料,想方设法找出这个学号对应哪位同学,然后还把这个同学的名字打错了,然后狠狠讹诈这名同学,恶意扣上十多个BUG,却不申报无效,还无理由的挂了一个CRASH,试图混取大量分数。在遭到申诉之后,这名同学竟然有脸说出我本可以报你一个无效,但是我现在还要处理你的申诉,你这个人怎么能这样呢?这种话。作为一个有意违反了两条规定(故意不申报无效,恶意扣分)的同学,能够说出这种话也是让人很服气的。我相信如果一个同学不慎暴露了个人信息,他心中是可以接受被申报无效的,因为这确实是他做的不好。但是,每一个有自尊,有契约精神的同学,都无法容忍上述行径。上述行为一来是对规则的熟视无睹,这样的测试者理应受到制裁,个人认为与“作弊”别无二致。二来是对认真完成作业,却不慎暴露个人信息的同学的侮辱,因为一份完成度很好的作业,却莫名其妙被冠以十多个莫须有的BUG,这是任何一个有自尊的同学无法接受的。
因此,我提议,在以后的OO课程中严惩这种不守规则的测试者,对乱扣BUG的行为一经发现,两倍扣分;对故意不申报无效的测试者,直接记测试者无效,以儆效尤。