第三次作业 结对编程
第三次作业 结对编程
我的博客地址 | 链接 |
---|---|
队友博客地址 | 链接 |
Fork github 项目地址 | 链接 |
GitHub项目地址 | 链接 |
作业要求地址 | 链接 |
一.PSP表格
PSP | Personal Software Process Stages | 预估耗时 | 实际耗时 |
---|---|---|---|
Planning | 计划 | 2Hour | 1.5Hour |
Estimate | 估计这个任务需要多少时间 | 3Day | 3Day |
Development | 开发 | 2Day | 1Day |
Analysis | 需求分析 (包括学习新技术) | 4Hour | 3Hour |
Design Spec | 生成设计文档 | 3Hour | 5Hour |
Design Review | 设计复审 (和同事审核设计文档) | 5Hour | 1Hour |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 3Hour | 4Hour |
Design | 具体设计 | 1Day | 1Day |
Coding | 具体编码 | 1Day | 1Day |
Code Review | 代码复审 | 3Hour | 3Hour |
Test | 测试(自我测试,修改代码,提交修改) | 3Hour | 2Hour |
Reporting | 报告 | 4Hour | 4Hour |
Test Report | 测试报告 | 2Hour | 2Hour |
Size Measurement | 计算工作量 | 1Hour | 1Hour |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 3Hour | 3Hour |
合计 | 76.5Hour |
二.程序要求
本次作业是设计实现一个WinForm随机点名的程序,能满足教师的基本点名需求,要求程序不能有运行错误,并且有一定的特色。
三.正式作业
3.1具体分工
学号尾号24234 吴郑浩(也就是我)主要负责窗口设计,学生信息代码改进,测试评估。
学号尾号24214 许佳文(我的队友)主要负责程序代码编写,开发。
虽然如此分工,但我们还是秉着共同学习,共同进步的方针,相互协作,齐力完成此次作业。
3.2 作答思路:
其实最开始看到此次作业要求的时候,我和我的队友都认为此次作业对于我们来说有一定的难度,好在老师在课堂上提供了明确的作答思路,并在代码编写方面为我们提供了莫大的帮助。
针对随机点名这一大程序整体需求,我们可以分为四个部分,将一个大任务划分为可操作的几个小任务。这个程序具体需求有以下两点:1.加载学生名单;2.执行开始点名及停止点名两项命令完成随机点名。
首先我们认为一个好的窗口程序应当有一个比较美观的外表,于是在窗口外观设计上花了一些功夫。最终结果如下:
然后我们在老师给的的程序的基础上对代码有了一些优化使程序更具有真实性,但碍于有些同学所说的个人隐私问题特意将学号信息打上马赛克。以下为程序运行结果示意图:
3.3代码复审
(1)代码复审的意义: 首先,在代码复审中发现的问题,绝大多数都可以由开发者独立发现。从这一意义上说,复审者是在替开发者干开发者本应干的事情。另外,在代码复审中的提问与回应能帮助团队成员互相了解,就像练武之人互相观摩点评一样。团队中有新成员加入时,代码复审能非常有效地帮助新成员了解团队的开发策略、编程风格及工作流程。
(2)代码复审规则: 参考专业人士博客
(3)我们的代码复审阶段: 由于我们是在一起完成的此次作业,同时使用了两台电脑,可以随时相互支招,随时看到双方的进度,当发现代码错误或者因为个人原因出现了失误的话可以随时指出,所以复审阶段我们的工作就会相对轻松一点,并没有出现太多问题。
3.4部分代码解析
3.4.1窗体程序主代码(部分)截图:
3.4.2进度条代码截图
3.4.3学生数据录入截图:
3.5单元测试
代码截图(此部分是在我队友电脑上进行的,所以截图有所不同):
3.6附加功能
我们尝试在原有的代码基础上添加查询功能,使点名系统的实用性更高,但是由于C#基础不够硬,最终以失败告终,日后有机会的话,我们会向老师请教,以此来完善我们的程序。
3.7结对编程过程及照片
3.7.1结对编程过程: 在整个结对编程过程中,我和我的队友相处极为融洽,有问题及时处理,绝不拖沓,合作也比较有默契,分工合理,各司其职,总的来说这次结对编程我是十分满意的,我从我的队友那里还学到了不少新东西。
3.7.2结对作业照片:
四.我的感想及总结
由于是第一次尝试结对编程,进行了前所未有的尝试,感觉比自己一个人来写代码效果更好,但是由于一开始思路不清,所以很迷茫,但是经过两个人充分交流,最后还算有理有序地进行了下去,结对编程使得我们提高了工作效率,它还促进参与项目的我们自身的提高,我们的时候,水平较低的一方会潜移默化地受水平略高的一方影响,学到一些新的东西。而水平高的一方同样因为不断地把自己的想法说出来而整理了自己的思路。所以这次结对编程我的收获颇丰。