结对编程 第一阶段报告

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

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

我对于敏捷开发的理解:为应对软件开发需求的不确定性,和软件代码开发本身并不是一气呵成的。这就需要一套能够不断应对变化,驾驭变化。通过适度的计划、进化开发、提前交付与持续改进,并且鼓励快速与灵活的面对开发与变更,打到满足软件开发需求客户需求的最终目的。随着技术变革的日新月异,敏捷开发越来越成为软件开发的基本保证(价值观)。https://baike.baidu.com/item/%E6%95%8F%E6%8D%B7%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91/7108658?fr=aladdin

1.  我对于结对编程最初的理解:两位程序员并排坐在一台电脑前,面对同一个显示器,使用同一个键盘,同一个鼠标一起完成编码工作

2.通过在线学习,并且看了几个博文后,我对结对编程的了解是这样的:结对编程和传统编程模式有着很大不同,对程序员的能力也有着更高的要求,要求结对双方高度集中注意力,保持步调、思维一致。不一定需要坐在一起共用一台电脑。现在这个时代讲究灵活性强,效率高。

3.通过查阅一些资料,了解到对于结对编程有效的建议。

如下:

1.同时开发相同的代码

优秀的程序员会不断交流关于代码设计和新想法,共同致力于下一步的开发。结对编程开发人员使用两个键盘,两个鼠标,共用一个屏幕和一台电脑。开发者控制并编写代码,扮演飞行员的角色,另一位担任导航员的角色,专注于确保代码是正确的,并考虑改进应用程序的设计,遵循最佳实践。

其实也没有固定的角色分配,以半小时的节奏,角色互相交换。让两位程序员都保持动力和细心。同样,Partner也会随时变化。这将确保大家更饱满的动力。

2.根据任务将开发者分组

根据任务决定团队分组是有意义的。谈到知识和技能转化,初级和高级程序员应该共同努力,以获得最佳的学习体验。但是,如果要求代码质量,避免错误或者开发困难的任务,应该是两位高级程序员一起工作,这保证了高效率和低错误率。

如果不是把知识转移到初级阶段,那么通常确保项目合作伙伴具有平衡的专业能力。否则,合作伙伴可能会迅速进入低谷,从而抑制行动力。

合伙伙伴也要经常动动,互相适应。

3.小组会议鼓励团队精神和创造力

每天约三到五分钟的短会,所有的同事聚集在一起,交流想法,这样可以更好地激励团队。在我的团队,我们每天早上进行这些简会。

首先,我们一起吃早餐,然后我们一起来讨论当前项目的细节。有时候甚至整个团队的整行代码都会被分组讨论。共同吃早餐是一个重要的因素,整个办公室遵循相同的节奏。此外,每个员工都有机会进行互相个人接触,这对于团队合作有积极的促进。

4.与产品经理密切联系

在软件开发的早期阶段产品经理也需要参与其中,这让程序员对需求有更好的理解。比如,如果要开发数据分析应用以更好地了解客户的行为,那么程序员被证明可以直接开发更智能的应用程序。开发者的优点是可以不断地给出反馈意见,并就应用的工作方式提出新的想法。

5.测试,测试再测试

针对结对编程中的bug,开发者应该通过测试驱动开发(TDD)确保所开发的软件确实符合要求。这个过程是基于一个非常短的开发周期不断重复:开发人员首先模拟测试错误的代码,然后再开发一个足以通过测试的代码。最后,修改代码以符合标准。

结对编程时应避免使用的注意事项

1)在编程工作中分心

如果两个程序员一起工作,每个人都必须自己自律并遵守团队纪律。从邮件,社交网络或电商购物等处分心,不仅阻碍程序员自己的进步,而且阻碍其合作伙伴的进步。因此,休息和工作应该严格区分,并有明确的时间段。

2) 担心可能的错误

结对编程结合了两个人的知识来解决问题。如果开发者有一个人首先提出问题的解决方案,合作伙伴就很难开创新的局面。

所以,软件必须定期测试,对新开发的代码微调,直到一切正常。合作伙伴对其它解决方案持开放态度并且不拒绝替代想法,是必要的,也是格局之所在。

工作的建设性须始终处于关注的中心,在保护自己的观点和在错误的时间保持沉默,广泛讨论的结果可能适得其反。

3) 规律休息

结对编程既耗费精力和精力,开发人员每天工作八小时,工作非常集中,他们的行为直接影响到合作伙伴。因此应该定期休息一下,放松眼睛,也放松大脑。在我的团队,很多程序员在指定的休息时间里打乒乓球,在这段时间里对软件进行测试。

4.无声的工作

协作编程最大的好处之一就是在团队之间共享知识。与我们最好的Partner不断沟通谈话,一起互相学习和反馈,提供建议与解决方案。驾驶员和导航员相互适应,了解对方的思路。如果存在歧义或差异,则应该进行适当的调查,并一起讨论纠正偏离的方法

https://www.douban.com/group/topic/124610772/?type=collect

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

 王荡(https://www.cnblogs.com/paxifa/) 季兴元(https://www.cnblogs.com/jixingyuan/) 生命游戏 https://github.com/paxifaer/pp_project

3)针对课题查阅的资料,对课题的理解;

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

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

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

  • 每个细胞的状态由该细胞及周围 8 个细胞上一次的状态所决定;

  • 如果一个细胞周围有 3 个细胞为生,则该细胞为生,即该细胞若原先为死则转为生,若原先为生则保持不变;

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

  • 在其它情况下,该细胞为死,即该细胞若原先为生则转为死,若原先为死则保持不变。

查阅资料获取的一些规则或者是代码提示

        

1.游戏世界

游戏世界是一个char[][]二维数组,用字符*表示存在细胞,而空格表示该格子没有细胞。在控制台中输出world数据

2.nextWorld()
生命游戏的核心是在当前world数据基础上,计算出下一代的world数据。为此,需扫描当代world的每一个格子,计算其邻居的数量,以条件语句表达生命演化规则,设定新一代world的数据。

助手方法getNeighbors(int row,int col),计算指定坐标位置(x,y)或(row,col)格子邻居的数量;

cellState(int y,int x),返回指定坐标(x,y)的格子中细胞状况值,即是否存在细胞。为了方便getNeighbors调用它,返回值不是boolean而是0与1。

3.

演示程序中,二维游戏世界的大小共SIZE*SIZE个格子,每个格子的边长CELL_Size为指定值。

当前这一代的状况,由boolean[][] table描述,而取代了《5.3.5 案例:生命游戏》的char[][] world ;

 int[][] neighbors,保存每个格子的邻居数目

update ()中为绘制代码,对每一个格子按照有无生命设置颜色,并填充格子,留一个坐标单位露出背景色。

原文链接:https://blog.csdn.net/yqj2065/article/details/48223387

参考:https://www.cnblogs.com/liuhui5599/p/7497398.html

 


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

平台和技术工具选用eclipse,静态类开发。

代码审查工具:https://www.cnblogs.com/westward/p/5084308.html上述资料查到有四种静态代码审查工具,这里我选用fingbugs

如果用fingbugs需注意以下几点,这是安装时碰到的问题。

1.之前javaweb老师让我们安装低版本的jdk,造成fingsbug不显示。解决办法:安装jdk1.7以上版本

2.安装时出现An error occurred while collecting items to be installed
session context was:(profile=epp.package.jee, phase=org.eclipse.equinox.internal.p2.engine.phases.Collect, operand=, action=).
Problems downloading artifact: org.eclipse.update.feature,edu.umd.cs.findbugs.plugin.eclipse,3.0.1.20150306-5afe4d1.
MD5 hash is not as expected. Expected: 700c2058d1720a42563e1541991f3b7f and found 3973f280b94a613552621cb99ad8ff0a.

意思是hash验证不通过,非官方正式版本,MD5值与官方不一致。看不太懂,但找到了一个有效的办法解决

如下:

安装的时候,把“Contact all update sites during install to find required software”这个勾去掉,

猜你喜欢

转载自www.cnblogs.com/pxfa/p/12523988.html