第一次个人编程作业
第一次个人编程作业
| 这个作业属于哪个课程 | 软件工程 |
|---|---|
| 这个作业要求在哪里 | 作业要求 |
| 这个作业的目标 | 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,还是得多动动手。


浙公网安备 33010602011771号