交换编程技术在软件开发中的应用

时间:2022-02-28 01:26:16

交换编程技术在软件开发中的应用

摘要:针对独立编程技术和结对编程技术的不足,提出在软件开发过程中采用交换编程技术的观点,通过阐述实施交换编程技术的环境和方法,总结出在软件开发过程中应用交换编程技术的价值,最后指出交换编程技术的发展前景。

关键词:结对编程;交换编程;交换周期;迭代阶段;轮流交换

中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)22-688-02

Application of Exchange Programming Technology in Software Development

TIAN Yuan

(Department of computer,Henan Business College, Zhengzhou 450044,China)

Abstract: Be aimed at the insufficiency of independent programming technology and Pair Programming technology, bring forward that viewpoint of using the exchange programming technology in the software development, expounds the environment and the method of actualizing exchange programming technology, summarizes the value of the exchange programming technology’s applications in software development, finally points out the exchange programming’s development prospects.

Key words: Pair Programme; exchange programme; exchange cycle; Iterative stage; exchanges in turn

1 引言

在传统的软件开发过程中,通常采用两种编程技术:第一种是独立编程技术,即在软件开发过程中,将一个项目按照功能分成若干个模块,由一个开发者独立完成一个模块的需求分析、设计、编码和单元测试阶段,然后将结果再交给第二个人进行另一个模块的开发和测试,在这种编程技术中,开发人员独立进行各个模块的开发和设计,人员之间缺少交流,开发出来的产品在质量上和功能上都不够完备;第二种是结对编程技术,即在软件开发过程中,由两位编程人员共同坐在同一台计算机前,合作完成一个模块中某一个阶段的设计、编码和测试[1],在这种编程技术中,虽然加强了开发人员之间的交流,提高了代码质量,但是,却会造成人力资源的浪费,而且在项目开发团队中,如果技术人员比较少,或者开发人员频繁变动,都会对项目的进展产生较大的影响。

为了提高软件开发的质量和效率,合理利用各种资源,就必须对传统编程技术进行改革,正是在这样的背景下,国内外许多软件开发公司都开始尝试使用交换编程技术这种更高效、更合理的新技术。

2 交换编程技术简介

交换编程技术实际上是对结对编程技术的一种扩展和延续,在这种技术中,由两位或者多位程序员轮流开发同一个软件系统中同一个模块不同阶段的任务。

和结对编程技术一样,在交换编程技术中仍然需要多位程序员进行交流,共同完成某个项目阶段的任务,但是不需要两人公用一台计算机,而是采用一人一机的工作形式,由两位程序员轮流负责同一个模块中不同阶段的设计、编码和测试过程,这样就减少了时间的浪费;另外在任务分工方面,程序员分别负责不同阶段任务的完整开发,每一个阶段的设计、编码和测试过程,都是由一位程序员去执行,但是在每个项目的开发阶段或者迭代阶段,需要进行多人任务的轮流交换或者两人任务的两两交换,这样既保证了代码的质量,又提高了工作效益。

3 在软件开发过程中实施交换编程技术的环境和方法

3.1 实施环境

交换编程技术的适应性比较强,在项目的规模上没有要求,特别是对项目规模大,人员临时调动频繁的情况同样可以适用;另外,在项目开发团队的规模方面,由于在交换编程技术中,进行一次任务交换至少需要两个以上的开发人员,因此交换编程技术适用于那些人数超过两个以上的开发团队,而且在团队成员中,要求至少有一两个具有两三年以上开发经验的技术人员,这是对一般项目最基本的要求。

3.2 实施方法

在软件开发过程中应用交换编程技术,需要重点考虑交换周期的设置。交换周期一般需要根据实际项目的开发过程来设置,即根据项目迭代阶段或者开发阶段进行划分,阶段划分确定后,在一个阶段内至少进行一次任务交换。

对于一般规模的项目,建议在软件工程实施的各个迭代阶段按照如下的方式进行交换编程:

1)在软件定义过程中,市场调研和需求分析可以进行轮流交换(至少是三个以上的程序员之间相互交换所开发的内容,如:程序员A的开发内容交给程序员B,程序员B的交给程序员C,程序员C的交给程序员A)。

2)在概要设计开发中,需求分析到概要设计进行轮流交换。

3)在详细设计开发中,概要设计到详细设计进行一次轮流交换。

4)编码实施启动后,详细设计到编码的交换采用两两交换(两个程序员之间相互交换所开发的内容,仅限于两人之间),注意这个时候不再采用轮流交换[2]。

这里在编码以前全部采用轮流交换的目的是为了让更多的人了解项目进展的全部内容,有利于增加团队内的交流,使更多的人对项目所开发的内容熟悉,并能让他们提出自己的观点,也有利于使更多的人从更多的角度来研究某个系统模块所需要实现的功能和用户需要解决的实际问题,不会因为某个人的定式思维而出现理解偏差,从而造成对需求的理解不到位。

详细设计到编码的测试采用两两交换,这是因为前期需求已经基本上都稳定下来了,这时候不需要对用户需求进行更多方面的理解,只需要进行实施并进行纯粹的编码工作即可。此时轮流交换就不存在任何意义,相反只会影响开发进度。

以上交换编程的方法,是按照迭代阶段设置交换周期的方法,另外,如果以项目开发阶段设置交换周期的话,我们可以将软件生存周期的每个阶段再细分为几个小阶段,根据细分的阶段数量确定进行交换编程的人数(阶段数量的划分可以根据阶段任务的规模和阶段的重要性确定,如:对于一个普通项目的需求分析阶段,我们可以将其细分为三个阶段,分别由三个程序员轮流开发)。和按照迭代阶段设置交换周期的原因一样,在编码以前的每个阶段,尽量全部采用至少三个以上程序员轮流交换编程的方式,而在编码以后的每个阶段,包括编码阶段,只需要采用两两交换的方式就可以了。

4 交换编程技术的价值

在软件开发过程中应用交换编程技术,不仅可以节约各种资源,提高工作效率,而且也能增强代码的可读性和可维护性,保证代码的质量。具体体现如下:

1)避免人力资源的浪费

交换编程技术采用由两位以上程序员轮流负责某个阶段的任务,不会让他们在同一时间内去做同一件工作,这就节约了人力资源;而且也不用担心在软件开发过程中出现的设计或代码问题被隐藏,因为两位程序员在进行任务交换时需要交流,这样不但第二个程序员会发现第一个程序员设计所存在的问题,第一个程序员也会主动地对自己的开发过程和思路进行一次完整的重新评价,从而及时解决问题。

2)加强团队内部交流

在交换编程技术中,允许有较多的人参与某个模块的前后期分析、设计和开发过程,在项目开发的每一个阶段都可以找到两个以上的人来进行讨论,加强了团队内部的交流。

3)减少时间的浪费

在交换编程技术的任务交换过程中,时间的浪费主要体现在第二位程序员理解前一位程序员的设计思路上,但是在一般情况下,出于对项目统一规划的考虑,团队中所有成员都需要对项目的整体开发和各个阶段的任务有所熟悉,在这种情况下时间的总体耗费相对较短。

4)提高项目组稳定性

在交换编程技术中,由于一个模块需要按照阶段数量进行分工,这样就保证了一个模块至少有两个人对其十分熟悉,在后面的开发过程中,无论哪个人发生变动,随时都可以有其它人来接替工作,而不会对团队和开发进度产生较大影响,所有的任务都能够很好的延续下来。

另外,允许有较多的人参与到这个模块的前后期开发中来,系统的架构设计可以由很多人一同讨论出来,所以交换编程技术适合于没有绝对高手的团队。

5 结束语

因为交换编程技术的优势,目前国内外许多软件开发公司已经尝试应用这项新技术。将来如果条件允许,交换编程技术还可以和结对编程技术配合起来使用,这将会使得对同一个模块了解的人数达到一般交换编程的两倍人数,同时因为频繁的交流,从而更多地降低因为少数人的考虑偏差造成对用户需求理解不足等问题,工作效率会更高[3]。

参考文献:

[1] 谷秀岩.关于极限编程理论的研究[J].计算机与网络,2004(Z1):97-99.

[2] 白慧冬.交换编程―结对编程的延伸实践[J].中国软件测试时代,2006(12):80-83.

[3] 姜飞,韩峰,刘国华.基于LabWindowsCVI和VC的动态数据交换编程与实现[J].微计算机信息,2006(31):168-170.

上一篇:基于PDA无线模块的卫星通信地球站监控系统的设... 下一篇:Visual FoxPro6.0 通用制表程序