软工实践寒假作业(2/2)
这个作业属于哪个课程 | <班级的链接> |
---|---|
这个作业要求在哪里 | <作业要求的链接> |
这个作业的目标 | github初使用代码规范制定 编写疫情统计程序 |
作业正文 | 如下 |
其他参考文献 | 无 |
GitHub仓库地址
阅读《构建之法》
-
阅读心得
在阅读这本书之前,我对这本书的作者先进行了了解。本书的作者邹欣有着多年的一线软件开发经验,同时,他在多所高校进行了长达了6年的软件工程实践,所以我认为这本书对于软件工程的学生来说,还是很有益处的。
这次我只阅读了前三章。第一章的内容,作者介绍了一些关于软件工程的基本知识。第二章我在单元测试的学习上受益匪浅,在此之前我还未接触过单元测试,所以学习到了很多。第三章讲述了软件工程师的成长,以及职业发展。邹欣老师把枯燥的理论概念讲的非常生动,深入浅出,让我深受启发。 -
PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 20 | 20 |
Estimate | 估计这个任务需要多久时间 | 10 | 10 |
Development | 开发 | 450 | 485 |
Analysis | 需求分析 (包括学习新技术) | 60 | 60 |
Design Spec | 生成设计文档 | 30 | 30 |
Design Review | 设计复审 | 20 | 20 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 20 | 15 |
Design | 具体设计 | 60 | 90 |
Coding | 具体编码 | 240 | 240 |
Code Review | 代码复审 | 20 | 30 |
Test | 测试(自我测试,修改代码,提交修改) | 30 | 40 |
Reporting | 报告 | 40 | 40 |
Test Repor | 测试报告 | 20 | 20 |
Size Measurement | 计算工作量 | 10 | 10 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 30 | 20 |
合计 | 1060 | 1130 |
解题思路描述
-
学习使用github
首先我学习了github基本命令以及github desktop的基本使用,了解了github的基本功能后,到主仓库fork下项目
-
需求分析
1.解析命令行参数
对于用户的命令行参数进行合法性检验,例如-log参数后面必须加文件目录路径,-out参数后面必须加文件路径,必须使用list命令等
2.对文件进行筛选
通过-date参数,筛选出比-date后面的日期小的日期文件
3.读取文件信息
读取筛选出来的文件信息
4.将文件信息进行筛选
针对不同参数,例如-type ip等对读取到的文件信息进行筛选
5.将信息存入数组
将筛选后的信息存入数组
6.将数组信息写入文件
将信息写入-out参数后面的指定文件中
设计实现过程
- 类图
声明了Province类 该类有四个属性,分别对应该省份的感染患者人数,疑似患者人数,治愈人数,死亡人数
-
软件流程图
-
命令行参数处理
对命令行输入的参数首先进行长度,是否为list命令的检验,然后检验是否有-date、-type、-province、-log、-out参数,若有,则将参数的信息赋予某个变量,后面将通过变量进行信息筛选
-
针对-date参数对文件进行筛选
通过将读取目录下的文件名截取0-10之前的字符,然后与-date参数后面的日期进行大小比较,读取符合条件的文件,若-date后无参数,则读取命名规范的所有文件。-date后面的日期若大与文件中任意日期,则给出日期超出范围的错误提示
-
针对-province参数对文件信息进行筛选
通过字符串匹配,匹配出与-province后面跟的省份相同的文件信息,若-province后面无参数,则输出所有信息
-
针对-type参数对文件信息进行筛选
通过字符串匹配,匹配出与-type后面跟的种类信息相同的文件信息,若-type后面无参数,则输出所有信息
-
省份按拼音排序
采用哈希表存储各省份信息,key为省份名称,value为省份对象,含有ip、sp、cure、dead四个属性,然后再将key存入list进行排序
代码说明
数据结构
- 采用HashMap存储省份:key对应省份的名字,例如“福建”,value对应省份Province类
部分代码截图如下:
- 采用list存储省份名称即哈希表中存储的键值对,主要用来将省份名称按拼音排序
部分代码截图如下:
- 采用数组存储从文件中读取的信息
变量说明
- 使用5个变量记录-log、-out、-date、-province、-type后面的参数值 例如-type ip 则type="ip"
- 使用5个变量记录命令行中是否出现-log、-out、-date、-province、-type这几个参数
-date参数处理
- 当-date后面有参数时,将选出读取文件目录下日期最晚的与参数进行对比,如果参数大于最晚一天的日期,则给出日期超出范围的错误提示,若没有,则读取日期氛围内的文件
- 当-date后面没有参数时,将读取文件目录下符合命名规范的所有文件
-type参数处理
- 初始化type="ipspcuredead" 如果检测出-type后面有参数,则改变type变量的值,例如-type ip,则type="ip"匹配type的值,筛选出对应的信息
-province参数处理
- 当-province后面有参数时,则改变list_province的值,例如-province 全国 福建,则list_province="全国福建" 匹配list_province的值,筛选出对应的信息
单元测试
- 当-date后无参数
- 当-date后面参数为"2020-01-23"
- 当-date后面参数为"2020-01-28"
- 当-date后面的参数为"2020-01-23" -type后面无参数
- 当-date后面的参数为"2020-01-23" -type后面的参数为"ip"
- 当-date后面的参数为"2020-01-23" -type后面的参数为"ip cure"
- 当-date后面的参数为"2020-01-23" -province后面的参数为"福建"
- 当-date后面的参数为"2020-01-23" -province后面的参数为"全国 福建"
- 当-date后面的参数为"2020-01-23" -province后面的参数为"全国 福建 湖北"
- 当-date后面的参数为"2020-01-23" -type后面的参数为"-ip" -province后面的参数为"全国"
- 覆盖率
仓库
代码规范
心路历程和收获
这次作业让我收获了很多。从github的使用,在此之前,我只是从github上clone下代码,从来没有深入学习使用github,没想到它竟然有这么多功能,而且对于团队合作开发小型项目非常有用。同时,这一次打代码之前,我先进行了需求分析,设计分析等,以前完成代码做的时候没有这样系统的去进行,感觉有了前面的分析,打代码的时间缩短了很多,漏洞也少了很多。还有很重要的一点是在这次开发前,我学习了一下代码规范,严格按照代码规范进行开发,感觉代码的可观性比之前强很多。这次的作业还让我学会了单元测试这个新的概念,之前我测试代码都是自己随便出测试样例,很麻烦且很不准备,通过对单元测试的学习,我对测试有了更深的体会。技术路线图相关的仓库
腾讯机器学习数据集
- github地址:链接
- 简介:该存储库介绍了名为腾讯ML-Images的开源项目
ML-Images:最大的开源多标签图像数据库,包括17,609,752培训和88,739验证图像URL,这些注释最多包含11,166个类别
Resnet-101模型:在ML-Images上进行了预训练,并通过转移学习在ImageNet上达到了top-1的精度 80.73%
DensePose-实时人体姿态估计
- github地址:链接
- 简介:DensePose 是Facebook 研究院开发的一种实时人体姿态估计方法,它能够将2D RGB 图像中的目标像素映射到3D 表面模型。DensePose 项目旨在通过这种基于3D 表面模型来理解图像中的人体姿态,并能够有效地计算2D RGB 图像和人体3D 表面模型之间的密集对应关系。与人体姿势估计需要使用10或20个人体关节(手腕,肘部等) 不同的是,DenPose 使用超过5000个节点来定义,由此产生的估计准确性和系统速度将加速AR和VR 工作的连接。
NeuralEnhance: 提高图像分辨率的深度学习模型
- github地址:链接
- 简介:NeuralEnhance是使用深度学习训练的提高图像分辨率的模型,使用Python开发,它比普通插值算法要优秀的多,你还可以通过提高神经元数量(或是使用相似的图片样本进行训练)来获得更好的结果。
FaceNet-人脸识别算法
- github地址:链接
- 简介:谷歌人脸检测算法,发表于 CVPR 2015,利用相同人脸在不同角度等姿态的照片下有高内聚性,不同人脸有低耦合性,提出使用 cnn + triplet mining 方法,在 LFW 数据集上准确度达到 99.63%,在 youtube 人脸数据集上准确度 95.12%,比以往准确度提升了将近 30%。
Age and Gender Estimation-年龄和性别评估模型
- github地址:链接
- 简介:该项目是一个基于 Keras 框架实现的 CNN 模型,用于根据人脸照片测算年龄和性别。