專利名稱:一種軟件產品構建方法
技術領域:
本發(fā)明涉及一種軟件制作方法,具體地說是一種軟件產品構建方法。
背景技術:
軟件的構建、集成在軟件工程的整個過程中占有很大的比重,貫穿軟件開發(fā)、測試、發(fā)布、部署、升級的整個過程;一個良好的軟件構建、集成方法將有助于提高這些過程的效率和軟件產品的質量?,F(xiàn)代軟件具有規(guī)模大、功能數(shù)量多、組成結構復雜等特點,并且需要和各種系統(tǒng)通信,這樣的軟件開發(fā)、構建和調試的過程都極為復雜。改動一個極細小的地方,可能會影響到很多其他功能,可謂牽一發(fā)而動全身,這樣每次改動都需要測試可能影響到的地方,工作量巨大,且往往不能保證質量。由此,出現(xiàn)了很多功能豐富的軟件構建和軟件集成工具,包 括版本控制工具、持續(xù)集成工具、軟件構建工具、項目管理工具,但是這些工具只是能夠解決某一個領域的局部問題,它們對軟件產品及其構件如何管理,發(fā)布以后如何有效的升級、維護,并沒有給出明確的可行性方案。
發(fā)明內容
本發(fā)明的技術任務是針對上述現(xiàn)有技術的不足,提供一種準確、高效地軟件產品構建方法。該方法從軟件產品的模塊劃分,到模塊的構建產出一個原子構件,再到由這些原子構件自由組合產出最終可交付使用的產品,在此過程中融入版本化管理方法。本發(fā)明的技術任務是按以下方式實現(xiàn)的一種軟件產品構建方法,其特點是在軟件產品制作過程中融入版本化管理方法,具體包括以下步驟
(1)建立構件倉庫和源代碼倉庫,用于管理所有版本的構件及其源代碼;
(2)識別軟件模塊,將軟件產品按業(yè)務邏輯進行模塊劃分,每個模塊在物理結構上獨立存放;
(3)規(guī)劃統(tǒng)一的模塊的目錄結構,在每個模塊中創(chuàng)建構建器;
(4)規(guī)劃軟件產品和軟件模塊的版本,內容包括軟件產品和軟件模塊的功能模塊、性能指標、要修復的問題,以及此版本的軟件產品是由哪些版本的哪些軟件模塊產生的構件組成;
(5)開發(fā)軟件產品的功能模塊,或者修改軟件產品及其功能模塊中存在的問題;在開發(fā)過程中,可以隨時執(zhí)行構建,把功能模塊構建為相應版本的構件,并發(fā)布快照版本,用于調試、測試;發(fā)布的內容為構件,及構件和其他構件之間的依賴關系;
(6)功能模塊的代碼提交后,自動觸發(fā)該模塊和該模塊影響的模塊(依賴此模塊的模塊)的構建,被影響的模塊的構建還會繼續(xù)觸發(fā)這些模塊影響的模塊的構建,直至最終產品完成構建;
(7)構件開發(fā)完成并測試通過后,可構建并發(fā)布正式版本,其過程為
若軟件的功能模塊依賴的其它構件的版本發(fā)生變化,修改構建器對應的文件,提交到代碼倉庫;標記當前代碼倉庫中的源代碼為待發(fā)布的版本,同時構建器也被標記為相應的版本;執(zhí)行構建,并上傳構件到構件倉庫;正式版本發(fā)布后,倉庫中對應的版本的構件將不允許再修改;
(8)根據(jù)項目的需要,選擇不同構件的不同版本,進行組合構建,產出可交付的產品版本。由于f中所述的構建過程,在產品規(guī)模較大、功能模塊較多時,引發(fā)的構建任務數(shù)量巨大,在單服務器上構建耗時會很長,所以步驟f中引入了持續(xù)集成服務集群,由一個中心節(jié)點分配構建任務到各個子節(jié)點,各子節(jié)點完成任務后,通知中心節(jié)點;
為方便集群擴展,引入了虛擬云計算環(huán)境,可克隆服務節(jié)點,并添加到集群中。步驟h的構建過程中,要檢查構件的依賴關系是否正確、構件的動態(tài)測試結果是 否符合要求、構件的靜態(tài)測試結果是否符合要求。進一步的,步驟c中所述構建器由多個文件組成,定義該模塊與其他模塊間的依賴關系,包括編譯時、運行時、測試時的依賴關系。步驟f中,功能模塊的構建也可以由定時任務觸發(fā),其后的構建過程與代碼提交觸發(fā)的構建一致。本發(fā)明的軟件產品構建方法與現(xiàn)有技術相比具有以下突出的有益效果
(一)產品以及組成產品的每個構件的版本化,使發(fā)布的產品有明確的版本,有利于產品的升級和恢復;
(二)將代碼和資源文件、構件、應用軟件都存放到云端,屏蔽了軟件產品構建、集成、發(fā)布產品過程中對物理資源的要求,能夠有效的避免本地物理文件存儲的弊端;
(三)通過每個模塊中的構建器,能夠達到隨時隨地構建的效果;
(四)產品模塊間的依賴關系固化到構件中,使得在構建產品過程中選擇構件時,只關心頂層的構件及版本,而不用去關心每一個構件及版本,有效的減小產品構建的復雜度,降低產品構建的出錯概率;
(五)構建的快照版本與正式版本共存的方案,解決了主版本因日?;_發(fā)導致不穩(wěn)定因素問題,能夠隨時獲取最新的穩(wěn)定版本或者其他穩(wěn)定版本;
(六)構建過程的版本化實現(xiàn),能夠不依賴于已構建出的物理文件,還原產品的任一版本,提聞構建系統(tǒng)的容災能力。
附圖I是利用本發(fā)明方法構建應用軟件版本I的示意 附圖2是利用本發(fā)明方法構建應用軟件版本2的示意 附圖3為圖I、圖2中應用軟件版本I與應用軟件版本2的對比說明。
具體實施例方式參照說明書附圖以具體實施例對本發(fā)明的軟件產品構建方法作以下詳細地說明。實施例一(利用本發(fā)明方法構建應用軟件版本I)
如附圖I所示,構建方法具體為
I、搭建出構件倉庫系統(tǒng)和源代碼版本倉庫系統(tǒng);2、應用軟件按照業(yè)務劃分為模塊a、模塊b、模塊C、模塊d、模塊e五個模塊,每個模塊在源代碼倉庫中獨立存放;
3、為五個模塊在源代碼倉庫中分別創(chuàng)建目錄結構,包含源代碼、相關的資源文件;為應用軟件以及每個模塊創(chuàng)建構建器;
4、在應用軟件的構建器中描述應用軟件(版本I)由構件I(版本I)、構件2 (版本I)、構件3 (版本I)、構件4 (版本I)、構件5 (版本I)組成。在每個模塊的構建器中描述版本構件之間的依賴關系和性能指標、要修復的問題,構件(版本I)依賴構件2 (版本I)和構件4 (版本I);構件4 (版本I)依賴構件5 (版本I)
5、完成模塊源代碼的開發(fā)并提交至源代碼倉庫。在此過程中可能產生若干個快照版
本;
6、測試通過后,在2012-07-0508:54:22時刻,從源代碼倉庫檢出穩(wěn)定版本,依次構建出構件5 (版本I)、構件2 (版本I)、構件3 (版本I)、構件4 (版本I)、構件I (版本I)。最終構建出應用軟件(版本I)。實施例二 (利用本發(fā)明方法構建應用軟件版本2)
實施例一所得軟件在應用了一段時間之后,應用軟件需求發(fā)生變更,需要去除模塊c(構件3),并且構件I、構件4、構件5需要升級。如附圖2所示,構建方法具體為
1、修改應用軟件的構建器模塊的構建器,在應用軟件的構建器中描述應用軟件(版本2)由構件I (版本2)、構件2 (版本I)、構件4 (版本2)、構件5 (版本2)組成;修改構件I的構建器,依賴構件2 (版本I)、構件4 (版本2);修改構件4的構建器,依賴構件5 (版本2);
2、完成構件1、4、5對應模塊源代碼的開發(fā)并提交至源代碼倉庫。在此過程中可能產生若干個快照版本;
3、待構件I、4、5對應的模塊代碼測試通過后,在2012-07-1311:30:43時刻,從源代碼倉庫檢出穩(wěn)定版本,依次構建出構件5 (版本2)、構件2 (版本I)、構件4 (版本2)、構件I(版本2)。最終構建出應用軟件(版本2)。應用軟件版本I與應用軟件版本2的代碼版本及依賴模塊、構件的比對如附圖3所示。
權利要求
1.一種軟件產品構建方法,其特征在于在軟件產品制作過程中融入版本化管理方法,對軟件產品做模塊識別、模塊的構建職責下發(fā)、產品的構件倉庫化管理、產品及構件的版本化管理、構件倉庫的分布式管理以及軟件產品云端構建方法,具體包括以下步驟 1)建立構件倉庫和源代碼倉庫,用于管理所有版本的構件及其源代碼; 2)識別軟件模塊,將軟件產品按業(yè)務邏輯進行模塊劃分,每個模塊在物理結構上獨立存放; 3)規(guī)劃統(tǒng)一的模塊的目錄結構,在每個模塊中創(chuàng)建構建器; 4)規(guī)劃軟件產品和軟件模塊的版本,內容包括軟件產品和軟件模塊的功能模塊、性能指標、要修復的問題,以及此版本的軟件產品是由哪些版本的哪些軟件模塊產生的構件組成; 5)開發(fā)軟件產品的功能模塊,或者修改軟件產品及其功能模塊中存在的問題;在開發(fā)過程中,可以隨時執(zhí)行構建,把功能模塊構建為相應版本的構件,并發(fā)布快照版本,用于調試、測試;發(fā)布的內容為構件,及構件和其他構件之間的依賴關系; 6)功能模塊的代碼提交后,自動觸發(fā)該模塊和該模塊影響的模塊的構建,被影響的模塊的構建還會繼續(xù)觸發(fā)這些模塊影響的模塊的構建,直至最終產品完成構建; 7)構件開發(fā)完成并測試通過后,可構建并發(fā)布正式版本,其過程為 若軟件的功能模塊依賴的其它構件的版本發(fā)生變化,修改構建器對應的文件,提交到代碼倉庫;標記當前代碼倉庫中的源代碼為待發(fā)布的版本,同時構建器也被標記為相應的版本;執(zhí)行構建,并上傳構件到構件倉庫;正式版本發(fā)布后,倉庫中對應的版本的構件將不允許再修改; 8)根據(jù)項目的需要,選擇不同構件的不同版本,進行組合構建,產出可交付的產品版本。
2.根據(jù)權利要求I所述的軟件產品構建方法,其特征在于,步驟f中包括持續(xù)集成服務集群,由一個中心節(jié)點分配構建任務到各個子節(jié)點,各子節(jié)點完成任務后,通知中心節(jié)點;虛擬云計算環(huán)境,可克隆服務節(jié)點,并添加到集群中。
3.根據(jù)權利要求I所述的軟件產品構建方法,其特征在于,步驟h的構建過程中,要檢查構件的依賴關系是否正確、構件的動態(tài)測試結果是否符合要求、構件的靜態(tài)測試結果是否符合要求。
4.根據(jù)權利要求1、2或3所述的軟件產品構建方法,其特征在于,步驟c中所述構建器由多個文件組成,定義該模塊與其他模塊間的依賴關系,包括編譯時、運行時、測試時的依賴關系。
5.根據(jù)權利要求1、2或3所述的軟件產品構建方法,其特征在于,步驟f中,功能模塊的構建也可以由定時任務觸發(fā)。
全文摘要
本發(fā)明公開了一種軟件產品構建方法,涉及一種軟件制作方法。該方法的特點是在軟件產品制作過程中融入版本化管理方法,將軟件產品版本化管理細化到每個構件,與其對應的源代碼也做相應的版本化管理,有益于軟件產品及構建的升級和維護。在軟件產品的集成和構建過程中,借助分布式管理和云計算技術的資源共享和水平擴展能力,解決了在細化軟件產品的版本化管理帶來的資源消耗問題,有效的降低因環(huán)境問題導致構建失敗的概率。
文檔編號G06F9/44GK102968298SQ20121042620
公開日2013年3月13日 申請日期2012年10月31日 優(yōu)先權日2012年10月31日
發(fā)明者蔡衛(wèi)衛(wèi), 王剛, 崔其振 申請人:山東浪潮齊魯軟件產業(yè)股份有限公司