个人项目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组成,采用Levenshtein和Jaccard计算重复率。main.py只有四个函数,分别是读取文件,写入文件和Levenshtein与Jaccard的实现。关于Levenshtein,调用了python包;关于Jaccard,则按照公式进行计算。最后将Levenshtein和Jaccard得到的结果加权后得到重复率
性能改进
总体上调用包,不知道怎么做性能改进
消耗时间最大的函数是导入的外部包jieba,用来划分关键词,同样的,也不知道怎么改进
如下图,在Levenshtein函数中jieba分词的消耗时间占比为53.0和16.8,剩下的是从外部包导入的Levenshtein方法,占30.2

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

内存占用 由memory_profile生成

单元测试展示和异常处理
没有找到单元测试的方法,所以自己做普通的测试
覆盖率 由coverage生成:

确实没有做写入文件和内存溢出的异常测试
异常测试例子如下:




背景是vscode和它自带终端的白色背景
总结
需求分析花了很多时间,一部分在复习Python,一部分在网上搜索和学习实现功能的技术
认为详细设计可以做的更好,但由于不了解技术,不好做更详细的设计,也没有做记录,在编码的过程中还要找包中函数
设计应该是明确的,从完成的代码看,编码过程有些时间浪费掉了
安装测试工具,熟悉使用花了一定时间,这部分包含在了测试里
参考
simhash的实现
余弦相似度
博客园
CSDN
Github
一些python教程

浙公网安备 33010602011771号