第一次个人编程作业
这个作业属于哪个课程 | 网工1934-软件工程 |
---|---|
这个作业要求在哪里 | 个人项目 |
这个作业的目标 | 学会在项目开始之前做好规划,用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.程序功能测试
结果为: