201771030121-王国伟 实验三 结对项目—《西北师范大学疫情防控信息系统》项目报告
201771030121-王国伟 实验三 结对项目—《西北师范大学疫情防控信息系统》项目报告
项目 | 内容 |
---|---|
课程班级博客链接 | https://edu.cnblogs.com/campus/xbsf/nwnu2020SE |
本次作业要求链接 | https://www.cnblogs.com/nwnu-daizh/p/12521474.html |
我的课程学习目标 | 接触结对编程,运用结对编程 |
这个作业在哪些方面帮助我实现学习目标 | 实践中认识到问题,再去解决问题的过程 |
结对方学号-姓名 | 201771030129-张琳 |
结对方本次博客作业链接 | https://www.cnblogs.com/zlin-/ |
项目Github的仓库链接地址 | https://github.com/18215128518wgw/diseaseManage |
1. 实验目的与要求
(1)体验软件项目开发中的两人合作,练习结对编程(Pair programming)。
(2)掌握Github协作开发程序的操作方法。
2.实验内容和步骤
任务1:阅读《现代软件工程—构建之法》第3-4章内容,理解并掌握代码风格规范、代码设计规范、代码复审、结对编程概念;
- 代码风格规范:原则:简明,易读,无二义性
- 代码设计规范:代码设计规范不光是程序书写的格式问题,而且牵涉到程序设计、模块之间的关系、设计模式等方方面面,这里又有不少内容与具体程序设计语言息息相关(如C、C++、Java、C#)
- 代码复审:看代码是否在代码规范的框架内正确的解决了问题,其目的在于找出代码错误、发现逻辑错误、发现算法错误、发现潜在和回归错误以及发现需要改进的地方,还可以互相教育开发人员,共同成长
- 结对编程:结对编程是软件开发过程中所使用的一种技术,两名程序开发人员共享同一台工作站。其中一个扮演驾驶者(Driver)的角色,进行代码编写,另一个扮演观察员(Observer)或导航员(Navigator)的角色,对代码进行评测。他们可以轮流编写代码和测试案例,还可以坐在一起交流思想,解决问题,而不会想偷懒去刷手机。
任务2:两两自由结对,对结对方《实验二 软件工程个人项目》的项目成果进行评价,具体要求如下:
任务3:采用两人结对编程方式,结合我校师生疫情每日上报系统使用体验,设计开发一款符合我校疫情防控工作需求的信息系统,使之具有以下功能
-
需求分析陈述
- 让学校了解本人的健康状况,有无感染新冠病毒,有无返校举动等;
- 在系统中各二级部门疫情防控工作负责人可查看本部门人员疫情汇总,并提供高级查询功能进行多属性组合查询和可视化统计功能;
- 互联网是一个很好的平台,通过这个平台让管理者了解被管理者的疫情情况;
- 需要填报的人数比较多,难以管理,所以应该可以查询填报者和未填报者,并对未填报者及时作出提醒。
- 对于查询结果,应该简单直观地反映出疫情情况。
-
软件设计说明
- 结构设计:系统采用B/S架构,开发模型采用增量模型,软件成为一系列的构件,开发时逐个构件进行设计、实现、集成和测试
- 数据设计:软件中再pojo层中声明数据库表的实体类,采用ArrayList存储数据
- 接口设计:利用mybatis的通用Mapper进行数据操作,其他数据操作类都继承通用mapper
- 过程设计:采用springboot搭建web应用
-
软件实现及核心功能代码展示:
- 用户类:负责收集疫情信息。
- 管理员类:负责后台控制登录身份,定时填报提醒,数据操作。
-
程序运行
系统在线访问地址:(因为服务在我自己机器上跑,所以可能有时候服务没有开启)
学生疫情上报:http://kpgs.natapp1.cc
后台疫情管理平台:http://kpgs.natapp1.cc/user/login(密码:123)
(1)可采集全校各类师生员工疫情信息;
(2)各二级部门疫情防控工作负责人可查看本部门人员疫情汇总,并提供高级查询功能进行多属性组合查询和可视化统计功能;
(3)学校防控办指定负责人登录《西北师范大学疫情防控信息统计》子系统,可浏览所有人员填报汇总数据清单,利用【高级查询】可进行数据组合筛选,系统以图形化方式展示各学院已填报和未填报学生统计情况和关键疫情数据统计情况,可【导出】查询列表的EXCEL文件;
(4)附加分功能:定时填报提醒
由于短信接口是网上的试用平台,所以短信次数也有限只有10条,可能收不到验证码,敬请见谅
-
描述结对的过程:
-
GitHub提交截图(建立branch,并提交)
小组在进行编程时,采用github进行代码托管,双方编程完成时push到GitHub上,对方要编程就可以直接用pull指令拉取最新更改,idea编辑器中,还会高亮提示改变的代码,非常方便相互协作
-
讨论截图
-
遵守共同认可的编码规范,增加代码规范说明
-
-
展示PSP
PSP | 任务内容 | 计划共完成需要的时间(min) | 实际完成需要的时间(min) |
---|---|---|---|
Planning | 计划 | 30 | 30 |
· Estimate | 估计这个任务需要多少时间,并规划大致工作步骤 | 30 | 30 |
Development | 开发 | 1000 | 950 |
· Analysis | 需求分析 (包括学习新技术) | 200 | 190 |
· Design Spec | 生成设计文档 | 100 | 120 |
· Design Review | 设计复审 (和同事审核设计文档) | 40 | 30 |
· Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 60 | 60 |
· Design | 具体设计 | 300 | 210 |
· Coding | 具体编码 | 300 | 200 |
· Code Review | 代码复审 | 100 | 60 |
· Test | 测试(自我测试,修改代码,提交修改) | 60 | 50 |
Reporting | 报告 | 30 | 50 |
· Test Report | 测试报告 | 50 | 40 |
· Size Measurement | 计算工作量 | 30 | 20 |
· Postmortem & Process Improvement Plan | 事后总结 ,并提出过程改进计划 | 60 | 50 |
-
小结感受:两人合作真的能够带来1+1>2的效果吗
经过这次实验,我发现在真正的结对的情况下,确实会产生1+1>2的情况,因为另一方会从另外一个角度思考,发现对方代码的不足并及时指正。但也存在双方工作没办法平均分配,双方各有擅长的方面,所以在合作时更多的是取长补短,发会合作的优势。
小记
- 这次对于github的一系列操作有了很深的印象,像clone以及push,pull,branch这些通过好多次的练习肯定会牢牢记住的
- 对于结对编程有了一定了解。