第一次个人编程作业

这个作业属于哪个课程 网工1934-软件工程
这个作业要求在哪里 个人项目
这个作业的目标 学会在项目开始之前做好规划,用github对项目进行管理,同时通过利用测试、性能分析工具来优化代码

github

我的github

开发环境

编程语言:Java
开发平台:IntelliJ IDEA 2020.2
项目构建工具:Maven
依赖的外部Jar包:汉语言处理包

1、PSP表格

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

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

2.1 项目结构截图

2.2 相关类及接口

MainPaperCheck :主类
FileInput :读取文件内容
TxtIOUtils:处理文本文件,并把结果写入相应文件
Simhash接口:哈希值,汉明距离,特征值计算的接口
Simhash_ :计算哈希值,汉明距离,特征值,并返回一个最终值。

其中的simhash方法,用于将文字依照一定的规则转化了特征向量,hammingDistance方法用于计算汉明距离,subByDistance方法用于计算最后的特征值,即两份文档之间的相似度。

2.3 核心算法

Simhash 和汉明距离

汉明距离即为01序列的差异位数,当汉明距离小于3时,认为两段文本高度相似。

3.性能分析


通过性能分析,发现char和String占据大部分内存。

4.单元测试

创建maven项目,通过导入junit依赖包,来对项目进行单元测试

4.1 对读写进行测试

路径正常时:


路径错误时:


结果为:

代码覆盖率:

4.2 对Simhash_进行测试


结果如下:

代码覆盖率:

5.异常情况处理及说明

通过单元测试,可知当文件路径错误时,会有异常情况,readTxt以及writeTxt方法对其进行了捕获处理,并在控制台显示相应的报错信息。

6.程序功能测试

结果为:

posted on 2021-09-19 18:21  念倾  阅读(62)  评论(0编辑  收藏  举报