Youkilidou
这个作业属于哪个课程 <软件工程>
这个作业要求在哪里 <要求>
这个作业的目标 <编写论文查重程序并上传至GitHub>
<PSP表格预计/实际填写>
<使用各种工具检查>
<单元测试>

一、GitHub链接:https://github.com/Youkilidou/3119005471

二、事前PSP表格

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

三、设计

3.1需要的外部包:HanLP

3.2需要的类:

  • 读写文件类:I_O
  • 局部哈希类:SimHash
  • 计算汉明距离类:Hamming
  • main类
  • 单元检测类

3.3类之间的关系:

3.4核心算法

四、实现及分析

4.1、计算simhash语句

4.1.1改进

  • 当文本长度过短时,HanLP可能会出错,可以采取设置最低值的方法

4.2计算Hamming距离及相似度

4.2.1改进

  • 倘若计算前一步计算simhash出错,则返回-1

4.3分析

4.3.1内存分析

4.3.2cpu分析

4.3.3所用类分析

  • 因为调用HanLP的接口进行分词后,我采用的是For循环进行哈希值计算,所以可以看到调用HanLP和因for循环产生的int调用最多
    以我目前的编程水平没有较好的解决方法

五、单元测试

利用eclipse集成的JUnit5进行单元测试

5.1、对汉明函数的测试

  • 测试结果

5.2、对simhash的测试

  • 测试结果

5.3、对IO的测试

  • 测试结果

5.4、对main的测试

  • 测试结果
  • 答案文本

六、代码覆盖率

利用eclipse自带的coverage小工具查询代码覆盖率

  • 整体覆盖率
  • 测试单元Test类的覆盖率是0,不用管它。
  • 主要类的覆盖率基本在87%以上
  • 举例hamming说明代码没有100%覆盖的原因

    大部分都是因为if条件判断语句没有执行(即程序正常运行)

七、异常处理

  • 前文提到文本过短HanLP可能会出问题
  • 采用ShortStringException extends Exception来处理
  • 处理结果

八、事后PSP表格

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

九、总结分析

  • 代码能力还是很薄弱,在查找算法并实现上查找了很多资料
  • 新工具的学习需要时间,实践起来花费的时间比预想的多很多
  • git管理没想到问题会这么多,网络原因也是其中一个
  • 接触了很多之前写代码不会考虑的事情:覆盖率、测试单元、异常分析、利用git更好管理代码、性能分析……对什么是软件工程有了更深的了解

十、参考文章

https://blog.csdn.net/adnb34g/article/details/82905550
https://www.cnblogs.com/pluslius/p/11746102.html
https://www.cnblogs.com/lyssym/p/4880896.html
https://baijiahao.baidu.com/s?id=1658791965259239950&wfr=spider&for=pc
……

分类:

技术点:

相关文章: