OO学习总结
Posted 9998-0804
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OO学习总结相关的知识,希望对你有一定的参考价值。
一、 测试与正确性论证的比较
测试和正确性论证分别从用户角度和开发者角度对工程进行评估。前者能够评测程序在一般情况和可预见的特殊情况下的执行效果,后者能够较为全面地测试到每一个细节。
测试的优点:
- 所需时间较短;
- 能够较为全面地测试;
- 样例编写容易;
- 可保留样例,用于以后的回测;
测试的缺点:
- 无法涵盖所有细节,测试样例不能保证以后在运行时一定不会出错
正确性论证的优点:
- 逻辑严密;
- 可信度更高;
- 细节覆盖更广;
正确性论证的缺点:
- 不易上手;
- 测试时间成本高;
- 对代码做了小改动,可能就需要对整个工程重新论证;
二、 OCL语言与JSF规格的比较
OCL(Object Constraint Language)语言是面向对象设计中对图形符号的补充,能够完善建模元素的相关细节。其与JSF规格有相似之处,也有不同。
相同之处:
- 都是一种形式化的语言
- 具有无二义性
- 每个变量都有类型
- 不会改变系统的运行状态
- 都采用前置条件和后置条件对方法的运行加以约束
不同之处:
- 变量的类型:
- OCL有自己的一套变量(如Integer, Real, String, Boolean, Set, Bag, Sequence)
- JSF不仅支持Java语言定义的所有类型,还支持用户自定义的类型(比如有一个Request类, 则可以在JSF中用Request修饰变量)
- 变量的运算:
- OCL对变量规定了可以进行的运算方式(如 Boolean类型的and, or)
- JSF支持Java语言定义的所有运算方式
- 逻辑分支:
- OCL支持if, else一类的逻辑分支。
- JSF不支持if, else, while等逻辑分支。
- 上下文
- OCL支持用context表达上下文
- JSF不支持上下文表述。
- 符号系统
- OCL用pre, post表达前置条件和后置条件
- JSF用REQUIRES, EFFECTS表达前置条件和后置条件
三、 单电梯系统结构梳理
A. UML类图
B. 顺序图
C. 状态图
电梯:
调度器:
请求:
四、 学期小结
A. 知识点
B. 个人总结
通过这一学期的训练,我能感受到自己在面向对象设计与测试等方面的进步。
设计:
- 方法不会过于臃肿
- 实现类层次的划分
- 掌握多线程设计的基本原理
- 避免死锁
- 将具有联系的抽象数据归结于一个对象,通过对象来管理数据
- 约束代码行为,各个类与方法只行使自己的职能
测试:
- 减少盲目测试和碰运气的测试
- 学会根据规格进行测试
- 学会根据参数构造不同输入组合
- 使用Junit进行单元测试
质量:
- 提高鲁棒性
- 确保程序能对每一种可能的输入组合做出响应
设计、测试和质量这三方面都是相辅相成的,好的设计+全面细致的测试当然能确保这是一份质量优秀的代码, 能写出质量优秀的代码+会设计当然也会促进测试能力。
C. 工程化开发
通过这学期的学习,我觉得工程化是指把系统的、可量化的、有序的方法应用到软件的开发和维护上来。 通过规格对代码设计进行约束, 或许有时候显得不那么灵活, 但正是这种“笨拙”使得整个工程的规范性大大提高, 减少了后续测试的难度, 提高了软件的易维护性。
工程化开发的一般流程:
需求分析-->概要设计-->详细设计-->编码-->测试-->验收-->维护
需求设计:深入了解和分析用户的需求,避免设计时不必要的改动。
概要设计:确定设计层次、模块划分、接口规范、数据结构、出错处理等。
详细设计:实现概要设计中各个模块的算法、调用关系、说明每一个程序的设计考虑。
编码:根据详细设计补充代码、完成系统的功能。
测试:对编写好的代码进行初步测试,通过后交给用户,由其确认各项功能得到正确实现。
验收:用户验收软件。
维护:根据用户需求和环境的变化,对程序进行部分或全部的修改。
软件工程化的优势
- 降低软件系统的复杂性
- 提高软件可靠性
- 提高开发、维护、测试的效率
- 减少系统内部的逻辑耦合
- 提高人员协作的效率
D. 对课程的建议
- 及时更新消息应。可以建一个大群,所有对指导书的更新和其他重大消息发布于此,不允许讨论。各小班另建客服群用于答疑。这样可最大程度避免有的同学错过消息。
- 记录issue和各客服群中有价值的内容。可编成问答形式,用于以后助教的工作和答疑。(比如作为仲裁的依据)。
- 鼓励独立思考。对于issue中有较大价值的提问(如激发了同学的广泛讨论),可对提问者予以一定程度的加分。
- 否定恶意扣分。在仲裁时若发现有同学恶意扣分,可对其提出批评并记录在案。对于累犯者,可予以一定程度的扣分。所扣分数归被恶意扣分者所有。
- 提高扣分门槛。若要报告被测试者的bug,测试者应提供充分的理由,对于理由不充分者,其所报告的bug不予以采纳。
以上是关于OO学习总结的主要内容,如果未能解决你的问题,请参考以下文章