第一次个人编程作业

发布时间:2022-07-05 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了第一次个人编程作业脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
这个作业属于哪个课程 课程
这个作业要求在哪里 要求
这个作业的目标 实现论文查重算法+PSP模式体验

一、GITHub仓库

github

二、PSP表格

PSP2.1 PErsonal Software PRocess Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 30 40
· EstiMATE · 估计这个任务需要多少时间 30 40
Development 开发 720 835
· Analysis · 需求分析 (包括学习新技) 60 80
· Design Spec · 生成设计文档 40 50
· Design review · 设计复审 20 40
· Coding Standard · 代码规范 (为目前的开发制定合适的规范) 20 20
· Design · 具体设计 60 70
· Coding · 具体编码 240 300
· Code Review · 代码复审 40 60
· test · 测试(自我测试,修改代码,提交修改) 240 215
Reporting 报告 65 70
· Test Report · 测试报告 20 25
· Size Measurement · 计算工作量 15 15
· Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 30 30
合计 815 945

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

1.主流程图

第一次个人编程作业

2.接口的设计与实现

项目结构

第一次个人编程作业

类图

第一次个人编程作业

  • Exception : 自定义异常类
  • Entry : 入口类,程序执行入口
  • IOHandler : 用于处理文件的类,包含读取文件和将结果写入文件的方法
  • Processor : 核心处理器类,用于将字符串分词并计算重复率

算法核心

采用余弦相似度计算的方法

第一次个人编程作业

通过分词器将文章分为词组后得到词组与其出现频率的映射,相当于一个多维向量,此时计算这两个向量的余弦相似度即近似表现为两篇文章的相似程度

关键函数

计算词频 维护一个<String,int[]>的映射,遍历来自两篇文章的词组数组;同一个词组若来自文章1则在数组第一位加1,来自文章2则在数组第二位加1,以此统计所有词组在两篇文章出现的频率

第一次个人编程作业

计算重复率 根据余弦计算公式,遍历词频映射,分别计算分子分母后相除得出结果

第一次个人编程作业

四、模块接口部分的性能改进

JProfiler性能分析图

第一次个人编程作业

内存使用情况

第一次个人编程作业

代码优化结果(SonarLint)

第一次个人编程作业

五、单元测试

测试程序核心方法

第一次个人编程作业

结果

第一次个人编程作业

覆盖率

第一次个人编程作业

核心方法只用到了IOHandler和Processor类中的方法

cmd测试

第一次个人编程作业

结果

第一次个人编程作业

所有文件的结果

第一次个人编程作业

六、异常处理

第一次个人编程作业

EmptyTxtException:空文件异常,当有一比较文件为空时报错

异常测试

第一次个人编程作业

TxtNotFoundException:路径异常,当比较文件路径找不到文件时报错

异常测试

第一次个人编程作业

七、心得

  • 这次的作业接触了之前从未涉及过的关于计算查重率的算法,以及分词器的使用
  • 接触了代码分析、项目性能分析,并且体验了一次较为完整的开发评估系统PSP

脚本宝典总结

以上是脚本宝典为你收集整理的第一次个人编程作业全部内容,希望文章能够帮你解决第一次个人编程作业所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。