999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

大型軟件中的QF快速集成機(jī)制及自動(dòng)選擇算法

2022-11-07 10:49:06張仰森
關(guān)鍵詞:產(chǎn)品

向 尕 張仰森

(北京信息科技大學(xué) 北京 100192)

0 引 言

大型軟件具有開(kāi)發(fā)人員眾多、軟件規(guī)模大、復(fù)雜度高、模塊多、補(bǔ)丁多、部分補(bǔ)丁依賴具體的硬件資源及軟件配置參數(shù)等特點(diǎn)。比如電信領(lǐng)域,其中某一個(gè)網(wǎng)元的軟件通常由數(shù)十、數(shù)百的工程師分模塊來(lái)開(kāi)發(fā)完成,軟件的規(guī)模和復(fù)雜度都較高。軟件進(jìn)行質(zhì)量的測(cè)試,是對(duì)軟件質(zhì)量的保障的十分重要的方式[1]。在大型軟件產(chǎn)品發(fā)布交付之前的集成和驗(yàn)證階段,會(huì)發(fā)現(xiàn)一些在前期單元測(cè)試和模塊功能測(cè)試中無(wú)法發(fā)現(xiàn)的問(wèn)題。為了修復(fù)這些問(wèn)題,各個(gè)模塊通常會(huì)提供快速補(bǔ)丁(Quick Fix,QF)。與此同時(shí),這個(gè)階段通常非常接近產(chǎn)品的交付時(shí)間點(diǎn),目前為了縮短產(chǎn)品的交付周期,通常給系統(tǒng)集成和驗(yàn)證的時(shí)間很短,同時(shí)對(duì)按期交付的時(shí)間要求非常嚴(yán)格。因此,在大型軟件開(kāi)發(fā)中靠近交付時(shí)間點(diǎn)的集成驗(yàn)證階段,快速集成QF,并且保證產(chǎn)品質(zhì)量穩(wěn)定、保證按期交付成為一個(gè)需要解決的重要問(wèn)題。如果要多集成QF,則有可能延期交付。如果優(yōu)先按時(shí)交付,則有可能無(wú)法集成所有的QF。

要將這些QF集成到產(chǎn)品中,傳統(tǒng)的方法有三種:

(1) 在發(fā)布的產(chǎn)品中不包括這些QF,優(yōu)先保證交付時(shí)間,等待后續(xù)發(fā)布的補(bǔ)丁包(Patch)來(lái)集成,這樣的缺點(diǎn)顯而易見(jiàn),QF不能被迅速地集成到即將發(fā)布的產(chǎn)品中,無(wú)法保證提高產(chǎn)品的質(zhì)量。

(2) 將這些QF加到產(chǎn)品發(fā)布中,重新編譯軟件模塊,這樣做的問(wèn)題是有可能延遲交付時(shí)間、需要重新運(yùn)行已完成的測(cè)試用例,更為嚴(yán)重的是,有可能引入新的問(wèn)題,影響產(chǎn)品質(zhì)量的穩(wěn)定性。

(3) 提供文檔,讓終端用戶手動(dòng)安裝QF,手動(dòng)檢查QF安裝的日志文件,這無(wú)疑增加了用戶安裝的復(fù)雜度,增加了安裝的時(shí)間,特別是在QF數(shù)目巨大的時(shí)候,這樣將多耗費(fèi)用戶大量的時(shí)間,降低產(chǎn)品的質(zhì)量形象。在文獻(xiàn)[2]中,介紹了補(bǔ)丁分發(fā)管理系統(tǒng)來(lái)幫助用戶選擇和安裝合適的補(bǔ)丁包。

因此,尋找快速的QF集成方法變得非常重要。有了快速的QF集成方法,即使在非常接近產(chǎn)品發(fā)布的時(shí)間點(diǎn),仍然可以快速集成QF,從而既保證按期交付,又能提高產(chǎn)品軟件質(zhì)量。

1 QF快速集成機(jī)制

1.1 持續(xù)集成

眾所周知,隨著代碼量的劇增,軟件的復(fù)雜度隨之增加,軟件集成變得很困難。為了快速解決集成中的問(wèn)題,保證每個(gè)軟件模塊能快速地被集成,持續(xù)集成的概念被提出并推廣[3-6]。持續(xù)集成是一種敏捷開(kāi)發(fā)的實(shí)踐[7]。文獻(xiàn)[8]討論了持續(xù)集成中考慮測(cè)試用例合理執(zhí)行順序,以提高發(fā)現(xiàn)問(wèn)題的效率,節(jié)省時(shí)間。文獻(xiàn)[9]在持續(xù)集成中同時(shí)考慮到功能性測(cè)試和非功能性測(cè)試。文獻(xiàn)[10]提到Travis CI系統(tǒng)的某些特性功能被誤用。持續(xù)集成的主要目的是盡早地集成代碼,文獻(xiàn)[11]描述了特定領(lǐng)域的具體應(yīng)用。盡早地、經(jīng)常性地集成,能有效地提高軟件質(zhì)量,降低風(fēng)險(xiǎn)。這樣能盡早發(fā)現(xiàn)問(wèn)題,避免項(xiàng)目提交的失敗和延遲[12-13]。另隨著信息化應(yīng)用水平日益提高,為用戶提供及時(shí)、靈活的更新已是日益迫切的需求[4,13-14]。

通常而言,持續(xù)集成主要應(yīng)用于開(kāi)發(fā)階段。主要包括以下關(guān)鍵點(diǎn):

(1) 每日編譯一次代碼,這樣能將最新的代碼包括在軟件包中。

(2) 增加自動(dòng)測(cè)試,能快速驗(yàn)證基本功能和新代碼。

(3) 在持續(xù)集成中,能盡早發(fā)現(xiàn)集成的問(wèn)題。這樣,軟件工程師可以將主要精力專注于修復(fù)軟件問(wèn)題和開(kāi)發(fā)新代碼;而不需要將主要精力放在集成及發(fā)現(xiàn)集成中出現(xiàn)的問(wèn)題。

1.2 基于QF模式的持續(xù)集成及測(cè)試

但是上述持續(xù)集成的思想用于交付之前的系統(tǒng)集成和驗(yàn)證階段,仍不能滿足所有需求。自動(dòng)測(cè)試可以覆蓋基本功能測(cè)試,但是對(duì)于一些組合的場(chǎng)景、復(fù)雜的場(chǎng)景,以電信領(lǐng)域的軟件產(chǎn)品為例,針對(duì)特定運(yùn)營(yíng)商某些場(chǎng)景的軟件更新和修改的測(cè)試,或者不適合自動(dòng)測(cè)試場(chǎng)景的測(cè)試用例,仍然需要手動(dòng)測(cè)試,如果全部模塊重新編譯,理論上說(shuō)為了保證軟件產(chǎn)品的質(zhì)量,所有手動(dòng)測(cè)試都需要重新驗(yàn)證。這在時(shí)間和人力成本上幾乎不可接受。因此在實(shí)際中,通常會(huì)選擇小部分有代表性的測(cè)試用例,重新運(yùn)行。這樣做的問(wèn)題在于以個(gè)例代替整體,存在質(zhì)量風(fēng)險(xiǎn)。因此本文提出一種基于QF模式的持續(xù)集成及測(cè)試機(jī)制。在開(kāi)發(fā)通信產(chǎn)品的過(guò)程中,整個(gè)集成和測(cè)試階段(甚至在非??拷浖a(chǎn)品發(fā)布的時(shí)間點(diǎn)),一旦發(fā)現(xiàn)軟件問(wèn)題,由相應(yīng)模塊提供QF,并被快速集成,然后部署在運(yùn)行的機(jī)器上,以便未進(jìn)行完的測(cè)試用例繼續(xù)在此機(jī)器上運(yùn)行,并驗(yàn)證此QF修復(fù)的問(wèn)題。與開(kāi)發(fā)階段不同,不采用整個(gè)模塊重新編譯,避免重新安裝部署,可以減少反復(fù)重新安裝的時(shí)間,減少整個(gè)模塊替換引入新軟件問(wèn)題的潛在風(fēng)險(xiǎn)。在這個(gè)過(guò)程中,我們需要權(quán)衡并盡量找到最優(yōu)的平衡點(diǎn):在保證產(chǎn)品總體質(zhì)量的同時(shí),盡可能多地集成QF。要做到這一點(diǎn),需要盡量地讓QF的停止提交時(shí)間靠近產(chǎn)品最后發(fā)布的時(shí)間,與此同時(shí),要嚴(yán)格地保證產(chǎn)品質(zhì)量。不能因?yàn)榧闪四骋粋€(gè)QF,導(dǎo)致產(chǎn)品質(zhì)量的嚴(yán)重衰退。這樣,才可以實(shí)現(xiàn)平穩(wěn)迅速地集成更多的QF的目標(biāo)(如圖1和圖2所示),既能大力改善產(chǎn)品質(zhì)量,又能避免延長(zhǎng)測(cè)試時(shí)間,避免延期發(fā)布產(chǎn)品。

T1:產(chǎn)品開(kāi)發(fā)階段 T2:產(chǎn)品的系統(tǒng)集成及驗(yàn)證階段

T3:Patch(QFs)集成及測(cè)試階段 D1:產(chǎn)品交付時(shí)間點(diǎn)

D2:Patch交付時(shí)間點(diǎn)

對(duì)比以上圖1和圖2,我們可以清楚地看到,相比較傳統(tǒng)的集成測(cè)試模式,基于QF模式的持續(xù)集成能減少T3時(shí)間段的Patch集成測(cè)試工作,提高在D1點(diǎn)交付的產(chǎn)品質(zhì)量。

綜上,基于QF模式的持續(xù)集成方式具有如下優(yōu)點(diǎn):

(1) 在發(fā)布產(chǎn)品之前,能盡快地集成所有已有的QF。這能夠顯著地提高產(chǎn)品質(zhì)量。

(2) 所有子模塊軟件包不需重新編譯交付,也不需要重新部署安裝,節(jié)省大量集成與驗(yàn)證時(shí)間。

(3) 已經(jīng)驗(yàn)證過(guò)的測(cè)試用例無(wú)須重新測(cè)試,這樣能保證軟件包質(zhì)量沒(méi)有衰退。在剩下的測(cè)試中主要關(guān)注未測(cè)試過(guò)的測(cè)試用例,以及QF所提供的軟件修復(fù)。

2 QF自動(dòng)選擇算法

基于前文所述的基于QF的持續(xù)集成模式,我們進(jìn)一步研究QF自動(dòng)選擇算法。

2.1 安裝過(guò)程分析

大型軟件的安裝過(guò)程相對(duì)比較復(fù)雜,部署步驟多,而且與具體的硬件資源、軟件模塊等配置相關(guān)。我們按照產(chǎn)品的安裝過(guò)程,將所有安裝過(guò)程分為n個(gè)步驟,同時(shí)將所有QF分為n+1個(gè)集合(P0,P1,…,Pn-1)。如圖3所示。

根據(jù)安裝過(guò)程,將QF集合分為n個(gè)子集合。

All_QF={P0,P1,…,Pn-1}

其中:

P0={fx,fx+1,…,fx+l}

P1={fy,fy+1,…,fy+m}

?

Pn-1={fz,fz+1,…,fz+k}

式中:

(x,y,z,l,m,n,k)∈N

fi(i∈(x,x+1,…,x+l,y,y+1,…,y+m,z,z+1,…,z+k)

fi是來(lái)自不同的模塊QF。為方便問(wèn)題討論,設(shè)每個(gè)fi的安裝需要約4條命令完成(包括拷貝、檢查cksum值、解壓、安裝等)。如圖4所示。將QF按照集合All_QF={P0,P1,…,Pn-1}來(lái)安裝,可以減少命令單獨(dú)執(zhí)行。所有QF的安裝簡(jiǎn)化為n條命令。

在前面所述的n個(gè)固定的點(diǎn),通過(guò)輸入固定的n條命令,在P0,P1,…,Pn-1集合中所包含的所有QF將被自動(dòng)安裝好。這樣多個(gè)QF的安裝本來(lái)需要[(l+1)+(m+1)+…+(k+1)]×4條命令,縮減為n個(gè)固定的命令(n的大小取決于安裝步驟數(shù)目大小)。顯而易見(jiàn),當(dāng)n較小,而QF數(shù)目([(l+1)+(m+1)+…+(k+1)]×4)較大時(shí),此方法的優(yōu)勢(shì)更為明顯。這n條命令可以被集成到正常安裝和升級(jí)的步驟中,如果某兩個(gè)步驟之間,沒(méi)有QF要被安裝,則可以使Px為空。這樣做的好處是接口統(tǒng)一。

2.2 算法步驟

算法目標(biāo):考慮到每個(gè)QF適用于不同的軟件模塊、安裝的特定步驟、平臺(tái)、服務(wù)器類型和操作系統(tǒng)類型等,在安裝每個(gè)QF時(shí),自動(dòng)檢測(cè)以上信息,自動(dòng)選擇并部署所需的QF,無(wú)須用戶做出人工判斷。

算法輸入:

1) 全體QF集合:

{fx,fx+1,…,fx+l,fy,fy+1,…,fy+m,…,fz,fz+1,…,fz+k},

其中:

(x,y,z,l,m,n,k)∈N

fi(i∈(x,x+1,…,x+l,y,y+1,…,y+m,z,z+1,…,z+k)

2) 每個(gè)QF都有一組屬性標(biāo)簽:

fiAttribute=[software_module,apply_phase,

servertype,OStype,…]

算法輸出:

All_QF={P0,P1,…,Pn-1}

其中:

P0={fx,fx+1,…,fx+l}

P1={fy,fy+1,…,fy+m}

?

Pn-1={fz,fz+1,…,fz+k}

算法描述:

1) 輸入全體QF集合:{fx,fx+1,…,fx+l,fy,fy+1,…,fy+m,…,fz,fz+1,…,fz+k}。

2) 輸入每個(gè)QF集合都有一組屬性標(biāo)簽fiAttribute=[software_module,apply_phase,servertype,OStype]。

3) 獲取目標(biāo)平臺(tái)的具體硬件資源、軟件配置、服務(wù)器類型、操作系統(tǒng)類型等信息。

4) for each QF:

將屬性標(biāo)簽與獲取的信息相匹配。

如果匹配成功:

QF放入合適的子集合Pii∈{0,1,…,n-1}。

否則:

跳過(guò)該QF,并給出提示信息,此QF未能分入合適的子集合。

5) QF遍歷完成,結(jié)束退出。

算法復(fù)雜度約為O(QF_number),其中QF_number為QF的數(shù)目,因此算法復(fù)雜度接近于多項(xiàng)式。在現(xiàn)有的硬件資源條件下,運(yùn)行速度很快。

另考慮到日志內(nèi)容繁多,為減少人工檢查安裝日志的時(shí)間,支持自動(dòng)檢查安裝日志,可以對(duì)每一個(gè)QF,進(jìn)行特定關(guān)鍵字搜索,以確定所有QF安裝成功,無(wú)報(bào)錯(cuò)信息。

綜上,這種QF的自動(dòng)安裝機(jī)制及自動(dòng)選擇算法,具有以下優(yōu)點(diǎn):

(1) 所有的QF可以自動(dòng)安裝,不需要用戶在安裝時(shí)手動(dòng)輸入命令。

(2) 根據(jù)服務(wù)器配置類型、配置參數(shù)等具體信息,支持自動(dòng)選擇適用的QF,并自動(dòng)地安裝。

(3) QF安裝的日志,能自動(dòng)檢查,發(fā)現(xiàn)安裝失敗的QF,無(wú)須人工檢查。

(4) 合適的體系結(jié)構(gòu),讓QF的集成簡(jiǎn)單方便,無(wú)須太多編碼工作。

(5) 大大減少了QF的安裝時(shí)間。

3 系統(tǒng)設(shè)計(jì)及測(cè)試結(jié)果分析

3.1 系統(tǒng)設(shè)計(jì)及實(shí)現(xiàn)

基于前文提出的QF快速集成機(jī)制及自動(dòng)選擇算法,我們?cè)O(shè)計(jì)實(shí)現(xiàn)了如圖5所示系統(tǒng)結(jié)構(gòu)。

(1) 軟件模塊1-n,是大型軟件產(chǎn)品的軟件模塊,提供QF。

(2) QF快速集成模塊:負(fù)責(zé)將QF集成。提供統(tǒng)一的文件來(lái)處理每個(gè)QF。設(shè)計(jì)統(tǒng)一的QF處理結(jié)構(gòu),以及針對(duì)每個(gè)QF的配置文件。這樣能將集成新QF的工作量減到最少。每次集成無(wú)須新加代碼,只需要將QF內(nèi)容及相應(yīng)的配置文件定義好,拷貝至指定目錄下即可。

(3) QF庫(kù):用于存放所有的QF和每個(gè)QF的配置文件,配置文件用于程序根據(jù)具體的服務(wù)器配置等,自動(dòng)選擇需要安裝使用的QF。每個(gè)QF按照如下模板提供QF的屬性標(biāo)簽,作為自動(dòng)選擇算法模塊的輸入:

softwaremodule=; applyphase=; servertype=;OStype=;…

流程如圖6所示。

(4) QF安裝自動(dòng)檢測(cè)模塊:對(duì)一個(gè)QF,可以自動(dòng)檢測(cè)安裝是否成功,日志是否無(wú)錯(cuò)誤和異常。

3.2 測(cè)試結(jié)果及分析

我們通過(guò)部署8個(gè)版本的軟件包,收取相關(guān)的數(shù)據(jù)。我們分別收集了部署本文機(jī)制方法和沒(méi)有部署的各項(xiàng)數(shù)據(jù),進(jìn)行比較和分析。為方便討論,按照QF數(shù)目從小到大的順序,對(duì)軟件版本進(jìn)行了重新排序。

1) 安裝部署QF時(shí)間顯著減少。為了客觀計(jì)算減少的時(shí)間,忽略掉其他影響安裝的時(shí)間,我們?cè)谑占瘮?shù)據(jù)時(shí),僅計(jì)算用戶或系統(tǒng)調(diào)用命令所耗費(fèi)的時(shí)間。

如圖7所示。我們可以看到,引入基于QF模式的集成機(jī)制及自動(dòng)選擇算法后,QF安裝的時(shí)間減少了10~142分鐘;而且QF數(shù)量越多,節(jié)省的時(shí)間就越多。當(dāng)有多套系統(tǒng)需要部署和升級(jí)的時(shí)候,節(jié)省的時(shí)間成倍增長(zhǎng)。

2) 檢查安裝日志的時(shí)間顯著減少。我們收集了檢查安裝日志的時(shí)間并進(jìn)行對(duì)比。以前用戶需要一個(gè)一個(gè)檢查QF安裝日志,以便確定每個(gè)QF安裝成功。引入日志自動(dòng)檢測(cè)機(jī)制后,可以由系統(tǒng)對(duì)安裝日志進(jìn)行自動(dòng)檢查,確保QF安裝正確,用戶只需要檢查日志自動(dòng)檢查的總結(jié)日志??偨Y(jié)日志非常簡(jiǎn)單,只包括對(duì)每一個(gè)QF安裝結(jié)果的說(shuō)明,成功或失敗。因此能減少大量手動(dòng)檢查日志的時(shí)間。如圖8所示。

3) 產(chǎn)品質(zhì)量提升。如圖9所示,橫坐標(biāo)表示每個(gè)Load,縱坐標(biāo)表示對(duì)應(yīng)于每個(gè)Load集成的QF數(shù)目。顯而易見(jiàn),集成的QF數(shù)目越多,修復(fù)的軟件問(wèn)題越多,產(chǎn)品質(zhì)量也更好。

4 結(jié) 語(yǔ)

本文提出一種基于QF的快速集成機(jī)制,并設(shè)計(jì)實(shí)現(xiàn)基于此機(jī)制的QF自動(dòng)選擇算法。實(shí)驗(yàn)及實(shí)踐證明,可快速集成QF,具有不延遲產(chǎn)品發(fā)布時(shí)間、提高產(chǎn)品軟件質(zhì)量的優(yōu)點(diǎn);與此同時(shí),能夠節(jié)省用戶的安裝時(shí)間,減少人工檢查安裝日志的時(shí)間;適用于大型軟件的交付集成及驗(yàn)證,推薦進(jìn)一步推廣使用。下一步,研究集成測(cè)試序列生成方法[15-16]在持續(xù)集成中的應(yīng)用。

猜你喜歡
產(chǎn)品
好產(chǎn)品,可持續(xù)
從靈感出發(fā),邂逅好產(chǎn)品
新產(chǎn)品
“三無(wú)”產(chǎn)品
OPPO:堅(jiān)守本分,將產(chǎn)品做到極致
金橋(2021年4期)2021-05-21 08:19:22
”這些產(chǎn)品,我不打算回購(gòu)。
拒絕平凡,如何讓你的產(chǎn)品變“有趣”?
2015產(chǎn)品LOOKBOOK直擊
Coco薇(2015年1期)2015-08-13 02:23:50
golo6可以聽(tīng)的OBD產(chǎn)品
新產(chǎn)品
玩具(2009年10期)2009-11-04 02:33:14
主站蜘蛛池模板: 国产亚洲精| 91青青草视频在线观看的| 中文国产成人精品久久| 国产不卡在线看| 国产啪在线91| 精品国产Ⅴ无码大片在线观看81| 色综合a怡红院怡红院首页| 制服丝袜国产精品| 亚洲精品中文字幕无乱码| 亚洲美女一级毛片| 欧美午夜小视频| 亚洲VA中文字幕| 中文字幕1区2区| 国产在线观看成人91| 伊人久久大线影院首页| 亚洲人成影视在线观看| h网站在线播放| 九九这里只有精品视频| 日韩精品专区免费无码aⅴ| 99热这里只有精品在线观看| av在线手机播放| 日韩欧美国产中文| 亚洲IV视频免费在线光看| 凹凸精品免费精品视频| 国产香蕉一区二区在线网站| 2020最新国产精品视频| 久久精品66| 国产欧美专区在线观看| 亚洲国产在一区二区三区| 国产日韩精品一区在线不卡| 国产成人精品一区二区免费看京| 狠狠躁天天躁夜夜躁婷婷| 任我操在线视频| 91麻豆精品国产高清在线| 永久免费无码成人网站| jizz国产在线| 九色在线观看视频| 999福利激情视频 | 狠狠做深爱婷婷综合一区| 91综合色区亚洲熟妇p| 成人国产精品网站在线看| 亚洲人成网站在线播放2019| 国产精品高清国产三级囯产AV| 99色亚洲国产精品11p| 亚洲浓毛av| 精品久久久久成人码免费动漫| 日韩免费毛片| 亚洲第一区精品日韩在线播放| 欧美a在线看| 日韩在线观看网站| 欧美自慰一级看片免费| 欧美黄网站免费观看| AV熟女乱| 香蕉伊思人视频| aⅴ免费在线观看| 亚洲动漫h| 日本道中文字幕久久一区| 亚洲性一区| AV网站中文| 久久亚洲国产最新网站| 在线观看免费人成视频色快速| 99热国产这里只有精品无卡顿"| 成人福利免费在线观看| 制服丝袜国产精品| 日韩在线视频网| 新SSS无码手机在线观看| 五月婷婷欧美| 久久精品亚洲专区| 日韩欧美国产成人| 国产小视频网站| 国产jizzjizz视频| 婷婷亚洲视频| 国产免费人成视频网| 国产综合在线观看视频| 99这里只有精品免费视频| 亚洲精品色AV无码看| 亚洲色图欧美| 亚洲色图在线观看| 国产一级特黄aa级特黄裸毛片 | 中文字幕 欧美日韩| 好紧太爽了视频免费无码| 永久免费AⅤ无码网站在线观看|