1 与Github链接与作业摘要
Github网址: Github链接
| 这个作业属于哪个课程 | 所属课程链接 |
|---|---|
| 这个作业要求在哪里 | 作业要求链接 |
| 这个作业的目标 | <熟悉软件工程流程,把握PSP流程框架,精进测试代码和性能改进的能力> |
2 PSP表格时间估计
| PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
|---|---|---|---|
| Planning | 计划 | 25 | |
| Estimate | 估计这个任务需要多少时间 | 15 | |
| Development | 开发 | 25 | |
| Analysis | 需求分析 (包括学习新技术) | 45 | |
| Design Spec | 生成设计文档 | 30 | |
| Design Review | 设计复审 | 20 | |
| Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 30 | |
| Design | 具体设计 | 25 | |
| Coding | 具体编码 | 30 | |
| Code Review | 代码复审 | 15 | |
| Test | 测试(自我测试,修改代码,提交修改) | 25 | |
| Reporting | 报告 | 45 | |
| Test Report | 测试报告 | 30 | |
| Size Measurement | 计算工作量 | 25 | |
| Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 20 | |
| 合计 | 405 |
3 计算模块接口的设计与实现过程
3.1 函数类型
本次作业采用了三个函数,一个是read_file的读文件函数,一个是calculate_similarity的文本相似性检验函数,最好一个是main函数调用前两个来实现论文查重。因此,read_file和calculate_similarity是两个相互独立的函数,而main函数调用了read_file和calculate_similarity函数。
calculate_similarity的文本相似性检验函数
设计思路:该函数的设计思路是使用difflib模块来比较两个文本之间的差异,通过计算差异字符数和原文字符数的比例来确定相似度。这个相似度值表示抄袭版文本与原文的相似度,可以用于检测文本的重复率。
函数流程图:

3.2 算法关键
该函数的设计思路是使用difflib模块来比较两个文本之间的差异,通过计算差异字符数和原文字符数的比例来确定相似度。这个相似度值表示抄袭版文本与原文的相似度,可以用于检测文本的重复率。
4 计算模块接口部分的性能改进
4.1 经过Code Quality Analysis并消除警告

其中存在一个因为PE8 编码样式违规造成的弱警告,对代码运行无影响,忽略不计。
4.2 使用pycharm的cProfile来分析代码性能,分析结果如下图所示:


从中可以看出耗时最多的是原文文件和盗版文件的读取和python库的调用。然而,python库的调用快慢无法通过代码优化,文件读取也比较难有较大的速度提升,因此暂无法改进性能。
5 计算模块部分单元测试展示
主函数的测试

6 计算模块部分异常处理说明
在尝试进行读文件覆盖率计算的时候,发现其覆盖率很低。

代码从两方面出发,一方面是读成功的检验,另一方面是读失败的检验。而覆盖率低究其原因是文件读取失败,更改过后,覆盖率明显从0.25提升至0.79,覆盖率未满,是因为当文件不存在时,便不会执行读成功的部分。

7 PSP表格实际花费时间
| PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
|---|---|---|---|
| Planning | 计划 | 25 | 30 |
| Estimate | 估计这个任务需要多少时间 | 15 | 30 |
| Development | 开发 | 25 | 45 |
| Analysis | 需求分析 (包括学习新技术) | 45 | 60 |
| Design Spec | 生成设计文档 | 30 | 45 |
| Design Review | 设计复审 | 20 | 20 |
| Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 30 | 50 |
| Design | 具体设计 | 25 | 30 |
| Coding | 具体编码 | 30 | 50 |
| Code Review | 代码复审 | 15 | 20 |
| Test | 测试(自我测试,修改代码,提交修改) | 25 | 55 |
| Reporting | 报告 | 45 | 50 |
| Test Report | 测试报告 | 30 | 30 |
| Size Measurement | 计算工作量 | 25 | 30 |
| Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 20 | 15 |
| 合计 | 405 | 600 |
浙公网安备 33010602011771号