个人编程项目:论文查重
课程 | 信安19 12-软件工程 |
---|---|
要求 | (个人项目作业) |
这个作业的目标 | PSP表格的学习+项目模块化编程 |
一.题目要求
输入输出采用文件输入输出。按照传递命令行参数的方式提供文件的位置,从指定的位置读取文件,并向指定的文件输出答案。
- 从命令行参数给出:论文原文的文件的绝对路径。
- 从命令行参数给出:抄袭版论文的文件的绝对路径。
- 从命令行参数给出:输出的答案文件的绝对路径。
示例:java -jar main.jar C:\tests\org.txt C:\tests\org_add.txt C:\tests\ans.txt
二.项目实现
-
环境:Intellij IDEA2021 , JDK 1.8
-
实现思路: 本地测试文本→键输路径→命令行实现
-
流程图:
-
工程结构:
-
算法核心:余弦相似度的计算
(1)找出两篇文章的关键词;
(2)每篇文章各取出若干个关键词,合并成一个集合,计算每篇文章对于这个集合中的词的词频
(3)生成两篇文章各自的词频向量;
(4)计算两个向量的余弦相似度,值越大就表示越相似。
三.单元测试
- 覆盖率
- CPU Load
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 30 | 55 |
· Estimate | · 估计这个任务需要多少时间 | 20 | 30 |
Development | 开发 | 600 | 1200 |
· Analysis | · 需求分析 (包括学习新技术) | 400 | 800 |
· Design Spec | · 生成设计文档 | 40 | 40 |
· Design Review | · 设计复审 | 20 | 20 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 10 | 10 |
· Design | · 具体设计 | 60 | 60 |
· Coding | · 具体编码 | 360 | 360 |
· Code Review | · 代码复审 | 20 | 30 |
· Test | · 测试(自我测试,修改代码,提交修改) | 20 | 40 |
Reporting | 报告 | 40 | 40 |
· Test Repor | · 测试报告 | 15 | 20 |
· Size Measurement | · 计算工作量 | 20 | 20 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 20 | 30 |
· 合计 | 1675 | 2755 |
四.总结
1.PSP表格的初步尝试,确实让我自我审视许多,很多自认为简单的东西,上起手来,难度超出自身预期
2.花了一些时间在本地库与远程库的commit上,这方面还得继续学习
3.个人项目的完成上,每遇到一个新的问题,就是一个学习的过程,在学习新技术上花的时间很多