第一次编程作业
| 这个作业属于哪个课程 | 软件工程 |
| ---- | ---- | ---- |
| 这个作业要求在哪里 | 个人编程要求 |
|这个作业的目标|学会使用PSP表格,设计论文查重算法,并在整个过程中学会对代码进行性能分析、单元测试,以及对github的基本使用|
| PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟)|
| ---- | ---- | ---- |----|----|
| Planning | 计划 | 60 | 80 |
|Estimate| 估计这个任务需要多少时间| 10| 15 |
|Development | 开发| 300|350 |
|Analysis|需求分析 (包括学习新技术)|120|128|
|Design Spec|生成设计文档|20|15|
|Design Review|设计复审|15|15|
| Coding Standard|代码规范 (为目前的开发制定合适的规范)|30|30|
|Design|具体设计|180|200|
|Coding|具体编码|180|200|
|Code Review|代码复审|60|100|
|Test|测试(自我测试,修改代码,提交修改)|60|80|
|Reporting|报告|30|50|
|Test Repor|测试报告|30|30|
|Size Measuremen|计算工作量|10|5|
|Postmortem & Process Improvement Plan| 事后总结, 并提出过程改进计划|15|20|
||合计|1120|1318|
计算模块接口的设计与实现过程
1.程序的核心算法(余弦相似度计算重复率)
参考知识:
我的代码实现: (1)统计方法(计算并利用hashmap<k,v>记录向量值)
(2)计算类(计算两向量的余弦值得出重复率)
2.对文本的处理
(1)读写txt文件类:
(2)(一开始想用kmp算法无奈发现开销巨大且效率极低)使用第三方提供的开源工具包中的IKUitls分词类,该类能返回记录所有词语的list集合
代码实现:
(3)使用replaceSpecialStr()方法对文本除杂
性能分析
1.程序运行时间耗费
2.程序总覆盖率
可以看出程序的覆盖率比较高,说明该程序比较稳定
3.程序运行截图
单元测试展示
异常处理
针对写入文件可能出现的错误