实验二 远程结对编程(第一阶段)
一、实验目标:
1)体验敏捷开发中的两人合作。
2)进一步提高个人编程技巧与实践。
二 、实验内容:
1)根据以下问题描述,练习结对编程(pair programming)实践;
2)要求学生两人一组,自由组合。每组使用一台计算机,二人共同编码,完成实验要求。
3)要求在结对编程工作期间,两人的角色至少切换 4 次;
4)编程语言不限,版本不限。建议使用 Python 或 JAVA 进行编程。
三、实验过程记录:
1.查阅相关资料加深对敏捷开发和结对编程的理解
(1)敏捷开发
敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。敏捷绝非某一种特定的开发方法,它只是一种应对快速变化的需求的一种软件开发能力,敏捷本身只包含了《敏捷软件开发宣言》和《敏捷软件的十二条原则》两份文档,敏捷相信,只要符合这两份文档的开发方法,就能让开发团队拥有应对快速变化需求的能力,这样的开发方法都叫做敏捷开发方法。使用敏捷开发主要是为了做出真正满足用户需求的产品、满足不断变化的用户需求、同时满足不同层次用户的需求,今天的市场向所有的从业者提出了一个要求:拥有应对快速变化的需求的软件开发能力,而敏捷就是赋予团队应对快速变化的需求的软件开发能力的方法,而这就是敏捷流行的原因。
参考链接:https://baike.baidu.com/item/敏捷开发
(2)结对编程
结对编程是一种敏捷软件开发的方法,两个程序员在一个计算机上共同工作,是极限编程的组成部分。一个人输入代码,称作驾驶员;另一个人负责审查工作,称作观察员(或导航员),两人常互换角色。在结对编程中,观察员同时考虑工作的战略性方向,提出改进的意见,或将来可能出现的问题以便处理。它可以促进参与项目的程序员自身的提高,一对程序员工作的时候,水平较低的一方会潜移默化地受水平略高的程序员影响,学到一些新的东西,而水平高的一方同样因为不断地把自己的想法说出来而整理了自己的思路;其次,一定时间周期地打乱配对,让参与项目的人员相互转换位置,使得维护繁杂的文档变得不那么重要,大家分组打乱后,口头的交流很容易让所有人都熟悉每个模块,这样对于公司也很有好处,项目中万一有人离开,也不至于影响到整个项目;而且结对编程也使得程序员被迫提高了工作效率。
远程结对编程,也称作虚拟结对编程或分布式结对编程,是指两个程序员不在同一地点,通过协同编辑、共享桌面、或远程结对编程的IDE插件进行的结对编程。现如今因为无法到校进行实验,我们只能采取远程方法来进行结对编程实验。
参考链接:https://baike.baidu.com/item/结对编程
2.组队情况,各队博客地址,github仓库地址,所选择的课题
(1)组队情况
(2)博客地址
李宏丽:https://www.cnblogs.com/lhl2z/
张静:https://www.cnblogs.com/Incoming22/
(3)项目的github仓库地址:http://github.com/xxx-y/life-game
(4)所选择的课题:生命游戏
3.针对课题查阅的资料,对课题的理解
生命游戏是英国数学家约翰·何顿·康威在1970年发明的细胞自动机。关于它的实现:我们可以把计算机中的宇宙想象成是一堆方格子构成的封闭空间,尺寸为N的空间就有N*N个格子。而每一个格子都可以看成是一个生命体,每个生命都有生和死两种状态,如果该格子生就显示蓝色,死则显示白色。每一个格子旁边都有邻居格子存在,如果我们把3*3的9个格子构成的正方形看成一个基本单位的话,那么这个正方形中心的格子的邻居就是它旁边的8个格子。
- 如果一个细胞周围有3个细胞为生(一个细胞周围共有8个细胞),则该细胞为生(即该细胞若原先为死,则转为生,若原先为生,则保持不变);
- 如果一个细胞周围有2个细胞为生,则该细胞的生死状态保持不变;
- 在其它情况下,该细胞为死(即该细胞若原先为生,则转为死,若原先为死,则保持不变)。
参考链接:https://baike.baidu.com/item/生命游戏/2926434
4.二个人商量后,采用开发平台和技术工具
二人商量后决定采用VC++6.0来使用c语言开发此项目,使用Sublime Text3编辑器,将代码在github上进行托管,使用QQ屏幕分享来协同编写代码。
5.二人的讨论记录
两个人在决定开发平台的时候遇到了一些问题,不知道VC支不支持github的托管,后来经过商量和查找一些信息,两个人想到了解决办法
第一阶段两个人讨论了这么多,主要解决了一些基础问题,关于项目的正式开发将在下一个阶段继续进行