亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

        2012-07-05 08:42:46翟宏宇文大化徐春鳳
        關(guān)鍵詞:功能

        翟宏宇,文大化,徐春鳳

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

        項(xiàng)目開發(fā)過(guò)程中,代碼維護(hù)是非常重要的環(huán)節(jié)。一個(gè)項(xiàng)目的開發(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ù)。開發(fā)人員需要每天中獲取最新版本(Get Latest Version)的源代碼,進(jìn)行開發(fā),然后需要Check in所有當(dāng)天修改的代碼,在Check in之前要保證編譯順利通過(guò)。

        開發(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ī)開發(fā)項(xiàng)目介紹一種高效管理和代碼維護(hù)的機(jī)制。

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

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

        1.1 Clear Case下的版本控制管理

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

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

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

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

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

        1.2 代碼變更審查

        對(duì)于項(xiàng)目開發(fā)而言,清楚每次變更的位置,變更的目的以及對(duì)其他模塊的影響,對(duì)項(xiàng)目的后續(xù)開發(fā)以及Bug的查找都能夠得到快速的幫助,能夠提高項(xiàng)目的開發(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)更新集成流,并開始編譯,而后進(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)目組開發(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)的開發(fā)人員。

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

        Daybreakd的主界面中設(shè)置編譯路徑和生成的日志保存存放的路徑,并設(shè)置好Build的時(shí)間,一般都是選擇在半夜進(jìn)行,這樣可以不影響開發(fā)進(jìn)度,并在第二天及時(shí)的發(fā)現(xiàn)錯(cuò)誤。在Buid模塊主要是設(shè)定編譯的參數(shù),然后開始編譯,如同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)開發(fā)的測(cè)試。在開發(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)開發(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é)省了開發(fā)人員的時(shí)間和資源。通過(guò)DailyBulid和BVT保證代碼的健壯性,使得代碼維護(hù)變得簡(jiǎn)單而且輕松的定位錯(cuò)誤,提高了整個(gè)項(xiàng)目開發(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)用開發(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.

        猜你喜歡
        功能
        拆解復(fù)雜功能
        鐘表(2023年5期)2023-10-27 04:20:44
        也談詩(shī)的“功能”
        基層弄虛作假的“新功能取向”
        深刻理解功能關(guān)系
        鉗把功能創(chuàng)新實(shí)踐應(yīng)用
        關(guān)于非首都功能疏解的幾點(diǎn)思考
        基于PMC窗口功能實(shí)現(xiàn)設(shè)備同步刷刀功能
        懷孕了,凝血功能怎么變?
        媽媽寶寶(2017年2期)2017-02-21 01:21:24
        “簡(jiǎn)直”和“幾乎”的表達(dá)功能
        中西醫(yī)結(jié)合治療甲狀腺功能亢進(jìn)癥31例
        亚洲国产一区久久yourpan| 成人免费看片又大又黄| 97久久久久人妻精品专区| 国产呦系列视频网站在线观看 | 欧美人牲交| 天美麻花果冻视频大全英文版| 69堂在线无码视频2020| 精品国产亚洲一区二区三区四区| 国产精品亚洲色婷婷99久久精品| 亚洲国产精品久久亚洲精品| 国产精品av在线一区二区三区| 亚洲国产91精品一区二区| 国产一精品一av一免费爽爽| 国产无遮挡a片又黄又爽| 官网A级毛片| 蜜桃网站免费在线观看视频| 免费观看18禁无遮挡真人网站| 亚洲国产高清在线观看视频| 国产黄色精品高潮播放| 亚洲精品中文字幕视频色| 日韩丰满少妇无码内射| 国产最新在线视频| 久久熟女精品—区二区蜜臀| 亚洲成av人片在www鸭子| 无码人妻丰满熟妇区五十路百度| 日本高清不在线一区二区色| 日日高潮夜夜爽高清视频| 射精专区一区二区朝鲜 | 亚洲综合网站精品一区二区| 自拍偷拍韩国三级视频| 少妇精品无码一区二区三区 | 96精品在线| 亚洲av综合色区久久精品| 免费在线黄色电影| 国产又黄又猛又粗又爽的a片动漫| 日本一区免费喷水| 国产自拍成人免费视频| 国产免费av片在线播放 | 无码专区久久综合久中文字幕| 国产一级r片内射免费视频| 丝袜美腿国产一区精品|