第一次个人编程作业
| 软件工程 | 19网工34 |
|---|---|
| 作业要求 | 作业要求 |
| 作业目标 | 设计论文查重算法,github代码管理,测试代码 |
psp
| PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
|---|---|---|---|
| Planning | 计划 | ||
| · Estimate | · 估计这个任务需要多少时间 | 720 | 800 |
| Development | 开发 | ||
| · Analysis | · 需求分析 (包括学习新技术) | 350 | 200 |
| · Design Spec | · 生成设计文档 | 50 | 75 |
| · Design Review | · 设计复审 | 60 | 80 |
| · Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 30 | 60 |
| · Design | · 具体设计 | 150 | 100 |
| · Coding | · 具体编码 | 80 | 120 |
| · Code Review | · 代码复审 | 100 | 50 |
| · Test | · 测试(自我测试,修改代码,提交修改) | 120 | 120 |
| Reporting | 报告 | ||
| · Test Repor | · 测试报告 | 30 | 60 |
| · Size Measurement | · 计算工作量 | 30 | 20 |
| · Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 30 | 30 |
| · 合计 | 1600 | 1695 |
计算模块接口的设计与实现过程
- 类图
![]()
- 算法主要思想
- 由于这是个小型项目,令字为向量,力求降低时间复杂度,降低准确率。
- 每个字在章节中出现的次数,便是此字向量的值。现在我们假设:
文章1中出现的字为:Z1c1,Z1c2,Z1c3,Z1c4……Z1cn;它们在文章中的个数为:Z1n1,Z1n2,Z1n3……Z1nm;
文章2中出现的字为:Z2c1,Z2c2,Z2c3,Z2c4……Z2cn;它们在文章中的个数为:Z2n1,Z2n2,Z2n3……Z2nm;
其中,Z1c1和Z2c1表示两个文本中同一个字,Z1n1和Z2n1是它们分别对应的个数,
最后我们的相似度可以用公式计算:![]()
计算模块接口部分的性能改进
- 使用jprofiler进行性能分析
- 该比对算法实例化了大量的String,需特别注意,要预防堆溢出。
计算模块部分单元测试展示
使用junit进行单元测试


测试结果写入文件效果

代码覆盖率

异常处理




浙公网安备 33010602011771号