实验二 结对编程 第一阶段

一、实验目标:

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.能提高编程能力,激发我们的潜能。在别人的监督下,我们会更加细心严谨,努力减少自己的错误,在别人的帮助下,发现自己未注意到的错误,提高我们的编程能力。

结对编程准备工作:https://www.cnblogs.com/yqw0710/p/12499835.html

四、参考文献:

   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