OO学期总结
一、测试与正确性论证
程序测试(program testing)是指对一个完成了全部或部分功能、模块的计算机程序在正式使用前的检测,以确保该程序能按预定的方式正确地运行。软件的正确性尚未得到根本的解决,软件测试仍是发现软件错误和缺陷的主要手段。为了发现系统中的错误,应竭力设计能暴露错误的测试用例。测试用例是有测试数据和预期结果构成的。一个好的测试用例是极有可能发现至今为止尚未发现的错误的测试用例。
程序正确性理论 [1] (theory of program correctness)程序设计理论的一个重要组成部分.研究如何使用程序设计语言编制程序,以正确实现预定的目标.程序正确性理论提出编制正确程序的两种途径一种称为程序验证,研究如何使用数学推理来严格论证程序是否符合其目标.另一种称为程序综合,研究如何由给定目标出发,逐步构造一个在计算机系统上可运行的程序,而且要求构造过程的每一步都是严格保持正确无误的.在保证正确性的前提下,为提高程序运算效率而实现的程序之间的转换,称为程序变形,也是程序正确性理论的一个重要内容.程序综合和程序变形是自动程序设计的理论基础.
其中正确性论证的抽象程度更高,可靠性更好,覆盖路更高,但是相对成本也会更高,软件测试和正确性论证需要在不同的场景中灵活运用,结合两者的优点,才会发挥更大的作用,收获更好的效果。
二、OCL(Object Constrain Language)
OCL,是一种指示用户建模系统中的限制方式。它是UML可选的附加内容,可以用来更好的定义对象的行为,并为任何类元指定约束。
特点:
1.是一种精确的、无二义性的语言,易于使用和掌握。
2.是一种规范说明性语言,它是具有没有任何副作用的声明性语言。对OCL表达式的计算将返回一个值,计算不会改变系统的状态。
3.是一种类型化语言,即OCL中的每个表达式都是具有类型的。
4.不是一种程序设计语言,,不能用OCL变现程序逻辑和控制流程。
JSF和OCL具有很多相似点,但是JSF的规范性不够强,并且OCL具有很多类型,而JSF的类型较为单一。
三、 捎带电梯
1. 类图
2. 时序图
3. 状态图
四、学期总结
4.1单元模块
四个单元模块分别为Java基础、多线程和线程安全设计、抽象与规格、测试与论证。这四个单元模块是循序渐进的,又有所交叉的。首先Java基础是认识面向对象,从对类的划分,再到Java多线程,难度逐渐上升,至少类的划分不能再是问题。在此基础上,提出类对规格和抽象,逐渐上升到代码质量的层次,最后是论证程序的正确性,工程化要求。
4.2 设计、测试、代码质量分析
最初是完全不会设计的,但一学期的训练,至少懂得了该如何分析与设计,且不说设计的好坏,懂得了程序的设计对于程序实现的重要性,不同的设计在代码实现上难度是不同的,并且在后期测试,论证等方面都能很明显的体现出来,磨刀不费砍柴工,设计很重要。第二,测试是软件工程中十分重要的一个流程了。程序是完成用户的需求,而测试就是检测相关功能是否实现,以及其他边界情况。好的测试,会增加代码的鲁棒性,健壮性,以及可靠性,通过测试,能够更快的对整个程序的功能实现有所了解,为后续的交付提供依据。第三,代码质量,是设计,测试,代码风格的综合体现。想起自己以前的面条式代码,可以说非常惭愧了。首先,在设计上了解了Java的相关设计模式,在测试上,懂得了鲁棒性测试,以及分支树测试,在代码风格上,良好的缩进,合适的方法职责等。总的来说自己这一学期是从无到有的过程,确实是学到了很多东西。
4.3 工程化开发
一个工程,需要设计、实现、测试、论证等一系列工作的完成。工程是严谨的,是面向需求的,在实现需求的基础上,减少实现成本,提高实现的可移植性。工程化开发具有多人合作性,即需要规范化实现,提高团队的效率,减少错误的出现。我认为大概步骤如下:
- 需求分析;
- 架构设计;
- 具体类的设计;
- 规格实现(JSF);
- 代码实现;
- 工程测试;
- 正确性论证;
- 交付客户;
- 客户反馈;
- 更新设计,实现改动;
上面的过程并不仅仅是次序关系,在整个工程的过程中是有所交叉的。总的来说,工程化开发首先是面向需求,其次是规格化,提高团队效率,减少错误。
4.4 对课程的期望与建议
当我置身事外来看OO时,其实感觉OO这门课所教授的也不过是工业界的一角。我们训练的内容不过也是很简单的东西,但对于我来说已经是比较难了(当时觉得,现在活过来了,觉得还好)。对这门课的期望,也许就是更加公平化的测试了吧。我觉得是分数限制了这门课的良好效果。如果没有那么多的分数利益(通过非正当方式),也许就会更加关注提高自身,从而获得更高的分数,但有的时候这个制度确实是伤了勤勤恳恳的同学的心。不管这门课有多少槽点,我还是要感谢这门课,因为我也确实是学到了很多知识(从小白做起),希望OO越办越好,加油!
[引用]
https://wenku.baidu.com/view/aa4124c70408763231126edb6f1aff00bed570ae.html。