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

        ?

        大型軟件中的QF快速集成機制及自動選擇算法

        2022-11-07 10:49:06張仰森
        計算機應用與軟件 2022年10期
        關鍵詞:產(chǎn)品

        向 尕 張仰森

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

        0 引 言

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

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

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

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

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

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

        1 QF快速集成機制

        1.1 持續(xù)集成

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

        通常而言,持續(xù)集成主要應用于開發(fā)階段。主要包括以下關鍵點:

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

        (2) 增加自動測試,能快速驗證基本功能和新代碼。

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

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

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

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

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

        D2:Patch交付時間點

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

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

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

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

        (3) 已經(jīng)驗證過的測試用例無須重新測試,這樣能保證軟件包質(zhì)量沒有衰退。在剩下的測試中主要關注未測試過的測試用例,以及QF所提供的軟件修復。

        2 QF自動選擇算法

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

        2.1 安裝過程分析

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

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

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

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

        2.2 算法步驟

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

        算法輸入:

        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) 每個QF都有一組屬性標簽:

        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) 輸入每個QF集合都有一組屬性標簽fiAttribute=[software_module,apply_phase,servertype,OStype]。

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

        4) for each QF:

        將屬性標簽與獲取的信息相匹配。

        如果匹配成功:

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

        否則:

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

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

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

        另考慮到日志內(nèi)容繁多,為減少人工檢查安裝日志的時間,支持自動檢查安裝日志,可以對每一個QF,進行特定關鍵字搜索,以確定所有QF安裝成功,無報錯信息。

        綜上,這種QF的自動安裝機制及自動選擇算法,具有以下優(yōu)點:

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

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

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

        (4) 合適的體系結構,讓QF的集成簡單方便,無須太多編碼工作。

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

        3 系統(tǒng)設計及測試結果分析

        3.1 系統(tǒng)設計及實現(xiàn)

        基于前文提出的QF快速集成機制及自動選擇算法,我們設計實現(xiàn)了如圖5所示系統(tǒng)結構。

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

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

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

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

        流程如圖6所示。

        (4) QF安裝自動檢測模塊:對一個QF,可以自動檢測安裝是否成功,日志是否無錯誤和異常。

        3.2 測試結果及分析

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

        1) 安裝部署QF時間顯著減少。為了客觀計算減少的時間,忽略掉其他影響安裝的時間,我們在收集數(shù)據(jù)時,僅計算用戶或系統(tǒng)調(diào)用命令所耗費的時間。

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

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

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

        4 結 語

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

        猜你喜歡
        產(chǎn)品
        好產(chǎn)品,可持續(xù)
        從靈感出發(fā),邂逅好產(chǎn)品
        新產(chǎn)品
        “三無”產(chǎn)品
        快樂語文(2021年36期)2022-01-18 05:48:46
        OPPO:堅守本分,將產(chǎn)品做到極致
        金橋(2021年4期)2021-05-21 08:19:22
        ”這些產(chǎn)品,我不打算回購。
        中國化妝品(2018年6期)2018-07-09 03:12:40
        拒絕平凡,如何讓你的產(chǎn)品變“有趣”?
        中國化妝品(2018年6期)2018-07-09 03:12:32
        2015產(chǎn)品LOOKBOOK直擊
        Coco薇(2015年1期)2015-08-13 02:23:50
        golo6可以聽的OBD產(chǎn)品
        新產(chǎn)品
        玩具(2009年10期)2009-11-04 02:33:14
        久久青草国产精品一区| 国产做无码视频在线观看| 一本久久a久久精品vr综合| 男人和女人高潮免费网站| 亚洲一区二区三区久久蜜桃| 日韩一区二区中文字幕| 中文字幕一区二区三区视频| 国产精成人品日日拍夜夜免费| 欧美成人免费高清视频| 日本一区二区三区小视频| 久久中文字幕一区二区| 免费国产成人肉肉视频大全| 天堂sv在线最新版在线 | 亚洲中文乱码在线观看| 亚洲熟女精品中文字幕| 无码精品a∨在线观看| 精品 无码 国产观看| 日本一区二区高清视频在线| 国产亚洲一区二区在线观看 | 中国年轻丰满女人毛茸茸| 久久精品国产亚洲AV高清wy| 亚洲毛片免费观看视频| √新版天堂资源在线资源| 香蕉人妻av久久久久天天| 国产精品自拍首页在线观看| 国产高清精品一区二区| 免费人成视频x8x8入口| 亚洲欧美欧美一区二区三区| 国产啪啪视频在线观看| 午夜性刺激免费看视频| 精品无码人妻一区二区三区品| 免费国产一级片内射老| av毛片亚洲高清一区二区| 奇米影视7777久久精品| 国产一级农村无码| 91大神蜜桃视频在线观看| 国产精品人成在线观看免费| 亚洲一线二线三线写真| 国产成人福利在线视频不卡| 中文字幕女同人妖熟女| 天下第二社区在线视频|