第一次个人编辑作业

这个作业属于哪个课程 软件工程
这个作业要求在哪里 个人项目作业
这个作业的目标 论文查重算法实现+PSP+性能改进+单元测试+异常处理

github链接

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

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

绝对路径

接口设计:读取文件->字符串预处理和匹配->输出文件


实现过程:文本相似度完全转化求最小编辑距离(由于生成文章已经不符合常见的语义逻辑),通过对最小编辑距离法求出的最短距离进行归一化处理得出“相似度”结果。
算法

最小编辑距离法是比较经典的动态规划算法
状态转移方程
f[i][j] = f[i-1][j-1] \ s1[i]==s2[j]
f[i][j] = min(f[i][j-1],f[i-1][j],f[i-1][j-1])+1 \ s1[i]!=s2[j]
空间预期消耗O(nm)
时间预计消耗O(nm)

计算模块接口部分的性能改进

去除多余的标点符号
利用匹配正则表达式有利于提高运行效率以及精确度。

CPU Load

类的消耗时间

类的内存消耗

计算模块部分单元测试展示

测试代码

测试结果

覆盖率

由于是第一次写单元测试,覆盖率较低,以及存在很多不完整的地方来不及改动。

计算模块部分异常处理说明


总结:

这次作业尝试了很多以前未曾尝试的操作,也真正意识到自己所学的知识有多薄弱,过去几天一直在补掌握不牢固的java知识,拖到ddl才能把作业做好。
不过总的来说收获还是很大的,从0到1的突破就是最大的成功,尽管这个项目做的不堪入目,但还是很欣慰自己能够有这样的机会。种一棵树最好的时间是十年前,其次是现在。亡羊补牢,为时不晚。

posted on 2020-09-25 01:43  Yayam  阅读(127)  评论(0编辑  收藏  举报