个人项目1

这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/SoftwareEngineeringClassof2023/
这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/SoftwareEngineeringClassof2023/homework/13324
这个作业的目标 结合PSP学习需求分析,设计,高效编码,测试以及相关工具的使用

作业链接 witch250/work2

PSP表格

Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
计划 5 15
· 估计这个任务需要多少时间 5 15
开发 555 1020
· 需求分析 (包括学习新技术) 240 360
· 生成设计文档 10 7
· 设计复审 5 1
· 代码规范 (为目前的开发制定合适的规范) 20 5
· 具体设计 20 12
· 具体编码 120 240
· 代码复审 20 5
· 测试(自我测试,修改代码,提交修改) 120 390
报告 120 85
· 测试报告 60 70
· 计算工作量 30 5
· 事后总结, 并提出过程改进计划 30 10
· 合计 680 1120

模块接口的设计与实现过程

项目由main.py组成,采用LevenshteinJaccard计算重复率。main.py只有四个函数,分别是读取文件,写入文件和LevenshteinJaccard的实现。关于Levenshtein,调用了python包;关于Jaccard,则按照公式进行计算。最后将LevenshteinJaccard得到的结果加权后得到重复率

性能改进

总体上调用包,不知道怎么做性能改进
消耗时间最大的函数是导入的外部包jieba,用来划分关键词,同样的,也不知道怎么改进

时间消耗 由line_profile生成:

如下图,在Levenshtein函数中jieba分词的消耗时间占比为53.0和16.8,剩下的是从外部包导入的Levenshtein方法,占30.2

如下图,在Jaccard函数中jieba分词的消耗时间占比为43.0和57.0




内存占用 由memory_profile生成
内存占用 由memory_profile生成

单元测试展示和异常处理

没有找到单元测试的方法,所以自己做普通的测试

覆盖率 由coverage生成:

确实没有做写入文件和内存溢出的异常测试

异常测试例子如下:


背景是vscode和它自带终端的白色背景

总结

需求分析花了很多时间,一部分在复习Python,一部分在网上搜索和学习实现功能的技术
认为详细设计可以做的更好,但由于不了解技术,不好做更详细的设计,也没有做记录,在编码的过程中还要找包中函数
设计应该是明确的,从完成的代码看,编码过程有些时间浪费掉了
安装测试工具,熟悉使用花了一定时间,这部分包含在了测试里

参考

simhash的实现
余弦相似度
博客园
CSDN
Github
一些python教程

posted @ 2025-03-07 12:47  witch250  阅读(48)  评论(0)    收藏  举报