首页 > 其他 > 详细

OO第三单元总结

时间:2020-05-23 15:58:10      阅读:57      评论:0      收藏:0      [点我收藏+]

 

Part 1 JML基础

 Java Modeling Language(JML)是一种行为规范语言吗,用于规定Java类和方法的行为和接口。通过jml可以严谨的定义方法和类的行为,只需要阅读jml就可以无歧义的理解类和方法的功能,并可以开展测试。

 

使用JML的两个主要好处是:

1、对Java程序模块(即类和接口)的行为的准确,明确的描述以及Java代码的文档 

2、工具支持的可能性

 

jml工具目前仍在开发中(疑似弃坑),工具链尚不完善

 

jml工具链:

openJML:对JML注释的完整性进行检查。

JMLUnitNG:根据jml自动生成测试样例并进行测试。

Part 2 JMLunit测试

 经历了一上午+一下午后,我还是没能解决所有的报错,已放弃

技术分享图片

Part 3 架构设计

hw9:

技术分享图片

概述:

用每个person分别保存自己的link集合来保存整个社交网络,network只保存id到person的映射关系

hw10:

技术分享图片

概述:

这次添加了Group,需要额外维护group层的人数、年龄平均等信息。

与Group层级有关的询问的信息都保存在group里,每次addRelation和addToGroup时对更新所有group的信息

hw11:

技术分享图片

概述:

这次group增加了删除的需求,network层面增加了查询最短路、双连通等需求。并不需要改变架构,只需要添加对这些需求的支持

Part 4 BUG分析

hw9:

wa:认为自己与自己没有relation,导致querylink等函数出错。

hw10:

wa:如果addrelation重复添加自己,则会重复计数。

oe:提交了官方包

hw11:

wa:稍微修改了一下tarjin算法,因为我们只需要求两个点是否双连通,但是出了bug。bug实现:从一个询问人出发,dfs到另一个人,若路上所有人的子孙都有返祖边,则stronglink。修改:在dfs树上确认另一个点的位置后从该点开始,记录其子孙返祖边返回的最高点,跳到高度为该点+1的点,若能一直返回根则stronglink

tle:有一个qmp测试点ctle。qmp我采用了每次dfs的方法实现,在极限数据下时间比较接近时间限制。

Part 5 心得体会

这个单元我们主要学习了契约式设计、规格化设计,完成了三次面向规格编程的作业和一次完善规格的实验。相比指导书,规格描述部分需求时更加简便、无歧义,但是在描述一些复杂功能时非常冗长,比如查询连通块和查询双连通等功能。由于工具链尚不完善,在编写规格时往往也会出现一些难以察觉的问题,这些在实验和作业中都有所体现。测试是一个复杂的工程,只根据jml生成完备的测试显然是不现实的,我觉得jml这样一种规格语言用途也不在于自动测试,而在于辅助我们实现契约式设计,将一个大的工程拆分为互不干涉的模块。感谢课程组的老师和助教的辛苦付出;感谢分享自己宝贵经验的同学们。

 

OO第三单元总结

原文:https://www.cnblogs.com/lllllllllllllllllllllllllllll/p/12941601.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!