探索结对编程

时间:2024-09-16 09:51:47 计算机应用毕业论文 我要投稿
  • 相关推荐

探索结对编程


  摘要:
结对编程(Pair Programming)是极限编程(Extreme Programming)的十一个实践之一,是团队设计的基础。它是指两个开发人员共用一台,其中一个人负责具体细节,另一个人关注整体,并且这两人的角色可以随时交换。本文通过项目实践,分析结对编程的优点和不足,并优化结对编程使其更具效率。结对编程的优势在于:改进设计质量、减少程序缺陷、降低人员风险、提高技术技能和团队合作精神。
  关键词:结对编程;极限编程;代码
  Explore Pair Programming
  HOU Hai-ke, YE Jing-lou
  (Liaoning Technical University, Electronics and Information Engineering Department, Huludao 125105, China)
  Abstract: Pair programming is one of the twelve Extreme Programming's efficient experiences, it means that two programmers develop software side by side at one computer. Using an experiment, analysis the Pair Programming's merit and the insufficiency, And optimal Pair Programming causes it to have the efficiency. It presents that Pair Programming can bring economic profit, improve design quality, reduce defects, decrease staffing risk, enhance technical skills, improve team communications.
  Key words: Pair Programming; Extreme programming; Code
  
  1 引言
  
  随着时代的发展,科技的不断更新,特别是计算机的普及和用户需求的不断变化,我国软件还处在起步阶段,规模较小,传统的软件工程技术很难在中小软件公司中发挥作用,然而极限编程(Extreme Programming,简称XP)技术的出现,使中小软件公司的软件开发有了新的突破。XP是一个轻量级的、灵巧的软件开发方法,同时它也是一个非常严谨和周密的方法。
  XP中非常重要的实践是结对编程(Pair-Programming)。简单地说就是两个人坐在同一台计算机前面,使用相同的键盘和鼠标来开发同样的一个模块,一个称为驾驶者(Driver),负责代码的键入,另外一个称为领航员(Navigator),负责盯紧可能出现的错误,包括低级错误和方向性的错误。而且,当出现的一个问题对其中一个人来说,难以解决,而恰好是另外一个人的强项的时候,那么角色就会发生转换。
  
  2 结对编程的优点
  
  结队编程的价值在于,我们无法在项目的初期进行一个详细的设计,即使完成一个设计,随着需求的变化,设计也是需要频繁的改动,因此与其我们花费大量的时间和精力来维护不稳定的设计文档的一致性,不如我们简化、延迟设计,用简单的实现来满足当前的需求,而依赖重构来适应需求的变化。
  2.1 减少风险
  风险会使大多数团队停滞不前,减少风险的最佳方法是确保团队中的每个人都完全熟悉系统的所有部件以及对系统的所有更改。技术讲解和设计文档很有用,但对于大多数快节奏的项目,它们并不能很好且迅速地知识。传播知识最有效的方法是让一个知道代码的人与不知道代码的人一起解决问题。
  2.2 使团队生产效率更高
  当一个人在遇到疑难问题时很容易走入“死角”。而Pair则不同,一个人有了想法,首先要表达出来,让自己的同伴理解,经过深刻的讨论,一致认可之后才开始编写代码。一个人编写代码,另一个则在旁边思考,会为下一步的工作提出建设性的意见。发现了问题可以及时的指正。大大的提高了代码质量。
  2.3 生成更好的代码
  通过让程序员结对,确保了更多人熟悉代码以及它经历的更改。此外,两个人编写的代码总比一个人写的代码好。两个人的智慧确实胜过一个人的,对于影响整个系统的设计决策更是如此。当团队成员结对时,至少有一个人一直在复查代码。这是我听说过的最好的代码复查。
  
  3 结对编程遇到的问题
  
  结对确实能给工作带来质的飞跃,但是通过结对实践,它也会带来一些新的问题。
  3.1 由于人员的变动,来了新成员
  在这种情况下,前期确实会对其搭档产生一定的影响,但是磨刀不误砍柴工,通过结队编程,可以最快的使新成员进入状态,通过后期的高效完全可以弥补前期的消极影响。
  3.2 后面坐着的人跟不上写代码的人的思路,写代码的人要不断对其讲解
  结队编程不仅仅只是一起写代码,在写代码之前也需要一起对需求进行探讨,一起讨论设计方案,达成共识之后才再一起写测试用例,一起编码,一起测试。如果出现跟不上的情况,那么赶紧停下来,需要讨论的时候到了。
  3.3 由于每个人有不同的习惯风格,坐在后面的人不习惯写代码人的代码风格
  这正是XP另一个关键实践的必要性:代码规范。在采用XP方法后,要求所有成员编写的代码都想出自于一个人之手写的,这样才能使代码本身就是设计,方便所有成员沟通维护。通过代码规范之后,也才使XP强调的另一个关键实践“代码共同拥有”成为有效。
  结对可以使两个人精神更加集中,可扩展思路以创造更简单,更严谨,更便于修改重构的代码,所以这正应对了项目时间紧的要求。因此结对编程确实是强度非常大的一件事情,所以XP强调40小时/周的另一实践。
  
  4 结对编程的几条准则
  
  用编码规范来支持结对编程:如果两个人整天把时间浪费在争论代码风格的问题上,那么结对编程就不可能发挥它的威力。应该尝试对风格进行标准化。
  不要让结对编程变成旁观:不掌握键盘的那个人应该主动参与到编程当中,他应该分析代码,提前思考接下来的代码应该做些什么,对设计进行评估,并对如何测试代码做出计划。
  有规律地对结对人员和分配的工作任务进行轮换:如同在其他的协同开发实践一样,结对编程的好处在于能够让不同的人熟悉系统的不同部分。有规律地进行轮换有助于知识的互相转播——有些专家建议尽可能经常进行人员轮换,甚至每天进行。
  鼓励双方跟上对方的步伐:要是其中一个人相对走得太快的话,那就会大大限制了其结对搭档的作用。速度太快的人需要放慢步伐。否则这对组合应当被拆开,然后和其他人重新组合。
  避免新手组合:两个人当中至少一个有结对经历时,结对编程的效果最好。
  Pair Programming有很大的优势,是获得XP最大价值的关键。没有Pair Programming,无法实现有效的Continuous Code Review,代码质量下降;没有Pair Programming,Communication很容易弱化,进而影响Team work。然而Pair Programming是XP所有的Practices中最被争议和被认为是最难接受。
  Pair Programming是个渐进的过程,有效率的Pair Programming不是一天就能做到的。Pair Programming是一个相互学习,相互磨合的一个渐进过程。 Developers需要时间来适应这种新的开发模式。刚开始的Pair Programming很可能不比Solo Programming有更高的效率。但适应后的Pairs的开发质量,开发时间都应该比Solo Programming有大幅度的改善。因此我们需要在不断实践中克服结对的一些不足,相信到最后一定能达到一个完美的结对方式。
  
  参考文献:
  [1] 陈斐. 结对编程技术[M]. 北京:出版社,2004.
  [2] Laurie Williams,Robert Kessler,等. Pair Programming Illuminated[M]. 北京:机械工业出版社,2004.
  [3] William C. Wake. 探索极限编程XP系列丛书[M]. 北京:人民邮电出版社,2005.
  [4] Scott W Ambler. 敏捷建模—极限编程和统一过程的有效实践[M]. 北京:机械上业出版社,2003.

【探索结对编程】相关文章:

Visual C#的Excel编程03-19

ASP 3.0高级编程(一)03-18

LabVIEW与MATLAB混合编程03-19

DOS下DSP播音的编程03-03

ASP 3.0高级编程(二)01-07

JDBC数据库编程的研究03-15

JTAG口及其对Flash的在线编程03-19

AVR单片机GCC编程03-18

探索钢琴教学01-01