第一次个人编程作业

这个作业属于哪个课程 计科22级34班
这个作业要求在哪里 作业要求
这个作业的目标 完成个人项目(论文查重算法)并进行一系列性能测试

前言

这次的博客是软件工程的第二次作业,内容是个人项目的练习。
我将分为几个部分依次介绍:

  • github地址
  • PSP表格
  • 接口设计与实现
  • 性能分析
  • 单元测试
  • 异常处理说明

那么,让我们开始吧!

正文

github地址

本次作业的代码已上传github,地址: 个人项目

PSP表格

根据作业要求,我使用PSP表格预测并记录下自己完成各部分的时间

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 1h 10min
· Estimate · 估计这个任务需要多少时间 30min 10min
Development 开发 2day 9h
· Analysis · 需求分析 (包括学习新技术) 2h 2h
· Design Spec · 生成设计文档 30min 20min
· Design Review · 设计复审 10min 10min
· Coding Standard · 代码规范 (为目前的开发制定合适的规范) 30min 10min
· Design · 具体设计 1h 30min
· Coding · 具体编码 1day 1h
· Code Review · 代码复审 2h 10min
· Test · 测试(自我测试,修改代码,提交修改) 1day 5h
Reporting 报告 5h 3h20min
· Test Report · 测试报告 2h 3h
· Size Measurement · 计算工作量 1h 10min
· Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 1h 10min
· Total · 合计 3day16h 23h20min

接口设计与实现

本次项目代码中共有3个函数:find_similarity(),clear_output_txt(),main()。流程图如下:

  • find_similarity():
    这是本次项目中的核心部分,实现了对待对比文本文件的读取、对比。其中的关键是第三方库difflib的调用,使用difflib库中的SequenceMatcher可以完成对两个文本的相似度计算。
  • clear_output_text():
    这个函数会在文本读取出错时执行,清空输出文本的内容(若输出文本不存在,则建立一个内容为空的txt文件)

  • main():
    通过命令行执行该程序。对各种错误进行了处理、报错。

本程序优点在于调用第三方库difflib,有效减少了代码量。

性能分析

使用PyCharm自带的Profile工具进行性能分析

可以发现图中红色的模块_find_and_load_unlocked,_find_and_load,main是消耗最大的部分,前二者均与模块调用相关

单元测试

  • 输入正确的文件名称对比find_similarity()是否能输出想要的相似度
  • 测试命令行输入参数错误时是否提示
  • 测试各种报错情况是否正常
  • 测试当查重的文件为同一文件是否输出有误
  • 下面是测试代码的覆盖率,由Coverage得到

异常处理说明

  • 命令行输入参数不正确:提示用户正确的输入格式
  • 文件为空
  • 文件乱码(非UTF-8)
posted @ 2024-09-12 20:56  RMAB  阅读(35)  评论(0编辑  收藏  举报