这个作业属于哪个课程 | 软件工程实践 |
---|---|
这个作业要求在哪里 | 寒假作业(2/2) |
这个作业的目标 | 1.实现完成疫情统计程序编程要求 2.制定代码规范3.编写博客,记录实现的过程4.学习使用Github |
作业正文 | 软件工实践寒假作业 |
其他参考文献 | 博客,PSP表格教程,单元测试教程 |
仓库链接:疫情统计
1.规划
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 60 | 40 |
Estimate | 估计这个任务需要多少时间 | 15 | 20 |
Development | 开发 | 710 | 625 |
Analysis | 需求分析 | 70 | 85 |
Design Spec | 生成设计文档 | 20 | 10 |
Design Review | 设计复审 | 10 | 20 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 20 | 10 |
Design | 具体设计 | 40 | 20 |
Coding | 具体编码 | 460 | 420 |
Code Review | 代码复审 | 30 | 20 |
Test | 测试(自我测试,修改代码,提交修改) | 60 | 40 |
Reporting | 报告 | 60 | 40 |
Test Repor | 测试报告 | 30 | 20 |
Size Measurement | 计算工作量 | 10 | 5 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 20 | 15 |
合计 | 830 | 705 |
2.解题思路
-
浏览完题目要求后,将程序分为三部分,命令初始化,存取日志文本,文本内容处理。
- ;
命令行为字符串数组,以list开头,有-log,-date,-out等参数,对命令行进行处理,可以将其封装在一个类中,运行时,可以同传递类,通过调用不同的函 数返回不同list命令参数。
- ;
存取文件。读取文件,写入文件的数据每一行有固定格式,可以用map类型保存,然后通过函数将数据内容写到文件中。
- ;
要根据文本内容的不同情况,对疫情情况的数据进行统计。文本内容的不同情况总共有8种情况,可以根据读取的字符串内容进行条件判断,调用不同的数据处理函数。疫情数据主要为省份,感染者,疑似患者,治愈,死亡。可以封装成一个类,调用函数改变其值。
3.设计过程
主要流程:
;
执行过程:
;
5.代码说明
- 命令行处理类DocFormatter,保存数组和索引值,不同参数值的返回函数。
;
- 保存省份病情信息的Status,由省份的字符串,和4个int类型保存4种不同的情况人数。
;
- openFile函数,逐行读取,拆掉成字符串数组,第一个为省份,检查map中是否含有该省份,进行更新。
根据下一个字符串的不同情况,调用不同的Status处理函数。处理完各个省份后,对map中,全国情况进行统计。
;
- WriteFile函数,对map进行按key排序,读取proChecked和tyChecked中的-type,和-province的参数信息,
写入文件。
;
- run函数,对命令行返回的province和type进行校验,调用getFiles函数获取要打开的文件后,调用openFile,
所有文件读取完毕后,调用WriteFile写入文件
;
6.单元测试截图和描述
- 获取省份排序
- 获取打开的文件
- 整体测试,测试日志为example下的log.txt文件
- 测试1:测试默认情况,没有-date、-type、-province参数;
*测试2:测试-date为2020-01-23的情况,没有-type、-province参数;
*测试3:测试-date为2020-01-25情况,没有-type、-province参数;
*测试4:测试-date为2020-01-27,-type为ip,sp的情况,没有-province参数;
*测试5:测试-date为2020-01-27,-province为“福建”、“北京、“全国””的情况,文本中无北京的数据,无-type参数;
*测试6:测试-date为2020-01-29错误日期的情况;
7.单元测试覆盖率优化和性能测试
单元测试覆盖率如下:
性能如下:
8.代码规范
9.收获和感悟
一开始,浏览了题目要求后,觉得是一个简单的文件处理的项目,代码程序打完,可以解决大部分工作。仔细一看,发现有许多新的东西,psp表格,git仓库,单元测试等。单元测试用来对一个模块、一个函数或者一个类来进行正确性检验的测试,第一次接触,一开始感觉有点麻烦,但可以明确找出自己出错的部分在哪里。整体过程中,从一开始的需求分析到最后的测试之间,还有许多不同的环节。有规划,有节奏的进行项目编程比一头蛮地编程要更有效率地多。最后,本次的作业使我受益良多,我相信这次作业学到的东西和积累的经验必可活用于下次。
相关链接
1、JavaEETest
链接:https://github.com/LateComerYC/JavaEETest
简介:该仓库总结了Spring、SpringMVC、MyBatis、Spring Boot案例。
2、Java教程
链接:https://github.com/LateComerYC/JavaTutorial
简介:该仓库包含了Java教程,包括多线程,泛型,反射,IO,容器类,注解。
3、Java Spring
链接https://github.com/LateComerYC/SpringCloudLearning
简介:该仓库包含了Spring教程和源码,介绍Spring框架格式。
4、Ajax
链接https://github.com/LateComerYC/ajax
简介:该仓库包含了Ajax设计方案。
5、jsp
链接 https://github.com/LateComerYC/jsproxy
简介:该仓库包含了jsp教程,以及jsp应用实例。