国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

構(gòu)建高效的版本管理和代碼維護(hù)機(jī)制

2012-07-05 08:42:46翟宏宇文大化徐春鳳
關(guān)鍵詞:改動(dòng)開(kāi)發(fā)人員代碼

翟宏宇,文大化,徐春鳳

(1.長(zhǎng)春理工大學(xué) 計(jì)算機(jī)科學(xué)技術(shù)學(xué)院,長(zhǎng)春 130022;2.中國(guó)科學(xué)院 長(zhǎng)春光學(xué)精密機(jī)械與物理研究所,長(zhǎng)春 130033)

項(xiàng)目開(kāi)發(fā)過(guò)程中,代碼維護(hù)是非常重要的環(huán)節(jié)。一個(gè)項(xiàng)目的開(kāi)發(fā)中需要把每個(gè)人同自己相關(guān)的功能模塊收集起來(lái),如何高效管理和維護(hù)代碼是保證項(xiàng)目順利進(jìn)行的關(guān)鍵。本論文介紹的是采用Clear Case進(jìn)行版本控制來(lái)對(duì)項(xiàng)目的所有源代碼、庫(kù)文件、文檔及發(fā)布(Release)時(shí)的安裝程序的維護(hù)。開(kāi)發(fā)人員需要每天中獲取最新版本(Get Latest Version)的源代碼,進(jìn)行開(kāi)發(fā),然后需要Check in所有當(dāng)天修改的代碼,在Check in之前要保證編譯順利通過(guò)。

開(kāi)發(fā)人員往往專注自己的模塊或者當(dāng)前工作任務(wù)中功能實(shí)現(xiàn)的部分,就會(huì)忽略改動(dòng)對(duì)別的模塊的影響。在實(shí)際工作中,尤其是集成發(fā)版本的時(shí)候,或多或少都有這種問(wèn)題發(fā)生,而且一個(gè)模塊的改動(dòng)對(duì)整個(gè)系統(tǒng)的影響往往超乎人的意料。這樣會(huì)給版本發(fā)布帶來(lái)一系列的難以想象的困難。為了避免這種情況發(fā)生,保證集成版本的有效,本論文將基于Windows Mobile的手機(jī)開(kāi)發(fā)項(xiàng)目介紹一種高效管理和代碼維護(hù)的機(jī)制。

1 版本控制管理和代碼審查

版本控制就是要及時(shí)發(fā)布最新的軟件,每個(gè)版本完成應(yīng)該完成的功能。在開(kāi)發(fā)過(guò)程中,會(huì)不斷發(fā)現(xiàn)新需求,不斷發(fā)現(xiàn)Bug(錯(cuò)誤),確保項(xiàng)目開(kāi)發(fā)的順利完成。隨著軟件系統(tǒng)的日益復(fù)雜化和用戶需求、軟件更新的頻繁化,版本控制及代碼管理逐漸成為軟件生命周期中的重要控制過(guò)程,在軟件開(kāi)發(fā)過(guò)程中扮演著越來(lái)越來(lái)重要的角色[1]。一個(gè)好的版本控制過(guò)程能覆蓋軟件開(kāi)發(fā)和維護(hù)的各個(gè)方面,同時(shí)對(duì)軟件開(kāi)過(guò)程的宏觀管理,即項(xiàng)目管理,也有重要的支持作用。良好的版本控制能使軟件開(kāi)發(fā)過(guò)程有更好的可預(yù)測(cè)性,使軟件系統(tǒng)具有可重復(fù)性。

1.1 Clear Case下的版本控制管理

本項(xiàng)目采用Clear Case的UCM模式來(lái)管理代碼。于是就產(chǎn)生了基于此模式的開(kāi)發(fā)流程,如圖1所示。開(kāi)發(fā)人員在將代碼提交到集成流后,需要做一次集成編譯,然后才能集成測(cè)試,全部都通過(guò)了之后才能提交完成。由于在Windows Mobile平臺(tái)下,驅(qū)動(dòng)的編譯需要幾個(gè)小時(shí),編譯工作將占用大量的機(jī)器資源,極大增加了開(kāi)發(fā)人員的負(fù)擔(dān)。

圖1 Clear Case開(kāi)發(fā)工作流程Fig.1 Clear case deliver work flow

采用快速提交代碼,使用若干服務(wù)器編譯,可以節(jié)省開(kāi)發(fā)人員的時(shí)間和資源。為了提高開(kāi)發(fā)人員工作效率,改進(jìn)了開(kāi)發(fā)人員的提交流程,如圖2。

圖2 改進(jìn)的開(kāi)發(fā)工作流程Fig.2 Improved deliver work flow

兩種方法的主要變化是,開(kāi)發(fā)人員在各自的開(kāi)發(fā)流編譯并測(cè)試成功后 Deliver,并直接 Complete;集成編譯工作移至專用編譯服務(wù)器上去完成,這樣就能為開(kāi)發(fā)人員節(jié)省出兩個(gè)小時(shí)的寶貴時(shí)間。這些改動(dòng)是為了能夠保證這些編譯結(jié)果的質(zhì)量,以及能及時(shí)發(fā)現(xiàn)每個(gè)人提交的代碼不會(huì)發(fā)生功能退化。

1.2 代碼變更審查

對(duì)于項(xiàng)目開(kāi)發(fā)而言,清楚每次變更的位置,變更的目的以及對(duì)其他模塊的影響,對(duì)項(xiàng)目的后續(xù)開(kāi)發(fā)以及Bug的查找都能夠得到快速的幫助,能夠提高項(xiàng)目的開(kāi)發(fā)進(jìn)度。

代碼變更審查能夠清楚知道每次變更的位置,體現(xiàn)在哪些代碼發(fā)生變更,哪些模塊發(fā)生變更和變更的目的,以及評(píng)估每次變更潛在影響[2]。體現(xiàn)在變更對(duì)整個(gè)系統(tǒng)的影響,對(duì)其它模塊的影響。此部分的主要工作是對(duì)每一次的代碼提交都與提交前的版本進(jìn)行一次比較和審查,清楚變更模塊的位置和目的。

代碼變更審查主要是保證每次新提交的集成流都是健全的,保證無(wú)編譯錯(cuò)誤,無(wú)功能回退。并在第一時(shí)間內(nèi)發(fā)現(xiàn)并定位問(wèn)題。這就需要每日構(gòu)建(DailyBuild)實(shí)時(shí)檢測(cè)程序流,一旦有新代碼提交,就會(huì)自動(dòng)更新集成流,并開(kāi)始編譯,而后進(jìn)行編譯驗(yàn)證測(cè)試(BVT)。

2 Daily Build實(shí)時(shí)代碼構(gòu)建

Daily Build就是把一個(gè)軟件項(xiàng)目的所有的最新的代碼從配置庫(kù)中取出,然后從頭進(jìn)行編譯,鏈接和運(yùn)行。可以再運(yùn)行測(cè)試包對(duì)軟件的主要功能進(jìn)行測(cè)試,發(fā)現(xiàn)并報(bào)告錯(cuò)誤的整個(gè)過(guò)程。通常由工具自動(dòng)完成[3]。Daily Build一般是在每天半夜進(jìn)行,前提是提交了更新的代碼到配置庫(kù)中。Daily Build也可稱Nightly Build。Daily Build是一個(gè)很好的機(jī)制,它可以節(jié)省大量的時(shí)間,而有能實(shí)時(shí)的檢測(cè)到代碼更新后出現(xiàn)的問(wèn)題[3,4]。Daily Build 的另一個(gè)重要功能就是驗(yàn)證軟件中各模塊關(guān)系是否正確,也可稱為“每日集成”。

DailyBuild的實(shí)現(xiàn)是利用項(xiàng)目組開(kāi)發(fā)的軟件Daybreak完成[8],對(duì)進(jìn)行中的項(xiàng)目進(jìn)行監(jiān)控,如果發(fā)現(xiàn)服務(wù)器上共享的項(xiàng)目文件有所改動(dòng),便會(huì)再次編譯,得到軟件的最新版本,并且生成測(cè)試并發(fā)Email給相關(guān)的開(kāi)發(fā)人員。

Daybreak是一套完整的從下載最新代碼,構(gòu)建,測(cè)試與一體的軟件,它實(shí)時(shí)檢測(cè)程序流,一旦有新代碼提交,就會(huì)自動(dòng)更新集成流,并開(kāi)始編譯,生成手機(jī)的 Image.raw,而后進(jìn)行 BVT 測(cè)試。

Daybreakd的主界面中設(shè)置編譯路徑和生成的日志保存存放的路徑,并設(shè)置好Build的時(shí)間,一般都是選擇在半夜進(jìn)行,這樣可以不影響開(kāi)發(fā)進(jìn)度,并在第二天及時(shí)的發(fā)現(xiàn)錯(cuò)誤。在Buid模塊主要是設(shè)定編譯的參數(shù),然后開(kāi)始編譯,如同3所示:

圖3 Build界面Fig.3 The form of build

在Download模塊完成的功能是首先將電腦和手機(jī)的通信連接上,然后將build之后生成的image.raw下載到手機(jī)中,如圖4所示:

圖4 Download界面Fig.4 The form of download

接下來(lái)進(jìn)入Test模塊中,Test模塊是保證代碼要通過(guò)WINCE的BVT測(cè)試。

3 編譯驗(yàn)證測(cè)試BVT(Build Verify Test)

3.1 BVT測(cè)試介紹

BVT主要是針對(duì)WinCE驅(qū)動(dòng)開(kāi)發(fā)的測(cè)試。在開(kāi)發(fā)時(shí)程中,一個(gè)模塊的改動(dòng)有時(shí)會(huì)對(duì)別的模塊產(chǎn)生影響。尤其是集成發(fā)版本的時(shí)候,或多或少都有這種問(wèn)題發(fā)生,而且一個(gè)模塊的改動(dòng)對(duì)整個(gè)系統(tǒng)的影響往往超乎人的意料[6]。這樣會(huì)給版本發(fā)布帶來(lái)一系列的難以想象的困難。為了避免這種情況發(fā)生,保證集成版本的有效,在提交流程中,設(shè)置了BVT這一環(huán)節(jié)。

BVT 是編譯驗(yàn)證測(cè)試(Build Verify Test),就是針對(duì)每一個(gè)版本的改動(dòng)后功能的驗(yàn)證。是一種簡(jiǎn)單、快速、確保改動(dòng)沒(méi)有造成基本功能退化的測(cè)試。它的作用有如下面的代碼:

}通過(guò)BVT把問(wèn)題攔截在了問(wèn)題最可能發(fā)生的部分。

BVT是CETK(WinCE Test Kits)諸多測(cè)試用例的子集,選取CETK中基本驅(qū)動(dòng)測(cè)試:LCD,Keypad,IR,OAL,Camera中時(shí)間比較短,單機(jī)可自動(dòng)跑的測(cè)試。BVT測(cè)試是一項(xiàng)針對(duì)Driver基本功能的測(cè)試。在驅(qū)動(dòng)開(kāi)發(fā)和系統(tǒng)集版本發(fā)布時(shí),它是一個(gè)方便驗(yàn)證功能的工具。目前選擇了15個(gè)CETK的測(cè)試用例,可以根據(jù)具體的情況,增減測(cè)試用例。測(cè)試項(xiàng)如圖5所示:

圖5 Test模塊中的BVT測(cè)試項(xiàng)Fig.5 The BVT in test model

3.2 BVT測(cè)試的執(zhí)行

當(dāng)在Daybreak中建立了某個(gè) PPC或 SP的項(xiàng)目后,選中要測(cè)試項(xiàng),手機(jī)連接上 ActiveSync,點(diǎn)擊“Start”按鈕,手機(jī)端就會(huì)進(jìn)行相應(yīng)的測(cè)試。在界面的下方的信息窗口中會(huì)顯示正在測(cè)試的項(xiàng)。測(cè)試結(jié)束后,自動(dòng)彈出測(cè)試結(jié)果的Excel表格,表格中顯示通過(guò)和失敗的測(cè)試項(xiàng)??梢愿鶕?jù)這個(gè)結(jié)果來(lái)確定是否存在功能回退的問(wèn)題。也可是使用SP_CETK(適用于單機(jī)+存儲(chǔ)卡)首先將測(cè)試所需的DLL都拷貝到TFlash卡中,然后進(jìn)行BVT測(cè)試。通過(guò)了BVT,還有一些性能測(cè)試、兼容性測(cè)試、災(zāi)難測(cè)試等需要在產(chǎn)品發(fā)布前進(jìn)行[7]。

4 結(jié)束語(yǔ)

本文介紹了在ClearCase下的版本控制管理和DailyBulid的代碼維護(hù)機(jī)制。通過(guò)Daybreak軟件的自動(dòng)執(zhí)行來(lái)完成DailyBulid,同時(shí)采用快速提交代碼,使用若干服務(wù)器編譯,大大節(jié)省了開(kāi)發(fā)人員的時(shí)間和資源。通過(guò)DailyBulid和BVT保證代碼的健壯性,使得代碼維護(hù)變得簡(jiǎn)單而且輕松的定位錯(cuò)誤,提高了整個(gè)項(xiàng)目開(kāi)發(fā)的效率,使得項(xiàng)目能夠平穩(wěn)的向前推進(jìn)。此機(jī)制已在項(xiàng)目中使用,效果顯著。Daybreak還需要不斷的完善,例如支持多平臺(tái)等,不斷的探索中讓其更好的發(fā)揮作用。

[1]Harold Kerzner.項(xiàng)目管理計(jì)劃、進(jìn)度和控制的系統(tǒng)方法[M].電子工業(yè)出版社,2010.

[2]Robert K.Wysocki.有效的項(xiàng)目管理:面向傳統(tǒng)、敏捷、極限項(xiàng)目(第5版)[M].電子工業(yè)出版社,2011.

[3]陳能技.軟件測(cè)試技術(shù)大全:測(cè)試基礎(chǔ) 流行工具 項(xiàng)目實(shí)戰(zhàn)(第二版)[M].人民郵電出版社,2011.

[4]Aditya R Mathurl.軟件測(cè)試基礎(chǔ)教程[M].機(jī)械工業(yè)出版社,2011.

[5]Steve McConnel.CODE COMPLETE,Second Edition[M].電子工業(yè)出版社,2006.

[6]傅曦,齊宇,徐駿.Windows Mobile手機(jī)應(yīng)用開(kāi)發(fā)[M].人民郵電出版社,2005.

[7]單錦輝,姜瑛,孫萍.軟件測(cè)試研究進(jìn)展[J].北京大學(xué)學(xué)報(bào):自然科學(xué)版,2005,41(1):28-31.

[8]王雅文,宮云戰(zhàn),楊朝紅.軟件測(cè)試工具綜述[J].北京化工大學(xué)學(xué)報(bào):自然科學(xué)版,2007,34(1):1-3.

[9]http://www.eefocus.com/article/11-08/93270131348-9228_2.html?sort=1111_1122_1461_0.

猜你喜歡
改動(dòng)開(kāi)發(fā)人員代碼
Semtech發(fā)布LoRa Basics 以加速物聯(lián)網(wǎng)應(yīng)用
創(chuàng)世代碼
創(chuàng)世代碼
創(chuàng)世代碼
創(chuàng)世代碼
爆炒米花(節(jié)選)
咪咪(節(jié)選)
讓W(xué)indows 10進(jìn)入開(kāi)發(fā)者模式
電腦迷(2015年12期)2015-04-29 23:22:51
后悔了?教你隱藏開(kāi)發(fā)人員選項(xiàng)
多變的臉
微山县| 三台县| 清涧县| 若羌县| 眉山市| 阿拉善左旗| 南澳县| 板桥市| 孟州市| 关岭| 呼伦贝尔市| 富源县| 罗源县| 荥经县| 康乐县| 综艺| 凤阳县| 桦南县| 张家港市| 漳平市| 东山县| 新干县| 高安市| 榆社县| 康马县| 三台县| 南陵县| 兰坪| 淮滨县| 岢岚县| 南溪县| 兰考县| 莎车县| 新巴尔虎左旗| 龙陵县| 武川县| 梅州市| 陆良县| 宜宾市| 安顺市| 五华县|