1、实验目的与要求
(1)体验软件项目开发中的两人合作,练习结对编程(Pair programming)。
(2)掌握Github协作开发程序的操作方法。
2、实验内容和步骤
任务1:阅读《现代软件工程—构建之法》第3-4章内容,理解并掌握代码风格规范、代码设计规范、代码复审、结对编程概念
1.代码风格规范:简明,易读,无二义性
2.代码设计规范:包含注释规范,异常处理,命名规范
3.代码复审:看代码是否在代码规范的框架内正确的解决了问题,其目的在于找出代码错误、发现逻辑错误、发现算法错误、发现潜在和回归错误以及发现需要改进的地方,其中包含自我复审,同伴复审,团队复审
4.结对编程:结对编程是极限编程这一思想的具体体现。结对编程有三种形式:键盘鼠标式,Ping-pong式,领航员—驾驶员式。其目的在于减少犯错,提高解决问题的效率,知识传递,取得更高的投入产出比
任务2:两两自由结对,对结对方《实验二 软件工程个人项目》的项目成果进行评价,具体要求如下
博客评论
a.大体上,博文结构清晰明了,按照老师的要求完成了第二次实验的作业,但是有点瑕疵的是功能不够完善。
b.在博文内容上,系统的界面可以,而在软件介绍方面写的不够完美,所以可以尝试地改变自己的书写风格。
c.psp中时间的预估差距过大的原因可能是平时练得少,导致编程能力不过关,从而在开发软件时要学习相关的知识储备。
代码核查表
1.概要部分
代码符合设计需求和规格,功能未能完全实现,可读性和安全性有待提高。希望统一代码的格式规范,优化功能性和安全性
2.设计规范部分
遵从设计模式,存在一些无用代码。尽可能实现系统功能,删除无用代码
3.代码规范部分
修改符合代码规范和风格的代码
4.具体代码部分
未进行错误处理,有检查返回值和处理异常,但数据库的安全性有待提高,而且没有使用断言来保证我们认为不变的条件真的满足,因此希望修改与数据库的连接方式
5.效能
代码能正常编译,无超时情况,并且没有进行优化
6.可读性
代码可读性可以,但是注释不够完整。尽量增加代码的功能注释
7.可测试性
希望可以增添一些测试单元来进行测试
任务3:采用两人结对编程方式,结合我校师生疫情每日上报系统使用体验,设计开发一款符合我校疫情防控工作需求的信息系统
1.需求分析陈述
目的是开发西北师范大学疫情填报系统,从而解决传统手工操作造成的漏报、误报和迟报等问题。方法采用网页技术和SQL SERVER数据库,通过网络接口与人员的PC端或移动端收集信息。目标是系统具有报卡提醒、填写和统计分析等功能,实现疫情信息上报的自动化管理。极大地提高了工作效率,减轻了国家医护人员的工作量,降低漏报率或误报率。
2.软件设计说明
系统要包含以下功能:
(1)可采集全校各类师生员工疫情信息;
(2)各二级部门疫情防控工作负责人可查看本部门人员疫情汇总,并提供高级查询功能进行多属性组合查询和可视化统计功能;
(3)学校防控办指定负责人登录《西北师范大学疫情防控信息统计》子系统,可浏览所有人员填报汇总数据清单,利用【高级查询】可进行数据组合筛选,系统以图形化方式展示各学院已填报和未填报学生统计情况和关键疫情数据统计情况,可【导出】查询列表的EXCEL文件;
(4)人机交互界面要求GUI界面(WEB页面、APP页面都可);
(5)附加分功能:定时填报提醒
3.软件实现及核心功能代码展示
<!-- <label for="identification">身份</label>
<select id="identification" name="identification">
<option value="teacher">教师</option>
<option value="student">学生</option>
</select> -->
<label for="identity">身份</label>
<input type="text" value="<%=identity %>" id="identity" name="identity" required="required" disabled="true">
<!-- <label for="college">学院</label>
<select id="college" name="college">
<option value="计算机">计算机</option>
<option value="数统">数统</option>
<option value="化工">化工</option>
</select> -->
<label for="college">学院</label>
<input type="text" value="<%=college %>" id="college" name="college" required="required" disabled="true">
<label for="lname">姓名</label>
<input type="text" value="hello" id="name" name="name" required="required" >
<label for="fname">学号</label>
<input type="text" id="id" value="<%=id %>" name="id" required="required">
<label for="fname">电话</label>
<input type="text" id="tel" value="123456" name="tel" required="required">
<label for="fname">学院电话</label>
<input type="text" id="teachertel" value="123456" name="teachertel" required="required">
<label for="fname">是否发热</label><br><br>
<input type="radio" name="fever" value="1" required="required">是
<input type="radio" name="fever" value="0" required="required">否<br><br>
<label for="fname">是否湖北籍</label><br><br>
<input type="radio" name="hubei" value="1" required="required">是
<input type="radio" name="hubei" value="0" required="required">否<br><br>
<label for="fname">是否感染</label><br><br>
<input type="radio" name="infect" value="1" required="required">是
<input type="radio" name="infect" value="0" required="required">否<br><br>
<label for="fname">是否与湖北人接触</label><br><br>
<input type="radio" name="conwithhubei" value="1" required="required">是
<input type="radio" name="conwithhubei" value="0" required="required">否<br><br>
<input type="submit" value="Submit">
4.程序运行
登陆界面
填报界面
5.讨论截图
6.结对作业的PSP
PSP |
任务内容 |
计划共完成需要的时间(min) |
实际完成需要的时间(min) |
Planning |
计划 |
8 |
15 |
Estimate |
估计这个任务需要多少时间,并规划大致工作步骤 |
8 |
10 |
Development |
开发 |
900 |
1100 |
Analysis |
需求分析 |
6 |
14 |
Design Spec |
生成设计文档 |
5 |
60 |
Design Review |
设计复审 |
150 |
200 |
Coding Standard |
代码规范 (为目前的开发制定合适的规范) |
13 |
30 |
Design |
具体设计 |
40 |
90 |
Coding |
具体编码 |
600 |
800 |
Code Review |
代码复审 |
150 |
326 |
Test |
测试(自我测试,修改代码,提交修改) |
30 |
160 |
Reporting |
报告 |
20 |
60 |
Test Report |
测试报告 |
7 |
15 |
Size Measurement |
计算工作量 |
2 |
5 |
Postmortem & Process Improvement Plan |
事后总结 ,并提出过程改进计划 |
3 |
5 |
7.小结感受:
资源整合就意味着综合所有人的力量,发挥团队的整体威力,从而使整体大于各部分之和。就好像两块木头能承受的力量大于两个单块木头的承受力之和,两种药物并用的疗效也大于一种药物的疗效。其实也就是全体大于部分的总和,其本质就是创造性的合作,集思广益,集体创新,从而达到1+1>2的效果。