第一次个人编程作业
github地址
这个作业属于哪个课程 | 计科22级12班 |
---|---|
这个作业要求在哪里 | 作业要求链接 |
这个作业的目标 | 遍历论文查重并封装成可执行文件,学习PSP和commit规范,学习测试和评估代码 |
一、设计思路
文件结构:
程序流程:
实现逻辑:
- 查找资料发现比较简单的实现是通过计算余弦向量来实现重复率检测。原理是统计词的频率并且根据nlp的思想将词转换为向量,余弦可以判断向量的相似程度(多维向量也成立),因此可以用来判断文章的相似度。
二、性能改进
时间:
1s左右通过9个案例,第一次加载Hanlp库时耗时较长
内存:
List开的最大,用于存储词汇
改进思路:
时空可以接受,基本都是一次遍历
三、测试
部分测试代码:
- 测试函数为所有,测试数据除初始提供的,另加入空地址,错地址等测试案例。
- 也测试了输入格式不对,文本为空等案例,但未写成代码测试。
测试结果:
覆盖率:
- FileUtil一部分为IO异常,不进入测试考察范围
- 综合下来,覆盖率高
四、异常处理说明
IOException:IO发生错误,可能是权限导致
InvalidFilePathException:自定义路径无效异常
五、PSP表格
阶段 | 描述 | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 5min | 5min |
· Estimate | · 估计这个任务需要多少时间 | 5min | 5min |
Development | 开发 | 5h30min | 5h |
· Analysis | · 需求分析 (包括学习新技术) | 2h | 2h |
· Design Spec | · 生成设计文档 | 1h | 10min |
· Design Review | · 设计复审 | 20min | 10min |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 20min | 10min |
· Design | · 具体设计 | 20min | 10min |
· Coding | · 具体编码 | 1h | 20min |
· Code Review | · 代码复审 | 30min | 1h |
· Test | · 测试(自我测试,修改代码,提交修改) | 1h | 1h |
Reporting | 报告 | 50min | 1h |
· Test Report | · 测试报告 | 30min | 40min |
· Size Measurement | · 计算工作量 | 10min | 10min |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 10min | 10min |
合计 | 7h | 6h5min |