课程班级博客链接 | https://edu.cnblogs.com/campus/xbsf/nwnu2020SE |
这个作业要求链接 | https://www.cnblogs.com/nwnu-daizh/p/12521474.html |
我的课程学习目标 | 1. 认真完成本课程学习; 2. 了解一个软件项目制作的完整过程; 3. 紧跟老师脚步,尽量多的进行实战演练。 |
这个作业在哪些方面帮助我实现学习目标 | 1. 写博客; 2. 提高编程能力; 3. 掌握GitHub的基本使用。 |
结对方学号-姓名 | 201771030115-牛莉梅 |
结对方本次博客作业链接 | https://www.cnblogs.com/niulimei/p/12524472.html |
本项目GitHub的仓库链接地址 | https://github.com/Jenna-yuan/NWNU-WEB |
任务二
两两自由结对,对结对方《实验二 软件工程个人项目》的项目成果进行评价本次跟我结对的同伴是2017级卓越班牛莉梅同学。博客链接为:https://www.cnblogs.com/niulimei/p/12420300.html;Github项目仓库为:https://github.com/niulimei1/Test1。 1、对项目博文作业进行阅读并进行评论,评论要点包括:博文结构、博文内容、博文结构与PSP中“任务内容”列的关系、PSP中“计划共完成需要的时间”与“实际完成需要的时间”两列数据的差异化分析与原因探究,将以上评论内容发布到博客评论区。
2、克隆结对方项目源码到本地机器,阅读并测试运行代码,参照《现代软件工程—构建之法》4.4.3节核查表复审同伴项目代码并记录。
概要部分 | (1)代码符合需求和规范说明;(2)代码设计考虑周全;(3)代码可读性良好;(4)代码容易维护;(5)代码每一行都执行检查过了。 |
设计规范部分 | (1)设计遵从已知设计模式或项目中常用的模式;(2)代码中午硬编码或字符串/数组等存在;(3)代码没有依赖某一平台,不会影响将来的移植;(4)没有无用代码可以清除。 |
代码规范部分 | 整体代码风格良好,符合代码标准。并未进行相应的修改。但是有为作者提供一些更好的建议。 |
具体代码部分 | (1)作者代码严密紧致,无需要修改部分。对于调用的外部函数,检查了返回值或处理了异常;(2)参数传递无错误,字符串的长度是单字符的长度,是以0开始计数;(3)边界条件利用try catch来进行处理,代码中循环没有出现死循环;(4)有使用断言来保证我们认为不变的条件真的得到满足;(5)数据结构中没有用不到的元素。 |
效能 | (1)代码的效能良好,最坏的情况是运行时稍微多等待几秒;(2)代码中,没有明显的可优化的部分;(3)该系统并不需要调用网络。 |
可读性 | 代码通俗易懂,并有足够的注释。 |
可测试性 | 由于本项目并非一各足够完整的项目,故需要对其进行更新和创建新的单元测试。 |
3、依据复审结果尝试利用github的Fork、Clone、Push、Pull request、Merge pull request等操作对同伴个人项目仓库的源码进行合作修改。
任务三
采用两人结对编程方式,结合我校师生疫情每日上报系统使用体验,设计开发一款符合我校疫情防控工作需求的信息系统,使之具有以下功能:
(1)可采集全校各类师生员工疫情信息;(2)各二级部门疫情防控工作负责人可查看本部门人员疫情汇总,并提供高级查询功能进行多属性组合查询和可视化统计功能;(3)学校防控办指定负责人登录《西北师范大学疫情防控信息统计》子系统,可浏览所有人员填报汇总数据清单,利用【高级查询】可进行数据组合筛选,系统以图形化方式展示各学院已填报和未填报学生统计情况和关键疫情数据统计情况,可【导出】查询列表的EXCEL文件;(4)人机交互界面要求GUI界面(WEB页面、APP页面都可);(5)附加分功能:定时填报提醒。 |
需求分析陈述
2019年12月末,中国武汉发生新型冠状病毒(2019-nCoV) 感染的肺炎疫情,为遏制疫情蔓延,有效切断病毒传播途径,在中央政府指导下,各级政府部分采取了一系列防控措施: 2020年1 月23 日10时起对武汉“封城”,全国 31个省市也相继实施了严格的防控措施;全国各省市向武汉和湖北派遣医疗队参与救治工作;在全国范围内调配口罩、防护服、药品等急需的医疗资源支援武汉;指导和督促全国范围内拥有医疗物资生产资质的企业尽快恢复生产能力;定向拨付专项财政资金用于疾病防控;从其他省份调集物资保障武汉市民日常生活。 为有效配合防控机构有关疫情信息的采集、统计与排查,我校开发了教职工/学生疫情上报系统,该系统由教职工疫情每日上报、学生疫情每日上报、二级部门疫情每日汇总表、疫情防控填报统计四个子系统组成。实现对我校各类人员基本情况、所在区域及活动轨迹及健康状况的信息收集。师生通过我校企业微信服务大厅访问该系统进行远程信息填报。 本校疫情上报信息统计系统开发初期得到很多本校人员的“吐槽”,建议如下:(1)优化上报界面;(2)设置填报时间提醒(3)提高系统性能。
软件设计说明
结构设计:
本系统在结构上采用Spring MVC体系架构。采用具有软件产品可以分批次交付和目标系统能够被模块化特点的增量模型为基础进行软件开发。程序设计:
开发阶段严格执行Spring MVC体系架构的基本流程与方法,在程序设计过程中,主要设计了以下类与JSP页面:
数据设计:
相对于实验二的上报登记模块来说,本实验多了教职工上报这一模块。故在数据设计过程中,我们就多添加了教职工这一模块数据。管理模块各二级部门和学校疫情防控办将student-info和teacher-infor两张表按照主键的方式完成数据查询和信息展示等功能。
界面设计:
为相应用户视觉上的号召,此次界面设计中,我们遵循以深蓝色为基调,通过与白色想搭配使用,使界面简易整洁相对比较可观。
软件实现及核心功能代码展示
1、核心代码展示
package com.nwnu.controller;
import javax.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import com.nwnu.pojo.Mannager;
import com.nwnu.service.MannagerService;
@Controller
public class MannagerController {
@Autowired
private MannagerService mannagerService;
@RequestMapping("/admin")
public String admin(String name, String password, Model model, HttpSession session) {
// 通过用户账号和密码查找用户
Mannager mannager = mannagerService.findMannager(name, password);
if (mannager != null) {
// 将用户对象添加到Session
session.setAttribute("USER_SESSION", mannager);
model.addAttribute("mannager", mannager);
// 跳转到主页面
return "redirect:listStudent";
}
// 返回到登录界面
model.addAttribute("msg", "账号或密码错误,请重新输入");
return "admin";
}
@RequestMapping("/logout")
public String logout(HttpSession session) {
// 清除Session
session.invalidate();
// 页面重定向
return "redirect:admin";
}
}
2、功能展示
-
程序运行
-
系统首页
本系统首页中包括疫情上报和填报统计两个功能。疫情上报入口面向本校学生和教职工开发。填报统计由二级部门疫情防控工作负责人和学校防控办制定负责人登陆进入相应界面,进行相应操作。
-
填报人员身份选择
本校填报人员无非就教职工和学生两类人员。由首页中疫情上报入口进入进入本界面,选择自身所扮“角色”进行信息上报。
-
学生和教职工疫情登记
本次系统开发中,我们将学生疫情登记与教师疫情登记进行统一化,其目的是降低二级部门负责人和学校防控办负责人统计时的复杂度。相对于实验二中所统计的数量上稍有减少,但是所统计数据还是比较齐全。
-
填报时间限定
本系统中设置填报截止时间为早上10点。也就是若填报时间在10点之前,信息提交时系统会显示提交成功,但若超过10点则显示提交失败。1、学生提交信息显示:
2、教职工提交信息显示
-
填报统计
各负责人通过首页填报统计入口进入管理员登录界面,进行学院和学校分类别登录进入相应的管理界面。如果管理人员对应信息输错或未输入,则会提示“您还没有登录,请登录”。
-
二级部门查询、数据统计功能展现
根据我们的理解,认为二级部分疫情防控负责人应为各学院等本校相关分机构。由于分机构较多,本系统只做了两个简单的二级部门疫情防控子系统。分别是:计算机科学与工程学院疫情防控信息统计和体育学院疫情防控信息统计。其相关功能展示如下:1、计算机科学与工程学院疫情防控信息统计
-
首页
-
组合查询
-
数据统计
2、体育学院疫情防控信息统计 -
首页
-
组合查询
-
-
学校防控办高级查询、数据统计与导出功能展示
关于学校防控办的高级查询此模块,本系统采用“学院+疑似状况”两个方面进行组合查询,以快速筛选出各学院身体健康发生特殊状况的人员,以快速采取相应的措施。数据统计模块中,我们主要对当天各学院有疫情疑似症状和填报与未填报的人数进行统计分析。1、首页
2、高级查询
3、数据统计
4、导出
-
-
结对之路
本次结对编程过程中,我们在时间段上划分为:1、第四周星期五—星期日完成任务二相关实验要求;2、第五周星期一—星期四进行任务三代码部分实现;3、第五周星期五—星期六完成博客内容编制及相关要求细化。整个过程中两个人一起交流,分工合作,相对于实验二中个人项目的开发过程效率高了很多。下面是聊天记录展示:
PSP展示
实际完成需要的时间(小时) | |||
---|---|---|---|
Planning | 计划 | 80 | 90 |
. Estimate | . 估计这个任务需要多少时间,并规划大致工作步骤 | 80 | 90 |
Development | 开发 | 75 | 85 |
Analysis | 需求分析 (包括学习新技术) | 5 | 5 |
Design Spec | 生成设计文档 | 10 | 5 |
Design Review | 设计复审 (和同事审核设计文档) | 5 | 10 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 5 | 5 |
Design | 具体设计 | 10 | 5 |
Coding | 具体编码 | 20 | 30 |
Code Review | 代码复审 | 10 | 10 |
Test | 测试(自我测试,修改代码,提交修改) | 10 | 15 |
. Reporting | . 报告 | 5 | 5 |
Test Report | 测试报告 | 2 | 3 |
Size Measurement | 计算工作量 | 2 | 1 |
Postmortem & Process Improvement Plan | 事后总结 ,并提出过程改进计划 | 1 | 1 |
小结
对于老师所说两人结对编程效果是否“1+1>2”?我的回答是“>”。此次结对编程让我收获很多。整整10天的时间,对于开发一个项目来说说长也不长,说短也不短。在漫长的聊天记录中,让我这个急性子的人,学会了耐心(虽然不是很耐心,但是成效还是很大)。同时,在这个过程中我也意识到了自己存在的缺陷,并加以改之。希望以后的自己越来越好。