目录 |
交换编程技术实际上是对结对编程技术的一种扩展和延续,在这种技术中,由两位或者多位程序员轮流开发同一个软件系统中同一个模块不同阶段的任务。
和结对编程技术一样,在交换编程技术中仍然需要多位程序员进行交流,共同完成某个项目阶段的任务,但是不需要两人公用一台计算机,而是采用一人一机的工作形式,由两位程序员轮流负责同一个模块中不同阶段的设计、编码和测试过程,这样就减少了时间的浪费:另外在任务分工方面,程序员分别负责不同阶段任务的完整开发,每一个阶段的设计、编码和测试过程,都是由一位程序员去执行,但是在每个项目的开发阶段或者迭代阶段,需要进行多人任务的轮流交换或者两人任务的两两交换,这样既保证了代码的质量,又提高了工作效益。
1.实施环境
交换编程技术的适应性比较强,在项目的规模上没有要求,特别是对项目规模大,人员临时调动频繁的情况同样可以适用;另外。在项目开发团队的规模方面,由于在交换编程技术中,进行一次任务交换至少需要两个以上的开发人员,因此交换编程技术适用于那些人数超过两个以上的开发团队,而且在团队成员中,要求有一两个具有两三年以上开发经验的技术人员,这是对一般项目最基本的要求。
2.实施方法
在软件开发过程中应用交换编程技术,需要重点考虑交换周期的设置。交换周期一般需要根据实际项目的开发过程来设置,即根据项目迭代阶段或者开发阶段进行划分,阶段划分确定后,在一个阶段内至少进行一次任务交换。对于一般规模的项目,建议在软件工程实施的各个迭代阶段按照如下的方式进行交换编程:
1)在软件定义过程中,市场调研和需求分析可以进行轮流交换(至少是三个以上的程序员之间相互交换所开发的内容,如:程序员A的开发内容交给程序员B,程序员B的交给程序员C,程序员C的交给程序员A)。
2)在概要设计开发中。需求分析到概要设计进行轮流交换。
3)在详细设计开发中,概要设计到详细设计进行一次轮流交换。
4)编码实施启动后,详细设计到编码的交换采用两两交换(两个程序员之间相互交换所开发的内容,仅限于两人之间),注意这个时候不再采用轮流交换。
这里在编码以前全部采用轮流交换的目的是为了让更多的人了解项目进展的全部内容,有利于增加团队内的交流,使更多的人对项目所开发的内容熟悉,并能让他们提出自己的观点,也有利于使更多的人从更多的角度来研究某个系统模块所需要实现的功能和用户需要解决的实际问题,不会因为某个人的定式思维而出现理解偏差,从而造成对需求的理解不到位。
详细设计到编码的测试采用两两交换,这是因为前期需求已经基本上都稳定下来了,这时候不需要对用户需求进行更多方面的理解,只需要进行实施并进行纯粹的编码工作即可。此时轮流交换就不存在任何意义,相反只会影响开发进度。
以上交换编程的方法,是按照迭代阶段设置交换周期的方法,另外,如果以项目开发阶段设置交换周期的话,我们可以将软件生存周期的每个阶段再细分为几个小阶段,根据细分的阶段数量确定进行交换编程的人数(阶段数量的划分可
以根据阶段任务的规模和阶段的重要性确定,如:对于一个普通项目的需求分析阶段,我们可以将其细分为三个阶段,分别由三个程序员轮流开发)。和按照迭代阶段设置交换周期的原因一样,在编码以前的每个阶段,尽量全部采用至少三个以上程序员轮流交换编程的方式,而在编码以后的每个阶段,包括编码阶段,只需要采用两两交换的方式就可以了。
在软件开发过程中应用交换编程技术,不仅可以节约各种资源,提高工作效率,而且也能增强代码的可读性和可维护性,保证代码的质量。具体体现如下:
1)避免人力资源的浪费
交换编程技术采用由两位以上程序员轮流负责某个阶段的任务,不会让他们在同一时间内去做同一件工作,这就节约了人力资源;而且也不用担心在软件开发过程中出现的设计或代码问题被隐藏,因为两位程序员在进行任务交换时需要交流,这样不但第二个程序员会发现第一个程序员设计所存在的问题,第一个程序员也会主动地对自己的开发过程和思路进行一次完整的重新评价,从而及时解决问题。
2)加强团队内部交流
在交换编程技术中,允许有较多的人参与某个模块的前后期分析、设计和开发过程,在项目开发的每一个阶段都可以找到两个以上的人来进行讨论,加强了团队内部的交流。
3)减少时间的浪费
在交换编程技术的任务交换过程中,时间的浪费主要体现在第二位程序员理解前一位程序员的设计思路上,但是在一般情况下,出于对项目统一规划的考虑,团队中所有成员都需要对项目的整体开发和各个阶段的任务有所熟悉,在这种情况下时间的总体耗费相对较短。
4)提高项目组稳定性
在交换编程技术中,由于一个模块需要按照阶段数量进行分工,这样就保证了一个模块至少有两个人对其十分熟悉,在后面的开发过程中,无论哪个人发生变动,随时都可以有其它人来接替工作,而不会对团队和开发进度产生较大影响,所有的任务都能够很好的延续下来另外,允许有较多的人参与到这个模块的前后期开发中来,系统的架构设计可以由很多人一同讨论出来,所以交换编程技术适合于没有绝对高手的团队。