软件工程实践第二次作业——个人实战

171909059吴子隆 学生 2023-03-03 23:44:20
这个作业属于哪个课程2023年福大-软件工程实践-W班
这个作业要求在哪里软件工程实践第二次作业——个人实
这个作业的目标Json数据读取、Git代码管理、代码测试
其他参考文献

目录

  • Gitcode项目地址
  • PSP表格
  • 解题思路描述
  • 接口设计和实现过程
  • 接口设计
  • 算法关键
  • 关键代码展示
  • 性能改进
  • 单元测试
  • 如何提高覆盖率
  • 异常处理
  • 心得体会

Gitcode项目地址

https://gitcode.net/qq_56073975/project-java/-/tree/master/

PSP表格

PSPPersonal Software Process Stages预估耗时(分钟)
Planning计划20
Estimate估计这个任务需要多少时间10
Development开发600
Analysis• 需求分析 (包括学习新技术)60
Design Spec• 生成设计文档120
Design Review• 设计复审10
Coding Standard• 代码规范 (为目前的开发制定合适的规范)10
Design• 具体设计90
Coding• 具体编码360
Code Review• 代码复审60
Test• 测试(自我测试,修改代码,提交修改)90
Reporting报告60
Test Repor• 测试报告30
Size Measurement• 计算工作量10
Postmortem & Process Improvement Plan• 事后总结, 并提出过程改进计划20
合计1100

解题思路描述

因为Java自带的工具类比较多,实现功能比较方便所以选用了Java作为项目实现语言。拿到题目首先看了一下比赛数据,发现选手的信息比较简单,只是国家名字需要多访问一层,而每场比赛的胜者数据需要根据队伍编号去队伍的列表中查询,然后拿着查询到的选手号码去选手列表中查询选手姓名,而整体的数据的无关字段较多所以使用了更专注于字段数据的org.json.JSONObject库作为工具实现项目功能,不编写实体类,只使用JSON对象。解决方法大致上是获取上一阶段的数据作为下一阶段遍历查询的依据

接口设计和实现过程

接口设计

项目分为AOSearch, FileConverter, Matches和Players四个类。其中AOSearch类是程序入口,负责读取指令文件,逐条分析并调用Matches和Players类执行指令,并将执行的结果合并起来写入指定的输出文件中。

FileConverter类负责将数据文件读取为Java String字符串,供Matches和Players类使用。

Matches和Players类是两个数据类,负责解析从FileConverter类中传递来的字符串,输出对应指令要求的数据给AOSearch类

算法关键

Players类中,从json选手对象数组中获取选手Json对象对应的字段并添加上前缀

Matches类中 从json比赛对象数组中获取比赛时间,比分,和连续遍历查询获胜选手姓名

关键代码展示

img

img

性能改进

时间:30分钟

每读取一个命令可以缓存下来执行这条命令的结果,这样下一次相同命令到达时就可以快速做出响应

每读取一个文件可以保存下来这个文件的内容到内存中,这样下一次要读取相同文件就只需访问内存

单元测试

主要测试了AOSearch类的main函数,因为对非法命令进行鉴别的代码逻辑主要在main函数中。另外测试了FileConverter类的文件读取功能,以及players类的深层访问JSON对象字段的功能和Matches类的越界日期鉴别功能。

img

如何提高覆盖率

idea中可以看见覆盖率以及每个文件被覆盖的代码,对为覆盖到的代码进行分析,根据分析结果构造对应的测试用例。

img

异常处理

在main函数中处理非法命令,通过对课程博客用例的分析,非法命令只要分为:

1.没有空格的命令

只要鉴别命令是不是players

2.含空格的命令

多于1个空格为非法命令

空格之后的命令部分转化为int判断大小即可判断是不是越界日期

心得体会

一定要在课程作业刚刚发布就做详细计划,不然ddl有我好果子吃

学会了单元测试和idea的测试功能,以前写代码总是不想写测试代码,但是单元测试真的可以帮助发现和定位很多只看代码看不出来的错误

原来觉得编写实体类再把JSON对象转化为java对象很麻烦,现在发现只靠字符串操作JSON对象会也需要很多遍历操作,效率上比较难分析,因为没有java实体类所以很难用java工具类提供方便和提高效率,但是基于JSON对象的操作上手更简单适合小项目的开发

...全文
193 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
郭渊伟 助教 2023-03-12
  • 打赏
  • 举报
回复

对于性能改进,有具体实施吗

SoftwareTeacher 2023-03-04
  • 打赏
  • 举报
回复

一定要在课程作业刚刚发布就做详细计划,不然ddl有我好果子吃


你的 PSP 没有写实际的时间消耗。

688

社区成员

发帖
与我相关
我的任务
社区描述
2023年福州大学软件工程实践课程W班的教学社区
软件工程团队开发软件构建 高校 福建省·福州市
社区管理员
  • FZU_SE_teacherW
  • 张书旖
  • 郭渊伟
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧