首页 - 信息 - 软件作业 2:个人项目

软件作业 2:个人项目

2023-10-04 07:35
这个作业属于哪门课程 软件工程
这个作业的要求在哪里 个人项目
这次作业的目标 设计论文重复检查算法,给定一个原文文件和在原文上进行增删改查的抄袭论文版本,并在答案文件中输出重复率

1。 PSP表格

PSP2.1 个人软件流程阶段 预计时间(分钟) 实际用时(分钟)
计划中 计划
·预估 · 估计这个任务需要多长时间 1370 1770
发展 开发
·分析 ·需求分析(包括学习新技术) 300 460
·设计规格 · 生成设计文档 100 80
·设计评审 ·设计评审 40 30
·编码标准 · 代码规范(为当前开发设置适当的规范) 50 40
·设计 ·详细设计 200 280
· 编码 ·具体代码 400 490
·代码审查 ·代码审查 60 70
·测试·测试(自测、修改代码、提交修改) 100 180
报告 报告
·检测报告 ·检测报告 40 60
·尺寸测量 ·计算工作量 30 20
· 事后分析和流程改进计划 ·事后总结并提出流程改进计划 50 60
·总计 1370 1770

2。计算模块接口及实现流程
(1)方案实施班

  • 主分类:
    应用程序,包括main方法,可以接收指定的参数,将其传递给Document类进行文件输入输出,并调用其他工具类中的方法来运行程序。
  • 工具:
    CuttingWordsUtil,中文工具类,有中文分词方法。
    DocumentUtil是一个文件工具类,控制文件的输入和输出。
    SimpleCommonWords,一个简单的常用词计算类,通过简单的常用词算法计算两个文档的相似度。
  • 测试类别:
    TestCoverage,测试各模块功能是否正常。
  • 项目结构:
  • 项目流程:
    (2)关键功能分析与实现
    实现查重的关键在于分词功能和相似度算法
    选择分词器和简单的共享词算法来完成这个设计。
    简单共享词算法的简单流程如下:
    String1:我读了很多故事。
    String2:我听过很多故事。
  • 分词
    String1:【我,读了很多故事】
    String2:【我、听过、很多、故事】
  • 分别计算总字符数
    ^ 单词1 = 4
    ^ 单词2 = 4
  • 计算共享单词的总字符数
    常用词 = 3
  • 计算相似度
    选择最长的字符数作为分母,共享单词的总字符数作为分子
    结果 = 3 / 4 = 0.75
    这个算法的思想比较直观,很容易理解其基本原理。直观地说,就是首先统计需要比较的两个文档中的总字数,其次统计文档中常见单词的总字符数,第三将常见单词除以文档的字数。最长的文档给出了相似性度量的数值。
    (3)计算模块接口性能提升
  • 第一个版本的程序花了相当长的时间,需要近40秒才能运行
  • 程序第二版将依赖中的分词器版本降低至1.2,运行速度显着提升
  • 第三版禁用日志输出,输出时间再次减少
    4。计算模块部分单元测试展示
    (1)CuttingWordsUtil类测试
    测试结果:
    可以看到分词器可以识别一些特殊符号并进行类似的划分
    (2)SimpleCommonWords类测试
    测试结果:
    当两个句子为空字符串时,输出为NaN,需要异常处理
    (3)代码覆盖率
    5。模块异常处理说明
    在单元测试模块中可以知道,当两个字符串为空字符串时,输出NaN,需要异常处理
    在Application类中添加判断。如果全部为空,则输出提示信息并结束程序
    github仓库