项目 | 内容 |
班级博客链接 | https://edu.cnblogs.com/campus/xbsf/nwnu2020SE |
软件工程课程要求 | https://www.cnblogs.com/nwnu-daizh/p/12521474.html |
课程学习目标 | 与同伴结对编程,完善项目功能;掌握Github一些基本操作方法。 |
如何实现学习目标 | 与结对方多沟通,互相学习;通过项目进行总结;从网上查阅资料。 |
结对方姓名 | 201771010118-马昕璐 |
结对方博客 | https://www.cnblogs.com/maxinlu/ |
本项目Github的仓库链接地址 | https://github.com/Tycmoon/doub-le |
任务二
- 两两自由结对,对结对方《实验二 软件工程个人项目》的项目成果进行评价。本次跟我结对的同伴是2017级网络班马昕璐同学。博客链接为:https://www.cnblogs.com/maxinlu/p/12508005.html;Github项目仓库为:https://github.com/Melody596/First-test。
1、对项目博文作业进行阅读并进行评论,评论要点包括:博文结构、博文内容、博文结构与PSP中“任务内容”列的关系、PSP中“计划共完成需要的时间”与“实际完成需要的时间”两列数据的差异化分析与原因探究,将以上评论内容发布到博客评论区。
2、克隆结对方项目源码到本地机器,阅读并测试运行代码,参照《现代软件工程—构建之法》4.4.3节核查表复审同伴项目代码并记录。
概要部分
(1)代码符合需求和规格说明么?
答:基本符合。
(2)代码设计是否有周全考虑?
答:不太周全。
(3)代码可读性如何?
答:简单易懂。
(4)代码容易维护么?
答:较容易。
(5)代码的每一行都执行并检查过了吗?
答:是的。
设计规范部分
(1)设计是否遵从已知的设计模式或项目中常用的模式?
答:否
(2)有没有硬编码或字符串/数字等存在?
答:有。
(3)代码有没有依赖于某一平台,是否会影响将来的移植(如Win32到Win64)
答:没有依赖,应该不会影响。
(4)开发者新写的代码能否用已有的Library/SDK/Framework中的功能实现?在本项目中是否存在类似的功能可以调用而不用全部重新实现?
答:可以实现,不存在。
(5)有没有无用的代码可以清除?
答:有,已清除。
代码规范部分
修改的部分符合代码标准和风格么?
答:基本符合。
具体代码部分
(1)有没有对错误进行处理?对于调用的外部函数,是否检查了返回值或处理了异常?
答:未进行错误处理;有检查返回值和处理异常。
(2)参数传递有无错误,字符串的长度是字节的长度还是字符(可能是单/双字节)的长度,是以0开始计数还是以1开始计数?
答:开始有错误,修改后无误。字符串的长度是字节的长度,是以0开始计数。
(3)边界条件是如何处理的?循环有没有可能出现死循环?
答:在命名初始变量时就进行了边界条件的检查,如for(int i = 0;i < 20; i++)。不会出现死循环。
(4)有没有使用断言(Assert)来保证我们认为不变的条件真的满足?
答:没有使用。
(5)对资源的利用,是在哪里申请,在哪里释放的?
答:网上查找资源并进行整合。
(6)数据结构中是否有无用的元素?
答:一开始的时候定义了一些无用的,在后来的检查中删掉了。
效能
(1)代码的效能(Performance)如何?最坏的情况是怎样的?
答:代码无误。
(2)代码中,特别是循环中是否有明显可优化的部分(C++中反复创建类,C#中 string 的操作是否能用StringBuilder 来优化)?
答:有可优化部分,还未进行修改。
(3)对于系统和网络调用是否会超时?如何处理?
答:未超时。
可读性
代码可读性如何?有没有足够的注释?
答:可读性较高,有足够的注释。
可测试性
代码是否需要更新或创建新的单元测试?还可以有针对特定领域开发(如数据库、网页、多线程等)的核查表。
答:需要。
3.结对方项目仓库中的Fork、Clone、Push、Pull request、Merge pull request日志数据:
(我认为此次实验三的内容比实验二更值得提出issue,进行pull requests等操作,所以我只在同伴的实验二中进行了fork以及clone的操作,其余操作在实验三中实现)
实验二:
实验三:
任务三
采用两人结对编程方式,结合我校师生疫情每日上报系统使用体验,设计开发一款符合我校疫情防控工作需求的信息系统,使之具有以下功能:
-
需求分析
-
需求概述
- 在疫情期间方便学校了解教职工和学生的健康情况
- 借助有效的互联网平台对数据进行统计分析
- 分不同角色不同权限对系统进行填报、管理
-
软件设计
- 学生/教职工:
- 填报信息;
- 每日只能填报一次信息。
- 管理人员:
- 能对填报的信息进行增删改查;
- 导出excel表格;
- 生成统计图便于分析。
- 学生/教职工:
-
软件实现及核心功能代码展示
- 主要类说明:
login:登录界面,可分为管理人员或者学生登录
ManagerLogin类以及StudentLogin类:分别是管理人员和学生界面里需要填写的内容
show_stuall和showones类:显示全部填写信息和查询某一个学生的信息
Function:通过Arraylist存储学生信息,实现对信息的增删改功能
- 关键代码片段
public void actionPerformed(ActionEvent e) {
String sID = 学工号.getText(); //获取文本框中内容
if(fun.find(sID)!=-1)
{
JOptionPane.showMessageDialog(null, "该学/工号对应的学生已经存在!!!
请重新输入或者修改已经录入的信息");
//清空文本框
学工号.setText("");
姓名.setText("");
学院.setText("");
个人联系方式.setText("");
现居住地.setText("");
登记日期.setText("");
return;
}
String sname = 姓名.getText();
//先判断学号和姓名是否为空,如果为空,直接退出
if(sID.equals("")||sname.equals(""))
{
JOptionPane.showMessageDialog(null, "录入的学生学号或姓名为空!!!
请重新输入");
return;
}
String scollege = 学院.getText();
if(scollege.equals(""))//年龄为空,没有输入
scollege="--";
String scall = 个人联系方式.getText();
if(scall.equals(""))
scall="--";
String shome = 现居住地.getText();
if(shome.equals(""))
shome="--";
String stime = 登记日期.getText();
if(stime.equals(""))
stime="--";
String sinfo1=null;
if(是.isSelected()){//选择是否与患者有接触
sinfo1=是.getText();
}
else{
sinfo1=否.getText();
}
String sinfo2=null;
if(有.isSelected()){//选择是否与患者有接触
sinfo2=有.getText();
}
else{
sinfo2=无.getText();
}
stu.setStuID(sID);
stu.setName(sname);
stu.setAge(scollege);
stu.setCallnummber(scall);
stu.setHome_place(shome);
stu.setIdentityID(stime);
stu.setInfo1(sinfo1);
//stu.setInfo2(sinfo2);
stu.setInfo2(sinfo2);
//stu.setInfo4(sinfo4);
System.out.println("信息管理员");
System.out.println(stu.fileString());
-
功能实现
-
分角色登录
-
管理人员界面
-
学生界面
-
管理人员显示全部信息
-
管理人员按条件查询(可单条件查询,也可多属性组合查询)
-
生成统计图
-
生成excel文件
-
-
描述结对的过程,提供两人在讨论、细化和编程时的微信或QQ截图(截图要完整,能够显示结对双方姓名)
-
PSP展示
PSP2.1 | 内容 | 计划完成需要的时间(h) | 实际完成需要的时间(h) |
Planning | 计划 | 30 | 20 |
Estimate | 估计这个任务需要多少时间,并规划大致工作步骤 | 30 | 45 |
Development | 开发 | 25 | 40 |
Analysis | 需求分析 (包括学习新技术) | 3 | 5 |
Design Spec | 生成设计文档 | 2 | 2 |
Design Review | 设计复审 (和同学审核设计文档) | 1 | 1 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 1 | 0.5 |
Design | 具体设计 | 5 | 5 |
Coding | 具体编码 | 20 | 35 |
Code Review | 代码复审 | 1 | 5 |
Test | 测试(自我测试,修改代码,提交修改) | 1 | 3 |
Reporting | 报告 | 1 | 2 |
Test Report | 测试报告 | 1 | 1 |
Size Measurement | 计算工作量 | 2 | 1 |
Postmortem & Process Improvement Plan | 事后总结,并提出过程改进计划 | 1 | 1 |
-
小结感受:两人合作真的能够带来1+1>2的效果吗?通过这次结对合作,请谈谈你的感受和体会。
通过此次实验,我觉得两人合作确实能够带来1+1>2的效果。比如做之前我们两个人会共同商量构思,共同决定用什么技术、什么方法,当一个人在遇到困难时,另一个人也可以帮助解决。并且通过1+1的合作,两个人除了能学会一些技术知识,也能学会一些沟通技巧、收获合作的快乐。