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来分析代码性能,分析结果如下图所示:

性能分析图1
性能分析图2
从中可以看出耗时最多的是原文文件和盗版文件的读取和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
posted on 2023-09-18 01:57  llalala123  阅读(67)  评论(0编辑  收藏  举报