毛 佳,胡林平
(中國(guó)航空計(jì)算技術(shù)研究所,西安710068)
隨著航空工業(yè)的飛速發(fā)展,航空軟件產(chǎn)品的安全性與穩(wěn)定性已經(jīng)成為研制單位進(jìn)行市場(chǎng)抗衡的重要砝碼。而軟件過程能力的高低往往對(duì)其起著決定性的作用。軟件過程管理中,配置管理技術(shù)無疑又是重中之重:混亂的配置管理可以使所有軟件工程師長(zhǎng)期的心血?dú)в谝坏?更嚴(yán)重者,可以造成機(jī)毀人亡。
為規(guī)范軟件研發(fā)過程,提高軟件產(chǎn)品的安全性,美國(guó)航空無線電技術(shù)委員會(huì)(RTCA)提出了DO-178B《機(jī)載系統(tǒng)和設(shè)備合格審定中的軟件考慮》,它用于建立開發(fā)人員、安裝人員和用戶在使用計(jì)算機(jī)技術(shù)設(shè)計(jì)航空系統(tǒng)及設(shè)備時(shí)遵從的軟件要求[2]。該標(biāo)準(zhǔn)并成為美國(guó)聯(lián)邦航空管理局(FAA)和歐洲聯(lián)合航空管理局(JAA)進(jìn)行機(jī)載軟件開發(fā)的標(biāo)準(zhǔn)。DO-178B采納了由JAA所使用的五級(jí)失效狀的分類模式將機(jī)載軟件安全級(jí)別劃分為災(zāi)難性、危險(xiǎn)性、較重要、次要級(jí)和無影響級(jí)5個(gè)類型,并由此確立了對(duì)安全性方面的具體細(xì)則[2]。DO-178B制定了軟件生命周期各個(gè)過程的目標(biāo);闡述了達(dá)到目標(biāo)所應(yīng)進(jìn)行的活動(dòng)。
軟件配置管理技術(shù)主要解決的是軟件開發(fā)過程中的資源管理問題[4]。它作為軟件過程管理中的一項(xiàng)重要內(nèi)容,在DO-178B中具有明確的目標(biāo)與要求。本文作者在進(jìn)行充分研究之后,對(duì)滿足DO-178B研發(fā)過程的軟件配置管理技術(shù)進(jìn)行了探討,并從實(shí)踐出發(fā),為如何開展?jié)M足DO-178B的軟件配置管理活動(dòng)提出了很好的建議。
在滿足DO-178B的軟件研發(fā)過程中,軟件配置管理過程應(yīng)該涉及的活動(dòng)如圖1所示。其中,建立組織機(jī)構(gòu)與配置庫設(shè)置為其它活動(dòng)的基礎(chǔ)。
圖1 軟件配置管理活動(dòng)組成
軟件配置管理活動(dòng)需要全體項(xiàng)目成員的參與。CCB(配置控制委員會(huì))作為一個(gè)集中控制機(jī)構(gòu),它建立的目的是為了保證每個(gè)基線變更都經(jīng)過項(xiàng)目相關(guān)成員的考慮與確認(rèn),每個(gè)變更在實(shí)施前都經(jīng)過授權(quán)[5]。CCB一般由項(xiàng)目負(fù)責(zé)人、開發(fā)組、測(cè)試組、質(zhì)量保證組、配置管理組等項(xiàng)目相關(guān)成員組成。
CCB應(yīng)至少設(shè)置兩級(jí):系統(tǒng)級(jí)與項(xiàng)目級(jí)。系統(tǒng)級(jí)CCB成員中應(yīng)增加硬件開發(fā)方等系統(tǒng)級(jí)相關(guān)人員。系統(tǒng)級(jí)CCB負(fù)責(zé):需求基線、產(chǎn)品基線的審批以及這兩類基線數(shù)據(jù)的變更;產(chǎn)品發(fā)布的審批。項(xiàng)目級(jí)CCB則負(fù)責(zé)其他基線的審批以及基線數(shù)據(jù)的更改。項(xiàng)目級(jí)CCB也可根據(jù)軟件模塊的分包情況再次細(xì)分。
多層次的CCB可以提高項(xiàng)目組內(nèi)部解決問題的效率;而且對(duì)于涉及項(xiàng)目組外部的一切問題又保證了溝通的有效性及問題分析與解決的權(quán)威性。
配置庫的設(shè)置一般有兩種形式:按產(chǎn)品模塊的劃分建庫和按產(chǎn)品建庫。按產(chǎn)品模塊的劃分建庫適合于工具統(tǒng)一、對(duì)并行開發(fā)有一定需求的大規(guī)模軟件研發(fā)。這種配置庫的建立模式能提高配置項(xiàng)的編譯和發(fā)布效率。但這種庫結(jié)構(gòu)并不是面對(duì)整個(gè)軟件產(chǎn)品,因此,在維護(hù)各模塊版本的一致性方面成本較高。按產(chǎn)品建庫適用于開發(fā)模式為線性的中小型專業(yè)軟件的研發(fā),維護(hù)方便,但不利于提高配置項(xiàng)的編譯效率。配置庫的設(shè)置應(yīng)根據(jù)項(xiàng)目情況結(jié)合所使用的工具進(jìn)行靈活選擇、合理規(guī)劃。
無論采用哪種方式進(jìn)行配置庫設(shè)置,都需要對(duì)不同穩(wěn)定程度的數(shù)據(jù)版本進(jìn)行區(qū)別控制,以防止重要版本的丟失或肆意篡改。因此,“開發(fā)庫+受控庫+產(chǎn)品庫”的三庫管理機(jī)制應(yīng)運(yùn)而生。區(qū)別于以往物理分開的三庫管理,建議使用物理上的一庫實(shí)現(xiàn)邏輯上的三庫管理。三庫物理統(tǒng)一,通過基線的創(chuàng)建來實(shí)現(xiàn)邏輯的分割。開發(fā)庫負(fù)責(zé)收集所有軟件研發(fā)過程中的電子數(shù)據(jù),受控庫保存基線數(shù)據(jù)。產(chǎn)品庫保存所有產(chǎn)品基線。配置管理員設(shè)置配置庫中的讀、寫權(quán)限,以維護(hù)數(shù)據(jù)的安全性與穩(wěn)定性。物理一庫的優(yōu)勢(shì):避免由于物理上的隔離導(dǎo)致數(shù)據(jù)在三庫間(主要是開發(fā)庫與受控庫)的頻繁出入,減少了工作負(fù)荷,防止數(shù)據(jù)在傳遞過程中出錯(cuò);再者,避免了為建立三庫間數(shù)據(jù)的對(duì)應(yīng)關(guān)系而付出的不必要成本。
配置標(biāo)識(shí)主要包括:文檔標(biāo)識(shí)、源代碼標(biāo)識(shí)、產(chǎn)品標(biāo)識(shí)。
文檔標(biāo)識(shí)存在于文檔的封頁,通常采用的標(biāo)識(shí)規(guī)則為:“項(xiàng)目簡(jiǎn)稱_文檔名稱_版本號(hào)”,版本號(hào)可以表示為X.Y。X和Y均為整數(shù),它們的變化反映出變更程度的大小。
源代碼是通過其電子文件的名稱進(jìn)行標(biāo)識(shí)的。如果不同路徑下存在有相同名稱的代碼,則可以通過“路徑名+文件名”的方式對(duì)源代碼進(jìn)行標(biāo)識(shí)。代碼的版本號(hào)規(guī)則可以與技術(shù)文檔的相同。
產(chǎn)品可以通過以下標(biāo)識(shí)規(guī)則進(jìn)行標(biāo)識(shí):“產(chǎn)品名稱/產(chǎn)品版本號(hào)”。產(chǎn)品的版本號(hào)由三部分組成,即主版本號(hào)+特征版本號(hào)+修復(fù)版本號(hào)[3]。主版本號(hào)代表產(chǎn)品的第幾代;特征版本號(hào)代表新功能的增加;而修復(fù)版本號(hào)的提升代表產(chǎn)品發(fā)布后對(duì)BUG的修復(fù)。
傳統(tǒng)的基線管理策略大都是基于瀑布式開發(fā)模型的基礎(chǔ)上提出的:每個(gè)軟件研發(fā)階段結(jié)束即創(chuàng)建該階段的基線??蛇@對(duì)于大規(guī)模復(fù)雜軟件所采用的多模塊并行開發(fā)的方式并不適用?;诖?,對(duì)多模塊并行開發(fā)模式的研發(fā)過程,軟件生命周期所產(chǎn)生的數(shù)據(jù)應(yīng)采用兩級(jí)基線管理策略:
第一級(jí)基線(模塊級(jí)基線):各功能模塊在其軟件生命周期的每個(gè)階段結(jié)束時(shí),產(chǎn)生該模塊的相應(yīng)階段基線。
第二級(jí)基線(軟件級(jí)基線):整個(gè)軟件在其軟件生命周期的每個(gè)階段結(jié)束時(shí),產(chǎn)生整個(gè)軟件的相應(yīng)階段基線。
第二級(jí)基線由與其所處階段一致的所有模塊的第一級(jí)基線共同構(gòu)成。一旦任意一個(gè)第一級(jí)基線的新版本形成,其構(gòu)成的第二級(jí)基線也將自然形成新的基線版本。兩級(jí)基線的管理策略有利于并行開發(fā)中各模塊的狀態(tài)管理:通過基線信息的描述,不但能清楚地記錄整個(gè)軟件各種基線及同類基線中不同版本的差別,更能對(duì)模塊內(nèi)各階段的狀態(tài)變遷進(jìn)行詳細(xì)的記錄。依照兩級(jí)基線策略的思想,表1列舉了滿足DO-178B的軟件研發(fā)過程中軟件生命周期的基線列表。
軟件生命周期中的每條基線都應(yīng)進(jìn)行唯一的標(biāo)識(shí),并且基線的建立應(yīng)該首先由項(xiàng)目負(fù)責(zé)人提交基線發(fā)布申請(qǐng),經(jīng)過相應(yīng)級(jí)別的CCB批準(zhǔn)后,由配置管理人員建立。
表1 軟件生命周期基線列表
滿足DO-178B要求的軟件研發(fā)過程中,所有基線化數(shù)據(jù)的變更都應(yīng)在有效的控制下進(jìn)行。項(xiàng)目成員可以在進(jìn)行任何活動(dòng)的過程中將所發(fā)現(xiàn)的問題在變更管理系統(tǒng)中以問題報(bào)告(PR)的形式進(jìn)行記錄。這包括開發(fā)過程,驗(yàn)證過程,又或者是用戶使用過程。問題報(bào)告中需要記錄問題發(fā)現(xiàn)人、問題重現(xiàn)步驟。問題在經(jīng)過分析、解決、驗(yàn)證后,還應(yīng)在報(bào)告中記錄問題影響域以及解決方案。介于需求基線與產(chǎn)品基線的重要性,有關(guān)這兩條基線的數(shù)據(jù)變更,進(jìn)行PR分配及評(píng)審的必須是系統(tǒng)級(jí)CCB,而其它基線數(shù)據(jù)的變更評(píng)審則由項(xiàng)目級(jí)CCB執(zhí)行。圖2顯示了滿足DO-178B變更要求的變更控制工作流程。
圖2 變更控制流程圖
從圖2中可以看出,滿足DO-178B的軟件變更流程較之一般軟件的變更更為嚴(yán)格:所有變更活動(dòng)均被詳細(xì)記錄、每個(gè)問題都會(huì)被詳細(xì)評(píng)估和解決。對(duì)于評(píng)估與變更的實(shí)施也都需要經(jīng)過獨(dú)立性驗(yàn)證,項(xiàng)目成員可以對(duì)每個(gè)PR的任一環(huán)節(jié)進(jìn)行回溯與跟蹤。
軟件發(fā)布的目的是為了保證所使用的軟件產(chǎn)品的有效性,以證明該產(chǎn)品是經(jīng)過權(quán)威認(rèn)可、授權(quán)使用的軟件。軟件發(fā)布應(yīng)建立詳細(xì)的發(fā)布規(guī)程。規(guī)程中應(yīng)規(guī)定發(fā)布時(shí)機(jī)、發(fā)布申請(qǐng)人、批準(zhǔn)機(jī)構(gòu)、申請(qǐng)及審批流程。
軟件歸檔與恢復(fù)是為了保證與軟件產(chǎn)品相關(guān)的生命周期數(shù)據(jù)在發(fā)生例如產(chǎn)品復(fù)制、重新生成、復(fù)測(cè)以及修改的需求時(shí)能夠被及時(shí)恢復(fù)[1]。因此,軟件的歸檔與恢復(fù)應(yīng)建立相應(yīng)規(guī)程。規(guī)程中應(yīng)對(duì)數(shù)據(jù)歸檔及恢復(fù)的執(zhí)行人、歸檔時(shí)機(jī)、歸檔媒介、媒介標(biāo)識(shí)規(guī)則、歸檔及恢復(fù)的執(zhí)行流程等內(nèi)容進(jìn)行約束。對(duì)于軟件的歸檔與恢復(fù)還應(yīng)該配套對(duì)應(yīng)的審查機(jī)制(一般由質(zhì)量保證人員執(zhí)行),以保證工作能準(zhǔn)確有效的開展。
備份作為歸檔工作的一部分,能防止數(shù)據(jù)的丟失而帶來工作上的損失。備份周期不宜過長(zhǎng),最好做到當(dāng)天的增量備份以及以星期或月為單位的全量備份。備份媒介在使用時(shí)應(yīng)注意完好性及可用性檢查。備份媒介應(yīng)一式兩份,分別存放在物理距離相距較遠(yuǎn)的地方,進(jìn)行防火防盜處理。
軟件加載控制的目的是為了保證加載到系統(tǒng)的軟件是正確、完整的,且可以被完全加載的[1]。因此,開發(fā)者有必要對(duì)以下信息進(jìn)行規(guī)范并詳細(xì)記錄:軟件的加載格式、協(xié)議、加載工具、加載流程以及軟件的完整性檢查(包括加載媒介的標(biāo)識(shí))。通常,這些信息會(huì)作為交付文檔中的重要組成部分交付給用戶。
配置狀態(tài)報(bào)告作為配置管理活動(dòng)中一個(gè)重要的環(huán)節(jié),可以幫助項(xiàng)目成員了解基線配置項(xiàng)的狀態(tài)、變更對(duì)項(xiàng)目進(jìn)展的影響等情況。從而為開發(fā)決策提供參考依據(jù)。配置狀態(tài)報(bào)告應(yīng)包括的內(nèi)容有:基線建立的信息,基線數(shù)據(jù)的變更及變更狀態(tài),軟件產(chǎn)品的發(fā)行狀況,對(duì)配置庫的重要操作以及因?yàn)檫^程改進(jìn)所導(dǎo)致的一些既定的配置管理活動(dòng)的變化。
軟件配置索引從某種程度上可以看作軟件生命周期里所有配置狀態(tài)報(bào)告的一個(gè)子集。它描述的是軟件產(chǎn)品形成后,組成該產(chǎn)品的相關(guān)配置數(shù)據(jù)的信息。
配置管理活動(dòng)中,人們往往忽略一項(xiàng)重要的活動(dòng),那就是對(duì)用來開發(fā)、構(gòu)建、驗(yàn)證以及加載軟件的工具的配置控制,也稱為軟件生命周期環(huán)境的控制。DO-178B中對(duì)此有明確的要求[1]:即用來產(chǎn)生軟件產(chǎn)品的工具必須進(jìn)行標(biāo)識(shí)、控制,以保證其可恢復(fù)性。項(xiàng)目組內(nèi),應(yīng)創(chuàng)建專門的工具庫,存放項(xiàng)目中使用到的所有工具及工具的不同版本。同時(shí)創(chuàng)建工具基線,基線中不僅包括工具軟件,對(duì)于需要進(jìn)行質(zhì)量鑒定的工具還需包括對(duì)應(yīng)的鑒定數(shù)據(jù)。
在DO-178B中,軟件生命周期數(shù)據(jù)可以劃分為兩種類型[1]:控制類別1(CC1)和控制類別2(CC2)。兩種控制類別的數(shù)據(jù)在不同級(jí)別軟件的配置管理活動(dòng)中具有不同的要求與目標(biāo)。
以DO-178B A級(jí)軟件的研發(fā)過程為例,軟件的五個(gè)計(jì)劃(開發(fā)計(jì)劃、驗(yàn)證計(jì)劃、配置管理計(jì)劃、質(zhì)量保證計(jì)劃、合格審定計(jì)劃)、三個(gè)標(biāo)準(zhǔn)(需求標(biāo)準(zhǔn)、設(shè)計(jì)標(biāo)準(zhǔn)、編碼標(biāo)準(zhǔn))、需求、設(shè)計(jì)、源代碼、可執(zhí)行目標(biāo)碼以及開發(fā)工具的工具鑒定數(shù)據(jù)屬于CC1;而軟件驗(yàn)證結(jié)果、軟件驗(yàn)證用例與程序、軟件配置管理記錄、質(zhì)量保證記錄、問題報(bào)告以及驗(yàn)證工具的質(zhì)量鑒定數(shù)據(jù)屬于CC2。DO-178B中對(duì)于CC1、CC2的具體配置管理目標(biāo)詳見標(biāo)準(zhǔn)的7.3節(jié)。
表2提供了上述內(nèi)容與DO-178B關(guān)于軟件配置管理各項(xiàng)活動(dòng)的符合性說明。
表2 與DO-178B的符合性對(duì)照
[1]美國(guó)航空無線電技術(shù)委員會(huì).RTCA DO-178B—機(jī)載系統(tǒng)和設(shè)備合格審定中的軟件考慮[S].美國(guó):航空無線電技術(shù)委員會(huì),1992:45-50.
[2]陳紹宇,趙建軍.RTCA DO-178B標(biāo)準(zhǔn)與相關(guān)國(guó)軍標(biāo)的對(duì)照分析[J].航空電子技術(shù),2009,40(1):48 -52.
[3]董勇.未雨綢繆理解軟件配置管理[M].北京:電子工業(yè)出版社,2008.
[4]張海波.軟件配置管理及其過程實(shí)現(xiàn)[J].艦船電子工程,2004,24(5):64 -68.
[5]瓦茨S漢弗萊.軟件過程管理[M].北京:清華大學(xué)出版社,2002.
RTCA DO-178B作為民用航空領(lǐng)域軟件研發(fā)的標(biāo)準(zhǔn),它的出現(xiàn)為提高航空軟件的安全性及可靠性提供了保障。上述內(nèi)容探討了滿足DO-178B軟件研發(fā)過程要求的配置管理技術(shù),詳細(xì)闡述了開展各項(xiàng)軟件配置管理活動(dòng)的具體方法與策略,并提供了與DO-178B中相關(guān)要求的符合性說明,所有這些希望能為軟件行業(yè)的配置管理人員提供一定的借鑒和參考。