实验二 结对编程实验
一、实验目标:
1)体验敏捷开发中的两人合作。
2)进一步提高个人编程技巧与实践。
二 、实验内容:
1)根据以下问题描述,练习结对编程(pair programming)实践;
2)要求学生两人一组,自由组合。每组使用一台计算机,二人共同编码,完成实验要求。
3)要求在结对编程工作期间,两人的角色至少切换 4 次;
4)编程语言不限,版本不限。建议使用 Python 或 JAVA 进行编程。
实验内容:
一.查阅相关资料加深对敏捷开发和结对编程的理解
敏捷开发:
敏捷开发是一种从1990年代开始逐渐引起广泛关注的新型软件开发方法,是一种能应对快速变化需求的软件开发能力。它们的具体名称、理念、过程、术语都不尽相同,相对于"非敏捷",更强调程序员团队与业务专家之间的紧密协作、面对面的沟通(认为比书面的文档更有效)、频繁交付新的软件版本、紧凑而自我组织型的团队、能够很好地适应需求变化的代码编写和团队组织方法,也更注重做为软件开发中人的作用。
敏捷软件开发描述了一套软件开发的价值和原则,在这些开发中,需求和解决方案皆通过自组织跨功能团队达成。敏捷软件开发主张适度的计划、进化开发、提前交付与持续改进,并且鼓励快速与灵活的面对开发与变更。这些原则支援许多软件开发方法的定义和持续进化。(引自百度百科)
结对编程:实施结对编程技术将给软件项目的开发工作带来好处,只是这些好处必须经过缜密的思考和计划才能真正体现出来。而另一方面,两个有经验的人可能会发现配对编程里没有什么技能的转移,但是让他们在不同的抽象层次解决同一个问题会让他们更快地找到解决方案,而且错误更少。
两个程序员具有相同的缺点和盲点的可能性很小,所以当我们采用结对编程的时候会获得一个强大的解决方案。而这个解决方案恰恰是其它软件工程方法学中所没有的。
在我们平时的编程当中,如果遇到一个非常难解决的问题(困难到对该项目产生厌烦的态度),那么你势必会希望录求帮助,无论是从信息量庞大的网上,还是从身边的技术大师那里,你都会努力去解决(前提是你有对计算机知识的热爱)。这个时候不妨采用结对编程试一下,其它的不说,可能感觉就不同。(引自百度百科)
二.组队及课题的综合概述
1.组队情况
2.github仓库地址:https://github.com/liang-xue/Life-Game
3.所选择的课题:生命游戏
规则:游戏开始时, 每个细胞可以随机地(或给定地)被设定为“生”或“死”之一的某个状态, 然后,再根据如下生存定律计算下一代每个细胞的状态: 每个细胞的状态由该细胞及周围 8 个细胞上一次的状态所决定; 如果一个细胞周围有 3 个细胞为生,则该细胞为生,即该细胞若原先为死则转为生,若原先为生则保持不变; 如果一个细胞周围有 2 个细胞为生,则该细胞的生死状态保持不变; 在其它情况下,该细胞为死,即该细胞若原先为生则转为死,若原先为死则保持不变。
三. Github相关操作:
四.开发平台和技术工具以及协同工具
运用C语言,分别采用devc及vc++开发平台进行软件的开发,运用QQ的屏幕分享进行讨论。
五.讨论过程记录:
1.对所选课题进行分析和讨论:
2.进行代码的编写:
3.运行结果:
六.实验小结:
第一次尝试结对编程,既是一个很好的锻炼机会也是一次更好的掌握git运用的机会。通过第一次的结对编程,代码的编写和操作已经不仅仅是你个人的事情了,而是需要两个人密切的配合和交流。在这里两个人的相互交流中可以更大程度的提高代码质量,写出高质量的代码。在这次实验中也遇到了许多问题,例如在fork队友的仓库时若当时只有一个分支,那么你fork过来的也只有一个分支,在队友后加的JPG分支则不会到自己的仓库中。这个问题会在接下来的结对编程中进一步讨论并解决掉。