一、实验目标:
1)体验敏捷开发中的两人合作。
2)进一步提高个人编程技巧与实践。
二 、实验内容
1)根据以下问题描述,练习结对编程(pair programming)实践;
2)要求学生两人一组,自由组合。每组使用一台计算机,二人共同编码,完成实验要求。
3)要求在结对编程工作期间,两人的角色至少切换 4 次;
4)编程语言不限,版本不限。建议使用 Python 或 JAVA 进行编程。
三、实验过程
1)查阅相关资料加深对敏捷开发和结对编程的理解:
敏捷开发:敏捷开发是一种从1990年代开始逐渐引起广泛关注的新型软件开发方法,是一种能应对快速变化需求的软件开发能力。它们的具体名称、理念、过程、术语都不尽相同,相对于"非敏捷",更强调程序员团队与业务专家之间的紧密协作、面对面的沟通(认为比书面的文档更有效)、频繁交付新的软件版本、紧凑而自我组织型的团队、能够很好地适应需求变化的代码编写和团队组织方法,也更注重做为软件开发中人的作用。
结对编程(英语:Pair programming)是一种敏捷软件开发的方法,两个程序员在一个计算机上共同工作。一个人输入代码,而另一个人审查他输入的每一行代码。输入代码的人称作驾驶员,审查代码的人称作观察员(或导航员)。两个程序员经常互换角色。在结对编程中,观察员同时考虑工作的战略性方向,提出改进的意见,或将来可能出现的问题以便处理。这样使得驾驶者可以集中全部注意力在完成当前任务的“战术”方面。观察员当作安全网和指南。结对编程对开发程序有很多好处。比如增加纪律性,写出更好的代码等。
自己的理解:结对编程很重要的就是团队精神,每一个人的编程能力很重要,同样配合他人进行编程,及时发现并纠正他人编程过程中存在的错误也很重要。在编程时,每个人有自己的编程思路,可讨论出优于单独一个人的算法思路,能提高编程效率。结对编程也可以提高每个人的编程能力,在自己编写代码时会更加细心,思路会更加清晰,发现自己存在的错误;在监督别人写代码时,可以学习参考别人优秀的编写思路,发现别人的编程错误,提高自己的能力。
2)组队情况,各队博客地址,github仓库地址,所选择的课题:
队伍名称 |
队员 |
博客地址 |
GitHub仓库地址 |
选择课题 |
XYZ |
王慧 |
https://www.cnblogs.com/1234wh/ |
https://github.com/yqw0710/wyzproject |
生命游戏 |
叶啟文 |
https://www.cnblogs.com/yqw0710/ |
3)资料查阅与课题理解
1、共同理解
(1).生命算法原理
a.生命细胞只有两种状态:“生”或“死”。
b.开始时,随机设定为生或死。0表示死、1表示生。
c.细胞下一状态由该周围8个细胞的上一生命状态决定。
周围有三个活细胞,则为生。(状态赋值为1)
周围有两个活细胞,则保持。(状态不变)
其他情况,则为死。(状态赋值为0)
(2).如何搭建界面
用Python可视化创建一个地图,用白色显示活细胞,用黑色显示死细胞。
2、需要实现的功能
函数有:
a、初始化地图:开始游戏时,对地图上的细胞随机赋值为0或1。
b、绘制地图:绘制一个N*M大小的地图。
c、细胞下一状态计算:计算周围活细胞的个数,更新该细胞的生命状态。
d、主函数:运行生命游戏。
4)开发平台和技术工具
我们对:C、Java、Python三种进行了讨论,最终选择了Python语言。
因为:
1.由于参考用C语言写的生命游戏算法后,我们发现虽然C语言实现比较简单,但是对于整个地图每一个状态都需要重新回到原点开始打印,而Python使用animation模块,可以达到动态图的效果,这样效率更高,界面动态更为流畅。
2.由于我们组成员对Python和Java的编程能力都不是很熟练,在对二者基础知识进行复习后,我们一致认为Python更好理解,上手更快。
所以总结以上,我们最终选择了用Python语言,开发技术工具选择了pycharm。
5)如何结对与切换角色
a.我们用GitHub托管我们的代码,利用QQ屏幕分享功能进行结对编程。
b.一个人写代码另一个人监督,然后将写好的代码放置在GitHub上托管。
c.下一次两人互换角色,修改完善代码。
d.多次进行角色互换,直至成功实现代码功能。
6)讨论与收获
之前我们都是自己独自完成编程任务,第一次尝试结对编程,和队友共同讨论代码如何实现,我发现了很多结对编程的优点:
1.能增加我们的信心。相比于一个人编程,团队的存在会无形增加我们的自信心。让我们不再害怕不能完成编程,我们都相信共同努力一定会完成编程。
2.思路更加清晰,想法会更全面。每个人对题目有自己不同的思路,两个人一起讨论,双方提供不同的想法,然后总结出较为全面清晰的实现方法。
3.能提高编程能力,激发我们的潜能。在别人的监督下,我们会更加细心严谨,努力减少自己的错误,在别人的帮助下,发现自己未注意到的错误,提高我们的编程能力。
四、参考文献:
1.python实现生命游戏:https://blog.csdn.net/zjhysj/article/details/80542565
2.Matplotli绘图库的基础知识:https://www.runoob.com/numpy/numpy-matplotlib.html
3.Python Matplotlib简易教程: https://blog.csdn.net/Notzuonotdied/article/details/77876080
4.Matplotlib 画动态图: animation模块的使用:https://blog.csdn.net/u013180339/article/details/77002254
5.Python 字典(Dictionary):https://www.runoob.com/python/att-dictionary-values.html
五、讨论过程记录:
GitHub仓库界面:
第一次讨论记录:
第二次讨论记录:
原文地址:https://www.cnblogs.com/yqw0710/p/12542668.html