实验二结对编程 第一阶段

实验二结对编程 第一阶段

一、实验目标:

1)体验敏捷开发中的两人合作。

2)进一步提高个人编程技巧与实践。

二 、实验内容:

1)根据以下问题描述,练习结对编程(pair programming)实践;

2)要求学生两人一组,自由组合。每组使用一台计算机,二人共同编码,完成实验要求。

3)要求在结对编程工作期间,两人的角色至少切换 4 次;

4)编程语言不限,版本不限。建议使用 Python 或 JAVA 进行编程。

 

三、问题描述(二选一)

1)生命游戏

    生命游戏是英国数学家约翰.何顿.康威在1970年发明的细胞自动机,它包括一个二维矩形世界,这个世界中的每个方格居住着一个活着的或死亡的细胞。一个细胞在下一个时刻生死取决于相邻八个方格中活着的或死了的细胞的数量。如果相邻方格活着的细胞数量过多,这个细胞会因为资源匮乏而在下一个时刻死去;相反,如果周围活细胞过少,这个细胞会因太孤单而死去。

    游戏在一个类似于围棋棋盘一样的,可以无限延伸的二维方格网中进行。例如,设想每个方格中都可放置一个生命细胞,生命细胞只有两种状态:"生"或"死"。图中,用黑色的方格表示该细胞为"死", 其它颜色表示该细胞为"生" 。

    游戏开始时, 每个细胞可以随机地(或给定地)被设定为"生"或"死"之一的某个状态, 然后,再根据如下生存定律计算下一代每个细胞的状态:

  • 每个细胞的状态由该细胞及周围 8 个细胞上一次的状态所决定;
  • 如果一个细胞周围有 3 个细胞为生,则该细胞为生,即该细胞若原先为死则转为生,若原先为生则保持不变;
  • 如果一个细胞周围有 2 个细胞为生,则该细胞的生死状态保持不变;
  • 在其它情况下,该细胞为死,即该细胞若原先为生则转为死,若原先为死则保持不变。

     

第一阶段开发

(1)查阅相关资料加深对敏捷开发和结对编程的理解;

敏捷软件开发(英语:Agile software development),又称敏捷开发,是一种从1990年代开始逐渐引起广泛关注的一些新型软件开发方法,是一种应对快速变化的需求的一种软件开发能力。它们的具体名称、理念、过程、术语都不尽相同,相对于"非敏捷",更强调程序员团队与业务专家之间的紧密协作、面对面的沟通(认为比书面的文档更有效)、频繁交付新的软件版本、紧凑而自我组织型的团队、能够很好地适应需求变化的代码编写和团队组织方法,也更注重软件开发过程中人的作用。

敏捷软件开发(或称快速程序开发RAD)描述了一套软件开发的价值和原则,在这些开发中,需求和解决方案皆通过自组织跨功能团队达成。敏捷软件开发主张适度的项目、进化开发、提前交付与持续改进,并且鼓励快速与灵活的面对开发与变更。这些原则支持许多软件开发方法的定义和持续进化。

https://zh.wikipedia.org/wiki/%E6%95%8F%E6%8D%B7%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%9
结对编程(英语:Pair programming)是一种敏捷软件开发的方法,两个程序员在一个计算机上共同工作。一个人输入代码,而另一个人审查他输入的每一行代码。输入代码的人称作驾驶员,审查代码的人称作观察员(或导航员)。两个程序员经常互换角色。

在结对编程中,观察员同时考虑工作的战略性方向,提出改进的意见,或将来可能出现的问题以便处理。这样使得驾驶者可以集中全部注意力在完成当前任务的"战术"方面。观察员当作安全网和指南。结对编程对开发程序有很多好处。比如增加纪律性,写出更好的代码等。

https://zh.wikipedia.org/wiki/%E7%BB%93%E5%AF%B9%E7%BC%96%E7%A8%8B

本人理解:软件的开发是一个长期的过程,同时需要一个完整的团队,应对开发过程中的各种变化问题。敏捷不只是快,更是规避风险,敏捷开发也是如此。当开发人员拥有这种开发能力可以应对快速变化的需求,不断提高开发人员的快速灵活的应对能力。结对编程是对团队合作能力的检验,通过两人一组的协作开发,不断地发现和解决问题,提升个人的团队合作能力。

(2)组队情况,各队博客地址,github仓库地址,所选择的课题;

队伍成员:郭帆(https://www.cnblogs.com/ziyanxingchen/)

徐思宇(https://www.cnblogs.com/Dxsy/)

仓库:https://github.com/ziyanxingchen/Game-of-Life

课题:生命游戏
(3)针对课题查阅的资料,对课题的理解;

生命游戏:每个细胞有两种状态-存活或死亡,每个细胞与以自身为中心的周围八格细胞产生互动,生死状态受其自身与以自身为中心的周围八格细胞的上一状态影响。规则分为以下几种情况。

 其周围有3个细胞为生,则该细胞为生(即该细胞若原先为死,则转为生,若原先为生,则保持不变) 。

周围有2个细胞为生,则该细胞的生死状态保持不变;

其它情况该细胞为死(即该细胞若原先为生,则转为死,若原先为死,则保持不变)周围细胞过少无法将其转换,过多竞争资源亦无法存活。

根据以上规则在设定周围活细胞的数目时怎样才适宜该细胞的生存。如果这个数目设定过低,世界中的大部分细胞会因为找不到太多的活的邻居而死去,直到整个世界都没有生命;如果这个数目设定过高,世界中又会被生命充满而没有什么变化。实际中,这个数目一般选取2或者3;这样整个生命世界才不至于太过荒凉或拥挤,而是一种动态的平衡。

在游戏的进行中,杂乱无序的细胞会逐渐演化出各种精致、有形的结构;这些结构往往有很好的对称性,而且每一代都在变化形状。一些形状已经锁定,不会逐代变化。有时,一些已经成形的结构会因为一些无序细胞的"入侵"而被破坏。但是形状和秩序经常能从杂乱中产生出来。

(4)二个人商量后,采用开发平台和技术工具

进过讨论本组决定使用Java语言编写生命游戏,以eclipse作为开发平台,在github上进行代码的托管。在开发过程中使用QQ进行屏幕共享,讨论问题、协作编程。
(5)其他,如二人讨论的记录

通过讨论我们完成了组队,并创建了托管代码的远程仓库。对所选课题有了深入的理解和认识,确定了代码开发的语言及平台,初步尝试了远程结对编程。

猜你喜欢

转载自www.cnblogs.com/Dxsy/p/12538975.html