第一次个人编程作业
第一次个人编程作业
这个作业属于哪个课程 | 软件工程 |
---|---|
这个作业要求在哪里 | 作业要求 |
这个作业的目标 | PSP表格+实现论文查重算法+单元测试+性能测试+使用Github管理 |
Github链接:
可执行的jar包已经放在了Github仓库的release中
模块接口的设计与实现过程
具体有四个类,分别为Thesischecking、Cos_Main、Main、MainTest
Thesischecking:包括将文本和字符串互相转换的的textToString和StringTotext方法
Cos_Main:对于文本的词进行排序和分词,计算余弦相似度
Main:包括Main.work方法和process方法
程序流程图:
TreeMap来对字符串进行有序排序的处理
分词则是选用了Hanlp分词器来进行分词
使用的计算文本相似度采用的算法是余弦相似度(Github链接:here)
计算模块接口部分的性能改进
程序性能测试截图:
类的占用:
CPU负载:
堆内存:
具体耗时:
分析:耗时最多的主要是计算余弦相似度的算法,和hanlp分词器。
计算模块单元测试展示
部分单元测试代码:
部分测试结果:
代码覆盖率:
计算模块部分异常处理
捕捉文本转换字符串发生的异常
结果展示:
PSP表格
PSP2.1 | Personal Software Process Stage | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 30 | 30 |
Estimate | 估计这个任务需要多少时间 | 80 | 70 |
Development | 开发 | 800 | 850 |
Analysis | 需求分析 (包括学习新技术) | 300 | 400 |
Design Spec | 生成设计文档 | 60 | 60 |
Design Review | 设计复审 | 30 | 40 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 40 | 50 |
Design | 具体设计 | 60 | 60 |
Coding | 具体编码 | 300 | 400 |
Code Review | 代码复审 | 60 | 60 |
Test | 测试(自我测试,修改代码,提交修改) | 30 | 30 |
Reporting | 报告 | 200 | 180 |
Test Repor | 测试报告 | 50 | 40 |
Size Measurement | 计算工作量 | 50 | 50 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 60 | 40 |
合计 | 2150 | 2360 |
个人总结:
这是第一次一个人尝试做一个项目,从PSP表能看得出很挣扎,但还是学习到了很多东西,在具体代码的阶段都忘了很多的基本语法了,吃了不实践的亏。这次收获了很多没有接触过的东西,打包jar包和命令行运行时的各种错误,还有Jprofiler,还是得多动动手。