2020软件工程第一次个人编程作业
这个作业属于哪个课程 | <软件工程> |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/fzu/SE2020/homework/11167 |
这个作业的目标 | <学习解析 Json 文件,从中提取所需信息并熟悉 GitHub 的使用> |
学号 | <031802117> |
PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 30 | 20 |
Estimate | 估计这个任务需要多少时间 | 720 | |
Development | 开发 | ||
Analysis | 需求分析 (包括学习新技术) | 360 | 300 |
Design Spec | 生成设计文档 | 0 | 0 |
Design Review | 设计复审 | 0 | 0 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 20 | 20 |
Design | 具体设计 | 30 | 30 |
Coding | 具体编码 | 180 | 240 |
Code Review | 代码复审 | 60 | 10 |
Test | 测试(自我测试,修改代码,提交修改) | 30 | 15 |
Reporting | 报告 | 30 | 10 |
Test Report | 测试报告 | 30 | 60 |
Size Measurement | 计算工作量 | 30 | 30 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 30 | 15 |
合计 | 830 | 750 |
解题思路描述
-
看完题目后,浑然不知道怎么入手为好,压根不知道从哪里着眼。那么我一开始就没有对于代码的思路进行设计规划。
-
首先是学习老师的b站视频,学习到基本的git的使用,完成fork,clone,pull request等一系列操作(中间就是使用老师的示例代码先充充数)。
-
其次也就是最痛苦的一块:代码的设计。在此,我后悔之前学习python时的偷工减料,之前只是学习了最最基础的语法,对于文件的操作完全是丈二摸不着头脑。对于代码的设计其实是完全不存在的,就是通过对于示例代码的学习来解决此问题的。经过一顿猛学(百度+csdn一行一行的代码查阅),最后大致清楚代码的具体流程。
代码流程
-
完成初始化。具体:完成文件.json的输入,对输入数据采取所需信息,将信息根据不同的指令需要分为3个文件并生成出来,以便后续使用。
-
根据3种不同的指令需要,完成数据的统计,并得出结果。(当然中间一顿操作猛如虎:解析json,分类,数据再转化为json,生成json文件)。
-
最后就是对于这四条指令以外指令的判别(初始化+三条查询指令),简称添添补补。比如初始化的报错提示,查询指令的报错提示。
任务分解(图示)
迭代过程
-
我属于直接copy示例代码的人,我第一步先运行那四条指令,明白程序的大概要求。
-
第二步我看怎么初始化的,代码具体覆盖在哪里。整个初始化流程是怎么样的,初始化失败是怎么样的。
(1)首先就是根据百度等大概知道json解析的方式:创建解析对象+添加命令行参数
(2)其次就是我看不懂代码的地方:初始化的时候进行分类,同时计数。(主要是不知道为什么出来'actor__login''type'等)
(3)最后生成3个文件。(当然中间就是json转字典,字典再转回json保存) -
第三步就是查询指令怎么书写,这个跟c语言差不多,看看就OK了。
-
最后一步就是指令输入错误会报错,就比如初始化过了,但没有生成文件,报错。
5.当然还有什么性能优化,我前面的事情其实都差一块,这里实在是没有能力做到,只知道是多线程进行提速。
困难描述及解决办法寻找
-
一开始不会json的解析,然后一开始头铁,没有去结合实例代码去查阅,导致一开始寸步难行。后来解决方案就是照着实例走。发现还行
-
然后就是初始化的问题了,初始化一开始和c语言差不多,无非是多了些转化,但是后面有个分类数据并统计的,那代码看着实在不会。(。。。痛苦)
-
最后一个难题就是查询问题的了,一开始以为初始化完后,根据需要计数,后来明白初始化后,知道初始化中已经是进行分类统计。
-
当然我性能没有优化,听同学说用多性能进行提速。
单元测试截图和描述
1.本地测试数据
2.coverage单元测试覆盖率:
- 我不知道有什么用,就是似乎把没有跑到的代码显示了出来,覆盖率是92%。
- html版本
性能测试
代码规范
总结
1.就是一定要好好学习,以前不好好学习下python,现在很是悔恨。然后就是以后多接触下文件的输入,解析,输出以及生成(就像这次json的解析,以及我看不懂的输入后的分类。我感觉这次作业我主要是死在这上面)。
2.百度,csdn还是蛮方便的,增强了自学能力(额,应该是吧)。 其实过程中经常不知道要干什么,最后就是死盯着代码,才走出坑来。
3.学习了pull request工作,fork,clone,push等一系列仓库的基本操作。