项目 | 内容 |
---|---|
课程班级博客链接 | https://www.cnblogs.com/nwnu-daizh/ |
作业要求链接 | https://www.cnblogs.com/nwnu-daizh/p/12416880.html |
我的课程学习目标 | 体验软件项目开发中的结对编程,练习巩固gitnub协作开发程序的操作方法 |
这个作业在哪些方面帮助我实现课程目标 | (1)熟练掌握Github发布软件项目的操作方法;(2)体验结对编程的好处;(3)掌握软件项目个人开发流程。 |
结对方姓名-学号 | 张燕-201771010142 |
结对方本次博客作业链接 | https://www.cnblogs.com/zyan---/p/12580442.html |
项目Github的仓库链接地址 | https://github.com/wait1234-111/zy-and-yrq |
1、实验目的与要求
(1)体验软件项目开发中的两人合作,练习结对编程(Pair programming)。
(2)掌握Github协作开发程序的操作方法。
2、实验内容和步骤
任务1:阅读《现代软件工程—构建之法》第3-4章内容,理解并掌握代码风格规范、代码设计规范、代码复审、结对编程概念;
任务2:两两自由结对,对结对方《实验二 软件工程个人项目》的项目成果进行评价,具体要求如下:
(1)对项目博文作业进行阅读并进行评论,评论要点包括:博文结构、博文内容、博文结构与PSP中“任务内容”列的关系、PSP中“计划共完成需要的时间”与“实际完成需要的时间”两列数据的差异化分析与原因探究,将以上评论内容发布到博客评论区。
(2)克隆结对方项目源码到本地机器,阅读并测试运行代码,参照《现代软件工程—构建之法》4.4.3节核查表复审同伴项目代码并记录。
代码复审核查表 | ||
重要点 | 内容 | 结果 |
1 概要部分 | 1、代码符合需求和规格说明么? | 代码符合任务书里所需实现的功能操作 |
2、代码设计是否考虑周全? | 否,有些功能还是没有考虑到,没有完善 | |
3、代码容易维护么? | 比较容易维护 | |
4、代码的每一行都执行并检查了么? | 是,几乎大多数都检查了 | |
2 设计规范部分 | 1、头文件和定义文件的名称是否合理? | 合理 |
2、设计是否遵从已知的设计模式或项目中常用的模式? | 是的,因为比较熟悉,更容易操作; | |
3、代码有没有依赖于某一平台,是否会影响将来的移植(如Win32到Win64)? | 没有,不会影响移植,任何平台都可以 | |
4、有没有无用的代码可以清除? | 有,还有部分未清除完毕 | |
3 代码规范部分 | 修改的部分符合代码标准和风格么? | 符合,全都按照代码标准修改的 |
4 具体代码部分 | 1、有没有对错误进行处理?对于调用的外部函数,是否检查了返回值或处理了异常? | 对错误都进行了处理,没有发现异常 |
2、循环有没有可能出现死循环? | 没有可能,可以重复抽取 | |
3、有没有可能导致资源泄露(内存、文件、各种GUI资源、数据库访问的连接,等等)?有没有可能优化? | 没有资源泄露的可能,都进行了加密,有可以优化的空间 | |
5 效能 | 1、代码的效能如何?最坏的情况是怎样? | 可以达到任务书所要求的功能,最坏可能就是程序无法运行 |
2、代码中,特别是循环中,是否有明显的可优化的部分 | 应该是有的,但是目前技术有限,无法明确指出 | |
3、对于系统和网络调用是否会超时?如何处理? | 暂时没有出现超时,如果有,可以利用杀毒软件来释放内存,清理c盘 | |
6 可读性 | 代码可读性如何?有没有足够的注释? | 是乐意读取的,部分代码有注释 |
7 可测试性 | 代码是否需要更新或创建新的单元测试? | 我认为暂时不是很需要的 |
(2)Clone:将对方代码下载到本地
(3)创建新支,将新分支提交的改动合并到主分支上
(4)push/pull request
(5)Merge pull request
任务3:西北师范大学疫情防控系统
-
3.1PSP
PSP | 任务内容 | 计划共完成需要的时间(min) | 实际完成需要的时间(min) |
---|---|---|---|
Planning | 计划 | 15 | 15 |
Estimate | 估计这个任务需要多少时间,并规划大致工作步骤 | 20 | 25 |
Development | 开发 | 600 | 800 |
Analysis | 需求分析 (包括学习新技术) | 30 | 60 |
Design Spec | 生成设计文档 | 10 | 15 |
Design Review | 设计复审 (和同事审核设计文档) | 20 | 30 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 10 | 20 |
Design | 具体设计 | 60 | 80 |
Coding | 具体编码 | 300 | 350 |
Code Review | 代码复审 | 30 | 25 |
Test | 测试(自我测试,修改代码,提交修改) | 25 | 20 |
Reporting | 报告 | 30 | 40 |
Test Report | 测试报告 | 10 | 20 |
Size Measurement | 计算工作量 | 9 | 14 |
Postmortem & Process Improvement Plan | 事后总结 ,并提出过程改进计划 | 10 | 20 |
-
3.2需求分析及功能实现
(1)可采集全校各类师生员工疫情信息;
(2)各二级部门疫情防控工作负责人可查看本部门人员疫情汇总,并提供高级查询功能进行多属性组合查询和可视化统计功能;
(3)学校防控办指定负责人登录《西北师范大学疫情防控信息统计》子系统,可浏览所有人员填报汇总数据清单,利用【高级查询】可进行数据组合筛选,系统以图形化方式展示各学院已填报和未填报学生统计情况和关键疫情数据统计情况,可【导出】查询列表的EXCEL文件;
(4)人机交互界面要求GUI界面(WEB页面、APP页面都可);
(5)附加分功能:定时填报提醒;
-
3.3 软件设计说明
本次系统总共分为五个包,这些包按功能分可划分为如下几部分,每个包所包含的类又大不相同,可谓分工明确,如下所示:
(1)实用程序包(java.util) ,因为在系统做了个小日历,所以用日期(Data)类和日历(Calendar)类来产生和获取日期及时间,以及异常类;
(2)语言包(java.lang),该包提供了此次编程的基础类,主要含有与语言相关的类,有math类、system类(有标准输出/输入);
(3)图形用户接口包(java.swing),由于本次系统是人机交互界面GUI界面,所以包含了各种swing组件的类;(4)mapper,mapper是对象持久化映射层,一般会继承ibatis或者mybatis,开发dao及其实现类;
(5)controller,controller是控制层,service服务类,定义学生类和管理员类;
(6)GetConnection类用于连接数据库,login类用于登录界面,权限设置等
-
3.4 程序运行截图
(1)登录界面
(2)管理员登录,查看所有人员汇总,高级查询
(3)高级查询,筛选,统计图
(4)GUI界面
(5)定时提醒功能
-
3.5 关键代码
´´´
public String DefaultLoginPage(){
return "/login";
}
@RequestMapping("/adminLogin")
public String adminLoginPage(){
return "/adminLogin";
}
/**
* 主页面
* @return
*/
@RequestMapping("/page/index")
public String indexPage(){
return "/index";
}
@RequestMapping("/page/AdminIndex")
public String adminIndexPage(){
return "/AdminIndex";
}
/**
* 默认主页
* @return
*/
@RequestMapping("/page/homepage")
public String homepage(){
return "/homepage";
}
@RequestMapping("/page/adminhomepage")
public String studenthomepage(){
return "/adminhomepage";
}
/**
* 分类管理页面
* @return
*/
@RequestMapping("/page/addStudent")
public String classifyPage(){
return "/addStudent";
}
@RequestMapping("/page/epidemic/student/all")
public String selAllByStudent(){
return "/studentRecord";
}
@RequestMapping("/page/AllRecord")
public String selAll(){
return "/AllRecord";
}
/**
* 音频文字管理页面
* @return
*/
@RequestMapping("/page/adminpassword")
public String audioPage(){
return "/adminpassword";
}
@RequestMapping("/page/password")
public String passwordPage(){
return "/password";}}´´´
3、结对编程交流过程
因为不确定partner是否有事,所以将通讯改为文字交流,图片交流等……