作业的Github地址 Github地址
这个作业属于哪个课程 网工1934-软件工程
这个作业要求是什么 作业要求

一、PSP表格

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 25 20
· Estimate · 估计这个任务需要多少时间 25 20
Development 开发 1695 1395
· Analysis · 需求分析 (包括学习新技术) 600 630
· Design Spec · 生成设计文档 30 20
· Design Review · 设计复审 20 15
· Coding Standard · 代码规范 (为目前的开发制定合适的规范) 15 10
· Design · 具体设计 25 30
· Coding · 具体编码 600 380
· Code Review · 代码复审 40 30
· Test · 测试(自我测试,修改代码,提交修改) 200 150
Reporting 报告 60 50
· Test Repor · 测试报告 55 40
· Size Measurement · 计算工作量 20 15
· Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 30 25
· 合计 1710 1415

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

1、依赖包

HanLP自然语言处理包

第一次个人编程作业_软件工程

2、项目结构

Main:项目入口
Hamming类:计算Hamming距离和相似度
IOtext类:读写文件
SimHash类:计算hash值和SimHash值
第一次个人编程作业_单元测试_02

3、算法流程图

第一次个人编程作业_单元测试_03

SimHash算法介绍

第一次个人编程作业_单元测试_04

分词、获取hash值、加权、合并
第一次个人编程作业_相似度_05

降维
第一次个人编程作业_github_06

三、性能分析

内存
第一次个人编程作业_github_07
第一次个人编程作业_软件工程_08
消耗最大的函数是int[]、HanLP分词包

四、部分单元测试展示

1、获取Hamming距离

第一次个人编程作业_github_09
第一次个人编程作业_相似度_10

2、获取相似度

第一次个人编程作业_相似度_11
第一次个人编程作业_读取文件_12

3、读取时路径错误

第一次个人编程作业_单元测试_13
第一次个人编程作业_软件工程_14

4、读取文件名

第一次个人编程作业_相似度_15
第一次个人编程作业_读取文件_16

5、单元测试覆盖率

第一次个人编程作业_github_17
五、模块部分异常处理

第一次个人编程作业_读取文件_18

第一次个人编程作业_软件工程_19

六、功能展示

第一次个人编程作业_单元测试_20
第一次个人编程作业_软件工程_21

第一次个人编程作业_读取文件_22
第一次个人编程作业_软件工程_23