这个作业属于哪个课程 |
软件工程 |
这个作业要求在哪里 |
作业要求 |
这个作业的目标 |
论文查重个人项目 + 单元测试 + PSP表格 + Git管理 + 性能测试 |
作业代码连接
PSP表格
PSP2.1 |
Personal Software Process Stages |
预估耗时(分钟) |
实际耗时(分钟) |
Planning |
计划 |
30 |
|
· Estimate |
· 估计这个任务需要多少时间 |
30 |
|
Development |
开发 |
250 |
|
· Analysis |
· 需求分析 (包括学习新技术) |
25 |
|
· Design Spec |
· 生成设计文档 |
15 |
|
· Design Review |
· 设计复审 |
15 |
|
· Coding Standard |
· 代码规范 (为目前的开发制定合适的规范) |
15 |
|
· Design |
· 具体设计 |
30 |
|
· Coding |
· 具体编码 |
90 |
|
· Code Review |
· 代码复审 |
30 |
|
· Test |
· 测试(自我测试,修改代码,提交修改) |
40 |
|
Reporting |
报告 |
45 |
|
· Test Repor |
· 测试报告 |
20 |
|
· Size Measurement |
· 计算工作量 |
15 |
|
· Postmortem & Process Improvement Plan |
· 事后总结, 并提出过程改进计划 |
20 |
|
|
· 合计 |
325 |
|
计算模块接口的设计与实现过程
整体流程
- 通过命令行接收原文文件输入路径、抄袭版论文的文件输入路径、答案文件输出路径。
- 对文本内容进行处理。
- 通过核心算法得出相似度。
- 输出答案。
流程图
主要方法
核心算法:Levenshtein Distance 算法
原理:
Levenshtein Distance 算法是指将一个字符串转化为另一个字符串所需的最少操作数,以此来确定两个字符串的相似度。
核心操作:
通过创建矩阵来求出最小操作数
|
|
a |
b |
c |
|
0 |
1 |
2 |
3 |
a |
1 |
|
|
|
b |
2 |
|
|
|
c |
3 |
|
|
|
然后进行判断: |
|
|
|
|
- 如果两字符相等,取 array[i-1][j-1] 的值
- 如果两字符不相等,取 Math.min(array[i-1][j], array[i][j-1], array[i-1][j-1]) + 1
相似度公式
运行结果截图
计算模块接口部分的性能改进
CPU Load
内存消耗
Memory
消耗最大的函数
改进思路
如果对核心算法的时间复杂度进行优化,准确率也会有所下降,而优化空间复杂度不会有这种影响。空间复杂度从O(m*n)降到了O(min(m,n))。
计算模块部分单元测试展示
部分单元测试代码
测试思路
- 通过原文件与各种抄袭文件进行相似度计算,得出各种情况下的查重率。
- 通过输入错误的参数来测试会出现的报错情况。
测试覆盖率截图
计算模块部分异常处理说明
- 主要是在进行I/O流相应操作时会出现的异常: FileNotFoundException 和 IOException
对应测试
- testErrorIn 与 testEmptyIn 均是测试 FileNotFoundException 异常情况。
- testErrorOut 测试 IOException 异常情况,出现该情况是因为没有权限访问导致等情况导致无法写入文件。
PSP表格
PSP2.1 |
Personal Software Process Stages |
预估耗时(分钟) |
实际耗时(分钟) |
Planning |
计划 |
30 |
35 |
· Estimate |
· 估计这个任务需要多少时间 |
30 |
35 |
Development |
开发 |
250 |
330 |
· Analysis |
· 需求分析 (包括学习新技术) |
25 |
50 |
· Design Spec |
· 生成设计文档 |
15 |
20 |
· Design Review |
· 设计复审 |
15 |
20 |
· Coding Standard |
· 代码规范 (为目前的开发制定合适的规范) |
15 |
30 |
· Design |
· 具体设计 |
30 |
20 |
· Coding |
· 具体编码 |
90 |
120 |
· Code Review |
· 代码复审 |
30 |
30 |
· Test |
· 测试(自我测试,修改代码,提交修改) |
40 |
40 |
Reporting |
报告 |
45 |
55 |
· Test Repor |
· 测试报告 |
20 |
15 |
· Size Measurement |
· 计算工作量 |
15 |
10 |
· Postmortem & Process Improvement Plan |
· 事后总结, 并提出过程改进计划 |
20 |
30 |
|
· 合计 |
325 |
420 |