688
社区成员
发帖
与我相关
我的任务
分享| 这个作业属于哪个课程 | 2023年福大-软件工程实践-W班 |
|---|---|
| 这个作业要求在哪里 | 软件工程实践第二次作业——个人实 |
| 这个作业的目标 | Json数据读取、Git代码管理、代码测试 |
| 其他参考文献 |
https://gitcode.net/qq_56073975/project-java/-/tree/master/
| PSP | Personal 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比赛对象数组中获取比赛时间,比分,和连续遍历查询获胜选手姓名


时间:30分钟
每读取一个命令可以缓存下来执行这条命令的结果,这样下一次相同命令到达时就可以快速做出响应
每读取一个文件可以保存下来这个文件的内容到内存中,这样下一次要读取相同文件就只需访问内存
主要测试了AOSearch类的main函数,因为对非法命令进行鉴别的代码逻辑主要在main函数中。另外测试了FileConverter类的文件读取功能,以及players类的深层访问JSON对象字段的功能和Matches类的越界日期鉴别功能。

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

在main函数中处理非法命令,通过对课程博客用例的分析,非法命令只要分为:
1.没有空格的命令
只要鉴别命令是不是players
2.含空格的命令
多于1个空格为非法命令
空格之后的命令部分转化为int判断大小即可判断是不是越界日期
一定要在课程作业刚刚发布就做详细计划,不然ddl有我好果子吃
学会了单元测试和idea的测试功能,以前写代码总是不想写测试代码,但是单元测试真的可以帮助发现和定位很多只看代码看不出来的错误
原来觉得编写实体类再把JSON对象转化为java对象很麻烦,现在发现只靠字符串操作JSON对象会也需要很多遍历操作,效率上比较难分析,因为没有java实体类所以很难用java工具类提供方便和提高效率,但是基于JSON对象的操作上手更简单适合小项目的开发
对于性能改进,有具体实施吗
一定要在课程作业刚刚发布就做详细计划,不然ddl有我好果子吃
你的 PSP 没有写实际的时间消耗。