BUAAOOUnitFour总结分析与课程总结
一、本单元架构设计
-
第一次作业
第一次作业任务是完成UML简单类图的解析,创建MyClass类,用于管理类相关数据,包括类的属性、类的方法、类实现的结构等所需要的数据。创建MyOperation类,用于管理方法相关数据,包括方法所包含的参数。创建MyInterface类,用于管理接口相关数据,包括接口的继承等数据。交互模式如下:![]()
-
第二次作业
第二次作业在第一次作业的基础上新增了对UML顺序图和状态图的简单解析。本人采用了层次化的架构设计思想,根据starUML文件结构,逐层建立类封装数据。采用这种架构虽然有些类在本次作业中不一定用的到,但是如果有新的需求到来,整个架构是不需要发生大的改变的。另外,关于
UmlState类型的对象,本人新建了一个MyState类,其有三个子类MyNormalState、MyFinalState、MyIntialState用来统一管理类,这样做的好处是在查询一个状态的后继状态数时,不需要判断后继状态是否是初始状态抑或是终止状态,比较符合面向对象的思想。![]()
-
第三次作业
第三次作业架构基本与第二次相同,不同的是为了满足新增规则判断的需求,新建了一个MyCheckClass类,用于对每个规则的判断,并且将不符合规则的对象放入相应的容器当中,最后根据对应容器进行Check操作。![]()
二、对四个单元中架构设计
-
第一单元架构设计
![]()
-
第二单元架构设计
![]()
-
第三单元架构设计
![]()
-
第四单元架构设计
见第一部分,不再赘述。
三、
-
第一单元
首先,我们不可能穷举所有的表达式,故可以考虑自动生成大批量数据进行测试。但是由于对WF的判断,故生成的数据需要符合一定的格式。由于讨论区的大佬推荐了python的科学计算包,能够对表达式进行相应的赋值、求导操作,所以第一单元的测试主要采用了自动化对拍测试的方法。但是自动生成并不是十全十美的,一来对有复杂的括号的表达式并不能很好的解析,二来当表达式的格式不是很规整时,时常出现一些奇奇怪怪的错误。另外一些极端数据下的验证,还是手搓比较好。 -
第二单元
-
第三单元
第三单元主要是对JML的理解,切忌面向JML编程,本单元测试主要采用JUNIT的进行测试,但是发现这样测试只适合数据量较小的情况,进行正确性的测试。也正是因为这样,导致本人在极端数据面前CTLE。所以最好应该自动生成大批量数据进行测试,并且不能忽视极端可能造成CTLE的数据。 -
第四单元
第四单元测试主要是在理解starUml文件的基础上,自己在starUml中画图然后进行测试。由于本单元理解相对较好,几乎没有出现bug。
四、
-
-
-
自学能力的提高:自学能力的提高是我最大的收获,面对新的需求,需要自己查阅大量的资料,然后才可能完成。所以课上老师只给你点拨一下,剩下的工作都得靠你自己去完成,虽然过程磕磕绊绊,但是完成任务那一刻还是很有成就感。
五、
-
-
-
希望多增加一些测试相关的知识。
六、
-
-
-
课后问卷老是容易忘记。
- 老师、助教都特别有意思。
- OO不得不说是一门体验很好专业课。







浙公网安备 33010602011771号