摘要:針對(duì)獨(dú)立編程技術(shù)和結(jié)對(duì)編程技術(shù)的不足,提出在軟件開發(fā)過程中采用交換編程技術(shù)的觀點(diǎn),通過闡述實(shí)施交換編程技術(shù)的環(huán)境和方法,總結(jié)出在軟件開發(fā)過程中應(yīng)用交換編程技術(shù)的價(jià)值,最后指出交換編程技術(shù)的發(fā)展前景。
關(guān)鍵詞:結(jié)對(duì)編程;交換編程;交換周期;迭代階段;輪流交換
中圖分類號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):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 引言
在傳統(tǒng)的軟件開發(fā)過程中,通常采用兩種編程技術(shù):第一種是獨(dú)立編程技術(shù),即在軟件開發(fā)過程中,將一個(gè)項(xiàng)目按照功能分成若干個(gè)模塊,由一個(gè)開發(fā)者獨(dú)立完成一個(gè)模塊的需求分析、設(shè)計(jì)、編碼和單元測試階段,然后將結(jié)果再交給第二個(gè)人進(jìn)行另一個(gè)模塊的開發(fā)和測試,在這種編程技術(shù)中,開發(fā)人員獨(dú)立進(jìn)行各個(gè)模塊的開發(fā)和設(shè)計(jì),人員之間缺少交流,開發(fā)出來的產(chǎn)品在質(zhì)量上和功能上都不夠完備;第二種是結(jié)對(duì)編程技術(shù),即在軟件開發(fā)過程中,由兩位編程人員共同坐在同一臺(tái)計(jì)算機(jī)前,合作完成一個(gè)模塊中某一個(gè)階段的設(shè)計(jì)、編碼和測試[1],在這種編程技術(shù)中,雖然加強(qiáng)了開發(fā)人員之間的交流,提高了代碼質(zhì)量,但是,卻會(huì)造成人力資源的浪費(fèi),而且在項(xiàng)目開發(fā)團(tuán)隊(duì)中,如果技術(shù)人員比較少,或者開發(fā)人員頻繁變動(dòng),都會(huì)對(duì)項(xiàng)目的進(jìn)展產(chǎn)生較大的影響。
為了提高軟件開發(fā)的質(zhì)量和效率,合理利用各種資源,就必須對(duì)傳統(tǒng)編程技術(shù)進(jìn)行改革,正是在這樣的背景下,國內(nèi)外許多軟件開發(fā)公司都開始嘗試使用交換編程技術(shù)這種更高效、更合理的新技術(shù)。
2 交換編程技術(shù)簡介
交換編程技術(shù)實(shí)際上是對(duì)結(jié)對(duì)編程技術(shù)的一種擴(kuò)展和延續(xù),在這種技術(shù)中,由兩位或者多位程序員輪流開發(fā)同一個(gè)軟件系統(tǒng)中同一個(gè)模塊不同階段的任務(wù)。
和結(jié)對(duì)編程技術(shù)一樣,在交換編程技術(shù)中仍然需要多位程序員進(jìn)行交流,共同完成某個(gè)項(xiàng)目階段的任務(wù),但是不需要兩人公用一臺(tái)計(jì)算機(jī),而是采用一人一機(jī)的工作形式,由兩位程序員輪流負(fù)責(zé)同一個(gè)模塊中不同階段的設(shè)計(jì)、編碼和測試過程,這樣就減少了時(shí)間的浪費(fèi);另外在任務(wù)分工方面,程序員分別負(fù)責(zé)不同階段任務(wù)的完整開發(fā),每一個(gè)階段的設(shè)計(jì)、編碼和測試過程,都是由一位程序員去執(zhí)行,但是在每個(gè)項(xiàng)目的開發(fā)階段或者迭代階段,需要進(jìn)行多人任務(wù)的輪流交換或者兩人任務(wù)的兩兩交換,這樣既保證了代碼的質(zhì)量,又提高了工作效益。
3 在軟件開發(fā)過程中實(shí)施交換編程技術(shù)的環(huán)境和方法
3.1 實(shí)施環(huán)境
交換編程技術(shù)的適應(yīng)性比較強(qiáng),在項(xiàng)目的規(guī)模上沒有要求,特別是對(duì)項(xiàng)目規(guī)模大,人員臨時(shí)調(diào)動(dòng)頻繁的情況同樣可以適用;另外,在項(xiàng)目開發(fā)團(tuán)隊(duì)的規(guī)模方面,由于在交換編程技術(shù)中,進(jìn)行一次任務(wù)交換至少需要兩個(gè)以上的開發(fā)人員,因此交換編程技術(shù)適用于那些人數(shù)超過兩個(gè)以上的開發(fā)團(tuán)隊(duì),而且在團(tuán)隊(duì)成員中,要求至少有一兩個(gè)具有兩三年以上開發(fā)經(jīng)驗(yàn)的技術(shù)人員,這是對(duì)一般項(xiàng)目最基本的要求。
3.2 實(shí)施方法
在軟件開發(fā)過程中應(yīng)用交換編程技術(shù),需要重點(diǎn)考慮交換周期的設(shè)置。交換周期一般需要根據(jù)實(shí)際項(xiàng)目的開發(fā)過程來設(shè)置,即根據(jù)項(xiàng)目迭代階段或者開發(fā)階段進(jìn)行劃分,階段劃分確定后,在一個(gè)階段內(nèi)至少進(jìn)行一次任務(wù)交換。
對(duì)于一般規(guī)模的項(xiàng)目,建議在軟件工程實(shí)施的各個(gè)迭代階段按照如下的方式進(jìn)行交換編程:
1)在軟件定義過程中,市場調(diào)研和需求分析可以進(jìn)行輪流交換(至少是三個(gè)以上的程序員之間相互交換所開發(fā)的內(nèi)容,如:程序員A的開發(fā)內(nèi)容交給程序員B,程序員B的交給程序員C,程序員C的交給程序員A)。
2)在概要設(shè)計(jì)開發(fā)中,需求分析到概要設(shè)計(jì)進(jìn)行輪流交換。
3)在詳細(xì)設(shè)計(jì)開發(fā)中,概要設(shè)計(jì)到詳細(xì)設(shè)計(jì)進(jìn)行一次輪流交換。
4)編碼實(shí)施啟動(dòng)后,詳細(xì)設(shè)計(jì)到編碼的交換采用兩兩交換(兩個(gè)程序員之間相互交換所開發(fā)的內(nèi)容,僅限于兩人之間),注意這個(gè)時(shí)候不再采用輪流交換[2]。
這里在編碼以前全部采用輪流交換的目的是為了讓更多的人了解項(xiàng)目進(jìn)展的全部內(nèi)容,有利于增加團(tuán)隊(duì)內(nèi)的交流,使更多的人對(duì)項(xiàng)目所開發(fā)的內(nèi)容熟悉,并能讓他們提出自己的觀點(diǎn),也有利于使更多的人從更多的角度來研究某個(gè)系統(tǒng)模塊所需要實(shí)現(xiàn)的功能和用戶需要解決的實(shí)際問題,不會(huì)因?yàn)槟硞€(gè)人的定式思維而出現(xiàn)理解偏差,從而造成對(duì)需求的理解不到位。
詳細(xì)設(shè)計(jì)到編碼的測試采用兩兩交換,這是因?yàn)榍捌谛枨笠呀?jīng)基本上都穩(wěn)定下來了,這時(shí)候不需要對(duì)用戶需求進(jìn)行更多方面的理解,只需要進(jìn)行實(shí)施并進(jìn)行純粹的編碼工作即可。此時(shí)輪流交換就不存在任何意義,相反只會(huì)影響開發(fā)進(jìn)度。
以上交換編程的方法,是按照迭代階段設(shè)置交換周期的方法,另外,如果以項(xiàng)目開發(fā)階段設(shè)置交換周期的話,我們可以將軟件生存周期的每個(gè)階段再細(xì)分為幾個(gè)小階段,根據(jù)細(xì)分的階段數(shù)量確定進(jìn)行交換編程的人數(shù)(階段數(shù)量的劃分可以根據(jù)階段任務(wù)的規(guī)模和階段的重要性確定,如:對(duì)于一個(gè)普通項(xiàng)目的需求分析階段,我們可以將其細(xì)分為三個(gè)階段,分別由三個(gè)程序員輪流開發(fā))。和按照迭代階段設(shè)置交換周期的原因一樣,在編碼以前的每個(gè)階段,盡量全部采用至少三個(gè)以上程序員輪流交換編程的方式,而在編碼以后的每個(gè)階段,包括編碼階段,只需要采用兩兩交換的方式就可以了。
4 交換編程技術(shù)的價(jià)值
在軟件開發(fā)過程中應(yīng)用交換編程技術(shù),不僅可以節(jié)約各種資源,提高工作效率,而且也能增強(qiáng)代碼的可讀性和可維護(hù)性,保證代碼的質(zhì)量。具體體現(xiàn)如下:
1)避免人力資源的浪費(fèi)
交換編程技術(shù)采用由兩位以上程序員輪流負(fù)責(zé)某個(gè)階段的任務(wù),不會(huì)讓他們在同一時(shí)間內(nèi)去做同一件工作,這就節(jié)約了人力資源;而且也不用擔(dān)心在軟件開發(fā)過程中出現(xiàn)的設(shè)計(jì)或代碼問題被隱藏,因?yàn)閮晌怀绦騿T在進(jìn)行任務(wù)交換時(shí)需要交流,這樣不但第二個(gè)程序員會(huì)發(fā)現(xiàn)第一個(gè)程序員設(shè)計(jì)所存在的問題,第一個(gè)程序員也會(huì)主動(dòng)地對(duì)自己的開發(fā)過程和思路進(jìn)行一次完整的重新評(píng)價(jià),從而及時(shí)解決問題。
2)加強(qiáng)團(tuán)隊(duì)內(nèi)部交流
在交換編程技術(shù)中,允許有較多的人參與某個(gè)模塊的前后期分析、設(shè)計(jì)和開發(fā)過程,在項(xiàng)目開發(fā)的每一個(gè)階段都可以找到兩個(gè)以上的人來進(jìn)行討論,加強(qiáng)了團(tuán)隊(duì)內(nèi)部的交流。
3)減少時(shí)間的浪費(fèi)
在交換編程技術(shù)的任務(wù)交換過程中,時(shí)間的浪費(fèi)主要體現(xiàn)在第二位程序員理解前一位程序員的設(shè)計(jì)思路上,但是在一般情況下,出于對(duì)項(xiàng)目統(tǒng)一規(guī)劃的考慮,團(tuán)隊(duì)中所有成員都需要對(duì)項(xiàng)目的整體開發(fā)和各個(gè)階段的任務(wù)有所熟悉,在這種情況下時(shí)間的總體耗費(fèi)相對(duì)較短。
4)提高項(xiàng)目組穩(wěn)定性
在交換編程技術(shù)中,由于一個(gè)模塊需要按照階段數(shù)量進(jìn)行分工,這樣就保證了一個(gè)模塊至少有兩個(gè)人對(duì)其十分熟悉,在后面的開發(fā)過程中,無論哪個(gè)人發(fā)生變動(dòng),隨時(shí)都可以有其它人來接替工作,而不會(huì)對(duì)團(tuán)隊(duì)和開發(fā)進(jìn)度產(chǎn)生較大影響,所有的任務(wù)都能夠很好的延續(xù)下來。
另外,允許有較多的人參與到這個(gè)模塊的前后期開發(fā)中來,系統(tǒng)的架構(gòu)設(shè)計(jì)可以由很多人一同討論出來,所以交換編程技術(shù)適合于沒有絕對(duì)高手的團(tuán)隊(duì)。
5 結(jié)束語
因?yàn)榻粨Q編程技術(shù)的優(yōu)勢,目前國內(nèi)外許多軟件開發(fā)公司已經(jīng)嘗試應(yīng)用這項(xiàng)新技術(shù)。將來如果條件允許,交換編程技術(shù)還可以和結(jié)對(duì)編程技術(shù)配合起來使用,這將會(huì)使得對(duì)同一個(gè)模塊了解的人數(shù)達(dá)到一般交換編程的兩倍人數(shù),同時(shí)因?yàn)轭l繁的交流,從而更多地降低因?yàn)樯贁?shù)人的考慮偏差造成對(duì)用戶需求理解不足等問題,工作效率會(huì)更高[3]。
參考文獻(xiàn):
[1] 谷秀巖.關(guān)于極限編程理論的研究[J].計(jì)算機(jī)與網(wǎng)絡(luò),2004(Z1):97-99.
[2] 白慧冬.交換編程—結(jié)對(duì)編程的延伸實(shí)踐[J].中國軟件測試時(shí)代,2006(12):80-83.
[3] 姜飛,韓峰,劉國華.基于LabWindowsCVI和VC的動(dòng)態(tài)數(shù)據(jù)交換編程與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2006(31):168-170.