结对编程 第一阶段报告
一、实验目标:
1)体验敏捷开发中的两人合作。
2)进一步提高个人编程技巧与实践。
二 、实验内容:
1)根据以下问题描述,练习结对编程(pair programming)实践;
2)要求学生两人一组,自由组合。每组使用一台计算机,二人共同编码,完成实验要求。
3)要求在结对编程工作期间,两人的角色至少切换 4 次;
4)编程语言不限,版本不限。建议使用 Python 或 JAVA 进行编程。
三、问题描述(二选一)
1)生命游戏
生命游戏是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机,它包括一个二维矩形世界,这个世界中的每个方格居住着一个活着的或死亡的细胞。一个细胞在下一个时刻生死取决于相邻八个方格中活着的或死了的细胞的数量。如果相邻方格活着的细胞数量过多,这个细胞会因为资源匮乏而在下一个时刻死去;相反,如果周围活细胞过少,这个细胞会因太孤单而死去。
游戏在一个类似于围棋棋盘一样的,可以无限延伸的二维方格网中进行。例如,设想每个方格中都可放置一个生命细胞,生命细胞只有两种状态:“生”或“死”。图中,用黑色的方格表示该细胞为“死”, 其它颜色表示该细胞为“生” 。
游戏开始时, 每个细胞可以随机地(或给定地)被设定为“生”或“死”之一的某个状态, 然后,再根据如下生存定律计算下一代每个细胞的状态:
- 每个细胞的状态由该细胞及周围 8 个细胞上一次的状态所决定;
- 如果一个细胞周围有 3 个细胞为生,则该细胞为生,即该细胞若原先为死则转为生,若原先为生则保持不变;
- 如果一个细胞周围有 2 个细胞为生,则该细胞的生死状态保持不变;
- 在其它情况下,该细胞为死,即该细胞若原先为生则转为死,若原先为死则保持不变。
2)
开发一个自动生成小学四则运算题目的命令行 “软件”。实现 输入你要出题的个数,随机产生四则运算,然后用户回答,并且进行打分。
规则:用随机数实现100以内的加、减、乘、除运算,其中和与积不能超过100,差不为负(即须大减小),商不为小数或分数(即必须整除)。要求总计输出10个运算式,每输出一个运算式,等待输入结果,然后进行对错判断并输出。最后输出统计答对的题数与分
四、实验过程
1)查阅相关资料加深对敏捷开发和结对编程的理解
通过对老师发放的资料的阅读和网上的查阅我对敏捷开发和结对编程有了更深刻的理解。
首先敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。敏捷最大的特色是迭代式开发。
而结队编程是敏捷开发实践中的一种,Kent Beck是结对编程定义者,他的定义大致可以理解为两个人共享一套开发设备,一个叫Driver 一个叫Observer, 说白了就是一个动手写一个在旁边看着,如果遇到问题两个人一起讨论,可以扩宽思路避免思维僵化。在此之前我所做过的实验基本都是自己闭门造车,相比于结对编程的效率,在代码能力上的进步与突破不是很大,遇到问题首先想的就是搜索引擎,解决不了的就抱抱大腿,严格来说不是自己解决了问题。而结对编程中两个人合作产生的内驱力和效率是从未体验过的。在频繁交换角色的过程中,另一个人既是加油站,又是对bug的放大镜,能够相互学习,也是在想要放弃的时候鞭策自己继续下去的动力。
2)组队情况,队伍博客地址,github仓库地址,所选择的课题
- 组队情况:已经在学习通中完成组队,成员如下:队长:潘梅情; 组员:程焰
- 小组信息
- 潘梅情(https://www.cnblogs.com/womingbai/)
- 程焰(https://www.cnblogs.com/32036et/)
- 仓库(https://github.com/cyszz/my-travel-plans.git)
- 所选择的课题:生命游戏
3)查阅相关资料
在通过初步的查阅资料我了解到了,生命游戏其实是一个零玩家游戏,它包括一个二维矩形世界,这个世界中的每个方格居住着一个活着的或死了的细胞。一个细胞在下一个时刻生死取决于相邻八个方格中活着的或死了的细胞的数量。实际中,你可以设定周围活细胞的数目怎样时才适宜该细胞的生存。如果这个数目设定过低,世界中的大部分细胞会因为找不到太多的活的邻居而死去,直到整个世界都没有生命;如果这个数目设定过高,世界中又会被生命充满而没有什么变化。实际中,这个数目一般选取2或者3;这样整个生命世界才不至于太过荒凉或拥挤,而是一种动态的平衡。这样的话,游戏的规则就是:当一个方格周围有2或3个活细胞时,方格中的活细胞在下一个时刻继续存活;即使这个时刻方格中没有活细胞,在下一个时刻也会“诞生”活细胞。在这个游戏中,还可以设定一些更加复杂的规则,例如当前方格的状况不仅由父一代决定,而且还考虑祖父一代的情况。你还可以作为这个世界的上帝,随意设定某个方格细胞的死活,以观察对世界的影响。在游戏的进行中,杂乱无序的细胞会逐渐演化出各种精致、有形的结构;这些结构往往有很好的对称性,而且每一代都在变化形状。一些形状已经锁定,不会逐代变化。有时,一些已经成形的结构会因为一些无序细胞的“入侵”而被破坏。但是形状和秩序经常能从杂乱中产生出来。
4)采用开发平台和技术工具
通过小组之间的讨论与交流,最终我们选择了用python语言来进行实验