201771010115-刘志梅 实验三 结对项目—《西北师范大学疫情防控信息系统》项目报告
内容 | 项目 |
---|---|
<课程班级博客链接> | https://edu.cnblogs.com/campus/xbsf/nwnu2020SE |
<作业要求链接> | https://www.cnblogs.com/nwnu-daizh/p/12521474.html |
<填写目标> | 练习结对编程,掌握GitHub协作开发程序的方法 |
<相关内容> | (1)尝试结对合作完成任务(2)掌握GitHub相关fork、clone、Pull request等操作 |
<学号-姓名> | 杨玲-201771010133 |
<地址> | https://github.com/lingxiaoyanga/two |
<本次仓库地址> | https://github.com/LZM-1/shiyaner |
1、实验内容
任务1:阅读《现代软件工程—构建之法》第3-4章内容,理解并掌握代码风格规范、代码设计规范、代码复审、结对编程概念;
代码风格规范
代码风格的原则是:简明、易读、无二异性。 包括:缩进、行宽、括号、断行与空白的{}行、命名、下划线、大小写、注释。
代码设计规范
代码设计规范不仅包括程序书写的格式;还有程序设计与模块之间的关系。 规定包括:函数、goto、错误处理、如何处理C++中的类。
代码复审
定义:看代码是否在代码规范的框架下正确的解决了问题。 目的:找出代码的错误;发现逻辑错误;发现算法错误;发现潜在的错误与回归性错误;发现可能需要改进的地方;互相教育传授经验。
结对编程概念
结对编程是一个相互学习、相互磨合的渐进过程。 两个角色:驾驶员(控制键盘输入);领航员(起到领航、提醒的作用)。
2、任务2:两两自由结对,对结对方《实验二 软件工程个人项目》的项目成果进行评价,具体要求如下:
(1)对项目博文作业进行阅读并进行评论,评论要点包括:博文结构、博文内容、博文结构与PSP中“任务内容”列的关系、PSP中“计划共完成需要的时间”与“实际完成需要的时间”两列数据的差异化分析与原因探究,将以上评论内容发布到博客评论区。
(2)克隆结对方项目源码到本地机器,阅读并测试运行代码,参照《现代软件工程—构建之法》4.4.3节核查表复审同伴项目代码并记录。
首先fork结对方的项目到自己仓库
测试并运行结对方代码
参照《现代软件工程—构建之法》4.4.3节核查表复审同伴项目代码并记录
概要部分
代码符合需求和规格说明;代码设计考虑比较周全;可读性较好;对代码进行了执行。
设计规范部分
设计遵从项目中常用模式;不存在硬编码或字符串/数字等存在;代码没有依赖于某一平台,不会影响移植。
(3)依据复审结果尝试利用github的Fork、Clone、Push、Pull request、Merge pull request等操作对同伴个人项目仓库的源码进行合作修改。
3、任务3:采用两人结对编程方式,结合我校师生疫情每日上报系统使用体验,设计开发一款符合我校疫情防控工作需求的信息系统
需求分析:
2019年12月末,中国武汉发生新型冠状病毒(2019-nCoV) 感染的肺炎疫情,为遏制疫情蔓延,有效切断病毒传播途径,在中央政府指导下,各级政府部分采取了一系列防控措施: 2020年1月23日10时起对武汉“封城”,全国 31个省市也相继实施了严格的防控措施;全国各省市向武汉和湖北派遣医疗队参与救治工作;在全国范围内调配口罩、防护服、药品等急需的医疗资源支援武汉;指导和督促全国范围内拥有医疗物资生产资质的企业尽快恢复生产能力;定向拨付专项财政资金用于疾病防控;从其他省份调集物资保障武汉市民日常生活。 值得一提的是,中国互联网企业在此次疫情防控中发挥了社会治理方面的重要作用。以腾讯为例,围绕应对疫情管控需求开发了十一款产品。其中疫情在线问诊功能,对于减少发热病人之间的相互交叉感染具有重要的作用,患者在家通过互联网向在线医生问诊,减少了病毒传播或感染的风险;谣言粉碎对于公众采取理性态度看待疫情的发展具有重要意义。滴滴出行还在武汉专门组建车队,服务于医护人员的通勤,这在实施交通管制的武汉具有重要作用。此外,还有新型肺炎确诊患者同行程查询工具,用户只需要输入自己所乘坐交通工具的时间和班次,就可以确认是否与被确诊感染者同行,提前做好自我隔离和就诊工作。在疫情防控中,中国互联网企业不仅发展壮大,在承担社会责任方面也越来越成熟。 为有效配合防控机构有关疫情信息的采集、统计与排查,我校开发了教职工/学生疫情上报系统,该系统由教职工疫情每日上报、学生疫情每日上报、二级部门疫情每日汇总表、疫情防控填报统计四个子系统组成。实现对我校各类人员基本情况、所在区域及活动轨迹及健康状况的信息收集。师生通过我校企业微信服务大厅访问该系统进行远程信息填报。
(1)可采集全校各类师生员工疫情信息;
(2)各二级部门疫情防控工作负责人可查看本部门人员疫情汇总,并提供高级查询功能进行多属性组合查询和可视化统计功能;
(3)学校防控办指定负责人登录《西北师范大学疫情防控信息统计》子系统,可浏览所有人员填报汇总数据清单,利用【高级查询】可进行数据组合筛选,系统以图形化方式展示各学院已填报和未填报学生统计情况和关键疫情数据统计情况,可【导出】查询列表的EXCEL文件;
(4)人机交互界面要求GUI界面(WEB页面、APP页面都可);
(5)附加分功能:定时填报提醒
package Test1;
import java.util.*;
import java.text.*;
public class tixing {
public static void main(String[] args) {
Calendar ca = Calendar.getInstance();
int year = ca.get(Calendar.YEAR);//获取年份
int month=ca.get(Calendar.MONTH);//获取月份
int day=ca.get(Calendar.DATE);//获取日
int minute=ca.get(Calendar.MINUTE);//分
int hour=ca.get(Calendar.HOUR);//小时
int second=ca.get(Calendar.SECOND);//秒
int WeekOfYear = ca.get(Calendar.DAY_OF_WEEK);
}
}
(6)描述结对的过程
4、软件设计说明
本次设计分为几个包,而包内含有几个不同的类:
Discnum主要负责学生所处地区的统计,Discshop主要负责学生当日健康状况的统计,LoginDialog主要负责登录,UserAddDialog主要负责学生的注册,ShowEditor主要负责学生登录后的主页,UserAddDialog主要负责学生当日疫情填报和提交,UserQurryEditor主要负责管理员对学生当日健康状况的查看。
5、结对项目利用fork、clone、pull request等。
(1)fork操作
(2)pull request
(3)clone
(4)commit
(5)保存到本地
PSP | 任务内容 | 计划共完成需要的时间(min) | 实际完成共需要的时间(min) |
---|---|---|---|
Planning | 计划 | 20 | 15 |
Estimate | 估计这个任务需要多少时间,并规划大致工作步骤 | 10 | 15 |
Development | 开发 | 168 | 270 |
Analysis | 需求分析(包括学习新技术) | 10 | 70 |
Design Spec | 生成设计文档 | 0 | 30 |
Design Review | 设计复审(和同事审核设计文档) | 0 | 0 |
Codeing Standard | 代码规范(为目前的开发制定合适的规范) | 5 | 25 |
Design | 具体设计 | 20 | 23 |
Coding | 具体编码 | 200 | 259 |
Code Review | 代码复审 | 30 | 50 |
Test | 测试(自我测试,修改代码,提交修改) | 20 | 30 |
Reporting | 报告 | 40 | 35 |
Test Report | 测试报告 | 20 | 30 |
Size Measurement | 计算工作量 | 5 | 8 |
Postmortem & Process Improvement Plan | 事后总结,并提出过程改进计划 | 15 | 13 |
小结感受:通过这次的合作我觉得两人合作能够带来1+1>2的效果,之前项目的时候一个人做的过程相较来说还是很慢,结对合作能够加快整个的一个进度,另外在遇到不懂或者不理解的问题时能够互相交流学习,相互帮助检查问题;结对合作的过程发现别人做好的地方并学习,反思自己的做的结果的差异并进行优化修改。