软件作业2-个人项目
作业概述
| 这个作业属于哪个课程 | 软件工程 |
|---|---|
| 这个作业要求在哪里 | 个人项目 |
| 这个作业的目标 | 设计一个论文查重算法,并进行测试检验 |
GitHub链接
PSP表格
| PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
|---|---|---|---|
| Planning | 计划 | 25 | 20 |
| Estimate | · 估计这个任务需要多少时间 | 525 | 520 |
| Development | 开发 | 180 | 150 |
| Analysis | 需求分析 (包括学习新技术) | 60 | 90 |
| Design Spec | 生成设计文档 | 20 | 15 |
| Design Review | 设计复审 | 20 | 15 |
| Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 20 | 15 |
| Design | 具体设计 | 25 | 20 |
| Coding | 具体编码 | 50 | 60 |
| Code Review | 代码复审 | 30 | 32 |
| Test | 测试(自我测试,修改代码,提交修改) | 20 | 18 |
| Reporting | 报告 | 30 | 40 |
| Test Repor | 测试报告 | 15 | 15 |
| Size Measurement | 计算工作量 | 10 | 15 |
| Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 20 | 15 |
| 合计 | 525 | 520 |
模块接口的设计与实现

- HammingUtils类:getHammingDistance函数,输入两个simHash值,计算它们的海明距离;getSimilarity函数,输入两个simHash值,输出相似度。
- SimHashUtils类:getHash函数,传入String,计算出它的hash值,并以字符串形式输出;getSimHash函数,传入String,计算出它的simHash值,并以字符串形式输出。
- TxtIOUtil类:readTxt函数,txt文本的读入,writeTxt函数,文本输出。
- MainPaperChexk类:程序主入口,通过命令行参数读取对应文件,得出相似度写回结果文件。
- MainTest类:测试类,进行单元测试。
性能分析


内存上的占用主要在浮点数、数组集合的创建,调用的是Util包中的方法,无需改进。
单元测试
-
单元测试代码都写入MainTest类中,部分代码如下
![image]()
-
时间
![image]()
-
覆盖率
![image]()
异常处理说明
-
在SimHashUtils的getSimHash方法中加入代码来处理异常情况:
![image]()
-
文本字数过少异常测试
![image]()






浙公网安备 33010602011771号