蔡文婷(武昌理工学院,武汉430223)
浅谈交换编程技术在软件开发中的应用
蔡文婷
(武昌理工学院,武汉430223)
摘要:交换编程的含义非常易于理解,也比较直接,即两名或多名程序员轮流对同一软件系统进行开发,但是他们所负责的却是模块不同阶段的不同任务。交换编程方式也可以叫做交换开发,现阶段该方式早已应用到了多种软件的开发过程中。对此,本文阐述了交换编程技术应用的必要性,简要分析了交换编程技术,并介绍了交换编程技术的应用环境与流程,指出了该技术的价值。
关键词:交换编程;软件;开发
在过去较长的时间里,人们在开发软件过程中都会应用到两种编程技术,分别为独立编程技术和结对编程技术。但是前者由于开发人员间互相缺少沟通,容易造成产品质量不够高。而后者尽管实现了开发人员的充分沟通,并在一定程度上提升了代码质量,但却出现了人力资源浪费的问题。因此,对编程技术的改革也就成为了各大软件开发公司需要解决的重大课题。这时,交换编程技术凭借着自身的高效性与合理性得到了人们的关注与应用。
从整体上看,交换编程技术是结对编程技术的进一步发展与提升。这是因为这两种技术都需要多名程序人员一起达到某一模块阶段的任务。但是不同的是,交换编程技术无需两人共用同一台电脑,每个程序人员都配备了独立的电脑。这样一来,在轮流负责同一个模块不同阶段的开发过程中,软件开发公司可以极大的节约时间[1]。不仅如此,就任务分工而言,每个程序人员都负责不同阶段任务的完整开发工作,但不论是在项目的开发阶段还是在迭代阶段,都需要多人任务轮流交换或两人任务两两交换。这种方式能够有效提升代码质量,还能够从整体上提升企业的工作效益。
2.1应用环境
交换编程技术有着十分突出的适应性,而且对项目规模也未设置较高的标准,尤其是一些项目规模较大或人员临时调动频繁的情况。不仅如此,就项目开发团队规模而言,因为交换编程技术的每个任务交换都要使用到多个程序人员,所以该技术更加适应于人数较多的开发团体[2]。除此之外,就程序人员的素质而言,必须要有一到两个两三年以上开发经验的专业人员,而这一点也是交换编程技术在应用中最基础的要求。
2.2应用方法
将交换编程技术引入到软件开发中必须要制定最为科学与合理的交换周期。而交换周期的制定则是要以项目开发实际为依据,也就是按照项目迭代阶段或开发阶段作出合理的划分[3]。阶段划分完成之后,所有的阶段都必须要完成一次任务交换。
如果项目规模较小,那么在软件工程实施的迭代阶段根据以下方法完成交换编程:
(1)软件定义阶段,市场调研工作与需求分析工作可轮流交换。其中,需要注意的一点是程序员人数应保持在三个及以上,并将所要开发的部分进行交换。例如,程序人员甲的开发内容给程序人员乙,程序人员乙交给程序人员丙,程序人员丙再交给程序人员甲。
(2)概要设计阶段,不论是需求分析还是概要设计都要轮流交换。
(3)详细设计阶段,概要设计与详细设计也都需要轮流交换。
(4)编码实施启动阶段,详细设计和编码交换同样也要交换,交换方式通常选择两两交换方式。这种方式主要就是两个程序员将各自的内容给对方看,不转交给第三人。
编码之前都进行轮流交换的最终目标就是使软件开发程序人员都能够掌握项目的开发进度与情况,从而使其能够开展有效的信息交流[4]。在交流过程中,程序人员可以自由说出自己的想法,这样一来,在探讨某项目模块需实现的功能时将会有更多的意见与建议选择,避免由于单独的个人想法而导致严重的工作失误,最终保证软件的顺利开发。̓̓详细设计与编码测试都进行两两交换的原因就是前期需求早已从整体上都得到了稳定,此时就无需对用户需求再作深入的了解了,只要完成编码任务就可以。在这一过程中,轮流交换没有太大的存在价值,甚至还会延误开发工作的进行。
上述交换编程方法所依据的是以迭代阶段为交换周期的方式。除此之外,若将项目开发阶段作为交换周期,那么就可把软件生存周期的所有阶段再细分成若干个小阶段[5]。之后,再按照细分的阶段总数配置相应数量的交换编程程序人员。与以迭代阶段为交换周期相类似,编码前的所有阶段都应进行三个以上程序人员轮流交换,编码阶段及之后的各个阶段仅需进行两两交换方式即可。
交换编程技术有着多种优点,主要包括减少了人力资源的浪费、实现了程序人员的沟通以及提升了软件开发效率等。当前,交换编程技术早已凭借着这些优势引起了大量软件开发公司的关注。在未来的时间里,人们将尝试把交换编程技术与结对编程技术进行有机的结合,这样一来,参与交换编程工作的程序人员人数将比之前多一倍。不仅如此,由于沟通与交流的频繁和及时,软件开发过程中可能出现的偏差也将会得到有效降低,最终提升软件开发工作质量。
参考文献:
[1]宋彪,孙良文,杨睛.基于VB语言的用友软件常用小工具的开发[C].第十届全国会计信息化年会论文集.呼和浩特:内蒙古财经学院,2011:494-500.
[2]马亮,张刚.测试用例自动生成方法的现状及研究[J].现代电子技术,2013(06):126-127.
[3]陈继锋,沈钧毅.一种结构测试数据自动生成的框架[J].计算机工程,2012(08):6-7.
[4]夏平平,陈正君.软件测试和软件质量管理的分析和研究[J].计算机与网络,2009(03):116-118.
[5]贺平.软件类专业的工程教育研究与实践一以软件测试专业为例[J].计算机教育,2010(11):82-89.