这个作业属于哪个课程 | 2020春S班(福州大学) |
---|---|
这个作业要求在哪里 | 软工实践寒假作业(2/2) |
这个作业的目标 | github初使用,代码规范制定,疫情统计程序的需求分析及设计 |
作业正文 | 作业链接 |
其他参考文献 | 暂无 |
一、Github仓库地址
二、PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 30 | 40 |
Estimate | 估计这个任务需要多少时间 | 30 | 40 |
Development | 开发 | 790 | 910 |
Analysis | 需求分析 (包括学习新技术) | 300 | 330 |
Design Spec | 生成设计文档 | 50 | 60 |
Design Review | 设计复审 | 20 | 30 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 30 | 20 |
Design | 具体设计 | 100 | 120 |
Coding | 具体编码 | 200 | 240 |
Code Review | 代码复审 | 30 | 30 |
Test | 测试(自我测试,修改代码,提交修改) | 60 | 80 |
Reporting | 报告 | 150 | 160 |
Test Repor | 测试报告 | 60 | 50 |
Size Measurement | 计算工作量 | 50 | 60 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 40 | 50 |
合计 | 970 | 1110 |
三、解题思路描述
- 一开始看得有点懵,花了好长的时间才看懂了作业需求,因为对命令行的知识之前没有接触过,加上自己对于Java的掌握也不是很好,后来通过百度以及各种博客论坛进行学习,才逐渐有了思路,大致如下:
- 获取命令行
- 解析命令行参数
- 读取指定文件,并进行数据处理
- 按指定路径输出文件
四、设计实现过程
主要包含三个内部类:命令行类、命令行解析类以及文件处理类
五、代码说明
代码整体结构
代码细节
- 命令行类
主要用来存放参数,包含判断是否有这个参数的布尔值,以及具体的参数值
- 命令行解析类
analysis函数用来解析从main函数传入的命令行,获取各个参数的值,返回一个command对象
commandRun函数用来执行命令
- 文件处理类
包含一个排序好的provinces序列,以及存放各个省份ip、sp、cure、dead的数组,以及全国的数据
dealLog函数对文件进行单行处理,采用正则表达式匹配各种情况
readLog函数通过判断传入的date值,获取需要处理的文件列表,并调用dealLog方法处理这些文件
writeTxt函数按命令行要求输出最终的数据
六、测试截图
测试用例,对-date -log -out -type -province 五种参数均进行了测试
七、单元测试覆盖率优化和性能测试,性能优化截图和描述
单元测试
主要代码如下,由于对于单元测试掌握不足,且代码包含内部类的关系,单元测试编写不便,因此主要对代码解析函数进行了测试
覆盖率和性能测试
八、代码规范的链接
九、心路历程与收获
由于自己基础不扎实的缘故,在进行本次的代码编写之前恶补了很多知识,加上自己是第一次使用GitHub,以及第一次接触单元测试及覆盖率优化和性能测试方面的知识,还不能够很好的消化和掌握所有知识,以至于本次作业完成的很仓促,很多不足的地方需要改进,通过本次作业,我深刻地意识到了自己专业技能的不足,在接下来的学习和作业中,我一定更加努力,争取成为一个合格的程序猿。
十、技术路线图相关的5个仓库
- Python - 100天教程
一个优质的Python交流社区,一方面为想学习Python的初学者扫平入门过程中的重重障碍,另一方为新入行的开发者提供问道的途径。
- Spring框架
这是Spring框架的所在地:所有Spring项目的基础。Spring提供了Java编程语言以外的所有所需内容,可用于为各种场景和体系结构创建企业应用程序。
- 手把手教你整合最优雅SSM框架
整合SSM框架(SpringMVC + Spring + MyBatis),适合刚接触spring的同学,需要有servlet和jsp基础。
- Hibernate ORM
Hibernate ORM是一个为应用程序,库和框架提供对象/关系映射(ORM)支持的库。它还提供了JPA规范的实现,该规范是ORM的标准Java规范。
- Apache Maven核心
Apache Maven是一个软件项目管理和理解工具。基于项目对象模型(POM)的概念,Maven可以从中央信息管理项目的构建,报告和文档。