◆鴉文 陸一
大型信息系統(tǒng)軟件版本管理流程優(yōu)化
◆鴉文 陸一
(中國電子科技集團(tuán)公司第二十八研究所 江蘇 210000)
本文針對(duì)大型信息系統(tǒng)研制項(xiàng)目用戶需求變化頻繁、參研單位多、技術(shù)體制復(fù)雜等特點(diǎn),分析了影響其軟件版本管理的主要因素,針對(duì)性地研究設(shè)計(jì)了版本管理優(yōu)化流程,并輔助設(shè)計(jì)開發(fā)和使用了自研版本管理工具提升版本管理效率,確保了軟件版本的有效控制和可追溯。通過規(guī)范和信息化相結(jié)合的手段,版本管理的實(shí)效在測試過程和測試結(jié)果中得到驗(yàn)證,產(chǎn)品遺留問題率趨于減少,產(chǎn)品質(zhì)量得到提升。
版本管理流程優(yōu)化;版本控制工具;產(chǎn)品遺留問題率
大型信息系統(tǒng)是指以信息技術(shù)和通信技術(shù)為支撐,規(guī)模龐大,分布廣闊,采用多級(jí)網(wǎng)絡(luò)結(jié)構(gòu),跨越多個(gè)安全域,處理海量的,復(fù)雜且形式多樣的數(shù)據(jù),提供多種類型應(yīng)用的大系統(tǒng)[1]。
軟件配置管理(Software Configuration Management,SCM)在整個(gè)軟件系統(tǒng)的生命周期內(nèi)維護(hù)配置項(xiàng)的完整性和可追蹤性。配置管理的目的是利用配置標(biāo)識(shí)、配置控制、配置狀態(tài)紀(jì)實(shí)和配置審計(jì)建立和維護(hù)工作產(chǎn)品的完整性[2]。版本控制是配置管理的一個(gè)關(guān)鍵問題,貫穿于系統(tǒng)研制過程的全生命周期,對(duì)大型信息系統(tǒng)的交付質(zhì)量起著重要作用,也是系統(tǒng)能否形成最終能力的決定性因素之一。
大型信息系統(tǒng)一般由若干承研單位共同開發(fā),軟件更新升級(jí)十分頻繁,因此軟件版本管理在系統(tǒng)集成聯(lián)試過程中顯得尤為重要[3]。
大型信息系統(tǒng)研制項(xiàng)目一般具有用戶需求變化頻繁、參研單位多、技術(shù)體制復(fù)雜等特點(diǎn),版本管理的難點(diǎn)以及影響整個(gè)系統(tǒng)軟件版本管理成效的主要因素包括:
(1)用戶需求多樣化。在正式交付前,軟件通常需先交用戶進(jìn)行多輪試用,在試用過程中,用戶針對(duì)應(yīng)用場景可能實(shí)時(shí)提出多樣化的特殊定制需求,導(dǎo)致軟件快速迭代,軟件狀態(tài)變更頻繁。
(2)軟件集成體制驗(yàn)證復(fù)雜。在承研單位多、軟件業(yè)務(wù)多的情況下,必須確保嚴(yán)格遵守技術(shù)體制約束,遵循統(tǒng)一的軟件集成規(guī)范,才能避免在軟件集成過程中以及在軟件集成后出現(xiàn)技術(shù)體制不一致的問題,從而避免影響交付產(chǎn)品質(zhì)量。
(3)可執(zhí)行文件數(shù)量多。大型信息系統(tǒng)軟件往往包含很多可執(zhí)行文件,且相互依賴,如果使用傳統(tǒng)版本管理流程和工具,工作量較大,且效率低、易出錯(cuò)。
針對(duì)大型信息系統(tǒng)研制過程中用戶需求多樣化、開發(fā)周期短、用戶急于試用的特點(diǎn),很多項(xiàng)目均采用了迭代開發(fā)的模式,即:每次只設(shè)計(jì)和實(shí)現(xiàn)這個(gè)產(chǎn)品的一部分,逐步完成的方法。每次設(shè)計(jì)和實(shí)現(xiàn)一個(gè)階段叫作一個(gè)迭代。在迭代式開發(fā)方法中,整個(gè)開發(fā)工作被組織為一系列短小的、固定長度(如2~3周)的小項(xiàng)目,被稱為一系列的迭代。每一次迭代都包括了需求分析、設(shè)計(jì)、實(shí)現(xiàn)與測試[4]。
為此,考慮從需求跟蹤、配置庫建立、測試環(huán)境準(zhǔn)備、代碼合規(guī)性檢查、版本管理工具等五個(gè)方面進(jìn)行優(yōu)化設(shè)計(jì),提升管控成效。
(1)在需求跟蹤方面,在獲取用戶需求并進(jìn)一步分解形成系統(tǒng)需求和條目化的軟件需求后,形成并維護(hù)更適合迭代開發(fā)的《開發(fā)任務(wù)清單》,便于實(shí)時(shí)記錄和跟蹤與需求、設(shè)計(jì)相匹配的開發(fā)任務(wù)進(jìn)展和完成情況;
(2)在配置庫建立方面,在傳統(tǒng)軟件開發(fā)庫、受控庫、產(chǎn)品庫的基礎(chǔ)上,增加軟件測試庫的管理要求,便于迭代開發(fā)軟件快速功能驗(yàn)證和在版本發(fā)布節(jié)點(diǎn)聚焦業(yè)務(wù)流程測試,形成更加穩(wěn)定的軟件版本。
(3)在測試環(huán)境準(zhǔn)備方面,分級(jí)建立功能驗(yàn)證和集成驗(yàn)證環(huán)境兩個(gè)環(huán)境,分別開展配置項(xiàng)級(jí)測試和系統(tǒng)級(jí)測試,以適應(yīng)迭代開發(fā)情況下的測試需求,確?!伴_發(fā)即測試,測試即提交”,加快版本迭代。
(4)在代碼合規(guī)性檢查方面,從系統(tǒng)技術(shù)體制和軟件實(shí)現(xiàn)等方面著眼,建立軟件集成和編碼規(guī)則,在軟件入庫前由配置管理師進(jìn)行檢查。
(5)在版本管理工具方面,基于大型信息系統(tǒng)軟件自身特點(diǎn),自主研制滿足按專業(yè)或功能域顯示查詢、按不同范圍出庫的版本控制工具,增強(qiáng)管理效率,確保軟件版本依賴關(guān)系的可追溯性和出入庫版本的準(zhǔn)確性。
優(yōu)化后的版本管理流程可分為三個(gè)階段實(shí)施,即設(shè)計(jì)開發(fā)階段、迭代測試階段和版本生成階段。管理流程如圖1所示。
(1)設(shè)計(jì)開發(fā)階段
各專業(yè)負(fù)責(zé)人組織討論用戶需求(包括問題缺陷),形成《開發(fā)任務(wù)清單》,包括專業(yè)類別、需求或問題描述、解決措施、影響域分析、責(zé)任人等任務(wù)信息和軟件設(shè)計(jì)流程,開發(fā)人員據(jù)此進(jìn)行功能開發(fā)及問題整改,在開發(fā)環(huán)境完成初步集成測試后,提交可執(zhí)行文件、變更說明至配置管理員。
(2)迭代測試階段
迭代測試是根據(jù)每一輪迭代開發(fā)包含的特性數(shù)量,確定待測試的用例數(shù)量,將整個(gè)測試工作分割成一系列小型測試任務(wù),并根據(jù)測試用例的數(shù)量與難度來安排測試人員參與迭代測試工作[5-9]。
迭代測試階段,配置管理員需根據(jù)軟件集成規(guī)范檢查可執(zhí)行文件的合規(guī)性,并記錄軟件版本狀態(tài);測試人員按照變更說明在功能驗(yàn)證環(huán)境驗(yàn)證功能、記錄測試結(jié)果。
(3)版本生成階段
根據(jù)版本計(jì)劃,各專業(yè)負(fù)責(zé)人梳理待形成系統(tǒng)版本的對(duì)應(yīng)功能配置項(xiàng),由開發(fā)人員和配置管理員確認(rèn)升級(jí)的可執(zhí)行文件、版本號(hào)、升級(jí)說明。配置管理員將待升級(jí)的可執(zhí)行文件入集成驗(yàn)證環(huán)境,測試人員按升級(jí)說明更新軟件版本,并根據(jù)梳理的功能、影響域開展全系統(tǒng)業(yè)務(wù)流程測試,最終由項(xiàng)目負(fù)責(zé)人根據(jù)測試結(jié)果分析決策軟件版本是否入受控庫或產(chǎn)品庫。
圖1 軟件版本管理優(yōu)化流程
由于大型信息系統(tǒng)研制項(xiàng)目存在可執(zhí)行文件數(shù)目多、相互依賴、手工維護(hù)困難等問題,滿足系統(tǒng)實(shí)際管理要求的版本控制工具非常必要。工具應(yīng)支持:
(1)可執(zhí)行文件管理。在實(shí)施版本管理前,配置管理員需先梳理由“專業(yè)-功能域-配置項(xiàng)”三級(jí)節(jié)點(diǎn)組成的系統(tǒng)功能體系樹形結(jié)構(gòu),其中的一個(gè)配置項(xiàng)可關(guān)聯(lián)一個(gè)或多個(gè)可執(zhí)行文件,一個(gè)可執(zhí)行文件可以同時(shí)關(guān)聯(lián)多個(gè)配置項(xiàng)。通過該定制工具可以查看專業(yè)、功能域或配置項(xiàng)包含的可執(zhí)行文件及其基本信息,包括可執(zhí)行文件名稱、可執(zhí)行文件標(biāo)識(shí)、版本號(hào)、文件類型、依賴關(guān)系、功能描述、變更說明等,可以保存、查詢和刪除可執(zhí)行文件所有入庫的歷史版本。
(2)可執(zhí)行文件入庫。支持入庫流程的信息化審批,包含入庫時(shí)間、入庫申請(qǐng)人、入庫事由等信息??蓤?zhí)行文件單個(gè)或批量入庫時(shí)自動(dòng)關(guān)聯(lián)軟件集成規(guī)范審查,檢查項(xiàng)主要包括版本號(hào)、依賴關(guān)系、功能描述、變更說明等信息。
(3)可執(zhí)行文件出庫。支持出庫流程的信息化審批,包含出庫時(shí)間、出庫方式(新版本增量、全量等)、出庫事由、版本發(fā)布說明、接收單位、聯(lián)系人等信息。出庫時(shí)對(duì)可執(zhí)行文件之間的依賴關(guān)系進(jìn)行合法性校驗(yàn),并以拓?fù)鋱D方式展現(xiàn)可執(zhí)行文件之間的依賴關(guān)系。校驗(yàn)成功后自動(dòng)將可執(zhí)行文件及其依賴的可執(zhí)行文件一并出庫,同時(shí)具備按“專業(yè)-功能域-配置項(xiàng)-可執(zhí)行文件-標(biāo)識(shí)號(hào)-版本號(hào)-功能描述”的能力輸出軟件版本發(fā)布清單。
按照優(yōu)化后的版本管理及相應(yīng)的迭代測試流程開展軟件開發(fā)和測試后,收集了6周的入庫和迭代測試數(shù)據(jù)見表1。
表1 入功能測試環(huán)境測試的數(shù)據(jù)
統(tǒng)計(jì)分析發(fā)現(xiàn),隨著迭代開發(fā)工作的持續(xù)進(jìn)行,可執(zhí)行文件持續(xù)入庫,在新增問題率基本平穩(wěn)的情況下,遺留問題率持續(xù)大幅衰減,產(chǎn)品質(zhì)量逐步呈現(xiàn)提升趨勢。
圖2 迭代測試成效
配置管理員可以結(jié)合大型信息系統(tǒng)軟件版本管理的實(shí)際要求,自編腳本實(shí)現(xiàn)代碼合規(guī)性檢查包括環(huán)境變量、動(dòng)態(tài)庫等等,提升代碼入庫的有效性。
圖3 環(huán)境變量檢測結(jié)果
圖4 冗余動(dòng)態(tài)庫檢測結(jié)果
圖5 系統(tǒng)路徑下動(dòng)態(tài)庫檢測結(jié)果
結(jié)合大型信息系統(tǒng)的設(shè)計(jì)和應(yīng)用形態(tài),自主研制的軟件版本控制工具能夠?qū)崿F(xiàn)出入庫流程的自動(dòng)化審批和關(guān)聯(lián)(見圖6);出庫時(shí)展現(xiàn)可執(zhí)行文件間的依賴關(guān)系(見圖7),解決了可執(zhí)行文件數(shù)量多、依賴關(guān)系錯(cuò)綜復(fù)雜導(dǎo)致的集成規(guī)范不一致和出庫文件不完整等問題。
圖6 出入庫審批流程
圖7 依賴關(guān)系拓?fù)鋱D
本軟件具有界面友好、結(jié)構(gòu)清晰、實(shí)用性強(qiáng)、自動(dòng)化程度高、流程可跟蹤、版本可追溯的優(yōu)點(diǎn),工具使用后,軟件版本得到了有效控制,為軟件開發(fā)過程和版本發(fā)布提供了強(qiáng)大的支持,進(jìn)而提高了軟件產(chǎn)品質(zhì)量。
本文從需求跟蹤、配置庫建立、測試環(huán)境準(zhǔn)備、代碼合規(guī)性檢查、版本管理工具等五個(gè)方面對(duì)軟件開發(fā)、測試和版本管理流程進(jìn)行了優(yōu)化,并結(jié)合自研的版本控制工具提升了版本管理的實(shí)施效果。該流程和工具已在多個(gè)實(shí)際項(xiàng)目中推廣應(yīng)用,切實(shí)提升了用戶需求變化多、版本迭代快、參研單位多情況下的大型信息系統(tǒng)軟件版本管理效率,成效明顯。
[1]袁海林,陳鈞.大型信息系統(tǒng)軟件版本管理的研究與思考[J].電子世界,2018.
[2]顧夢華.基于CMMI的軟件配置管理模型研究[J].微計(jì)算機(jī)信息,2012.
[3]楊智.一種軟件版本管理模型設(shè)計(jì)[J].電子技術(shù)與軟件工程,2019.
[4]陳勇.淺談敏捷開發(fā)與迭代開發(fā)相結(jié)合[D].應(yīng)用軟件專題論文,2014.
[5]姜文,劉立康.應(yīng)用軟件項(xiàng)目的迭代開發(fā)與測試[J].計(jì)算機(jī)技術(shù)與發(fā)展,2019.
[6]CRISPIN L,GREGORY J. 敏捷軟件測試:軟件測試工程師與敏捷團(tuán)隊(duì)的實(shí)踐指南[M]. 孫偉峰,崔康,譯. 北京:清華大學(xué)出版社,2010.
[7]GREGORY J,CRISPIN L. 深入敏捷測試—整個(gè)敏捷團(tuán)隊(duì)的學(xué)習(xí)之旅[M]. 徐毅,夏雪,譯. 北京:清華大學(xué)出版社,2017.
[8]楊丹君.迭代測試流程在軟件測試中的應(yīng)用[J].工業(yè)控制計(jì)算機(jī),2016.
[9]尚潔,李春雷.快速迭代開發(fā)模式下系統(tǒng)測試方法[ J]. 指揮信息系統(tǒng)與技術(shù),2017.