汪智超,周 媛,張 旸
(1.海軍裝備部駐武漢軍事代表局,湖北 武漢 430000;2.海軍航空大學(xué),遼寧 葫蘆島 12500;3.海軍研究院,北京 100000)
在現(xiàn)代軟件工程中,軟件工具廣泛應(yīng)用于軟件研制過程中,軟件工具的使用可以幫助實(shí)現(xiàn)軟件研制過程中的部分活動,包括開發(fā)、驗(yàn)證、管理和支持等活動。可靠的軟件工具可以大大提高軟件的開發(fā)效率,并且在正確使用相關(guān)工具的條件下,還有望提高軟件的質(zhì)量,減少人為錯誤。然而,如果由于軟件工具本身存在錯誤(缺陷)或者未能正確地使用工具,導(dǎo)致研制出的軟件出錯,或者不能發(fā)現(xiàn)軟件中的錯誤,則將帶來嚴(yán)重的安全隱患;并且由于工具的功能日益強(qiáng)大,人工有時已經(jīng)無法對工具的輸出進(jìn)行直接的判別。
民用飛機(jī)時刻以“安全性”為最高要求,為了保證達(dá)到預(yù)期的安全性水平,往往不惜犧牲效率和其他性能。就民機(jī)機(jī)載軟件研制過程中使用的工具來說,風(fēng)險也是顯而易見的,主要原因在于:工具的輸出中隱藏的錯誤往往更加分散,難以發(fā)現(xiàn),難以通過手工的方式排查并加以修正;當(dāng)同樣的工具用于多個項(xiàng)目中時,同樣的錯誤將被成批地復(fù)制。
為了規(guī)避“工具應(yīng)用”給民機(jī)機(jī)載軟件帶來的風(fēng)險,確保軟件工具能夠提供被其省略、減少或自動實(shí)現(xiàn)的活動的等效審定信用,在適航審定過程中,通常采用將機(jī)載軟件的要求延伸到相關(guān)工具中的方法,這一方法也稱為“工具鑒定”。在DO-178B/C《機(jī)載系統(tǒng)和設(shè)備合格審查中軟件方面的考慮》描述了工具鑒定的相關(guān)考慮。為了更好地指導(dǎo)工具鑒定在機(jī)載軟件研制過程中的實(shí)施,RTCA發(fā)布了DO-178C標(biāo)準(zhǔn)的補(bǔ)充文檔之一DO-330《軟件工具鑒定的考慮》,作為軟件工具鑒定相關(guān)考慮的指南。本文結(jié)合DO-178B/C以及DO-330,對機(jī)載軟件研制過程中的工具鑒定要求和方法進(jìn)行研究探討。
軟件工具是指用來幫助開發(fā)、轉(zhuǎn)換、測試、分析或者修改其他程序及其數(shù)據(jù)或者文檔的計算機(jī)程序或者功能部件。本文中的軟件工具是指在機(jī)載軟件研制過程中所使用到的工具軟件。
軟件工具廣泛應(yīng)用于機(jī)載軟件的開發(fā)、驗(yàn)證和管理控制等多個領(lǐng)域和過程。根據(jù)軟件工具支持的軟件生命周期過程,可將軟件工具分為軟件開發(fā)工具、軟件驗(yàn)證工具和其他工具:軟件開發(fā)工具是指用于實(shí)現(xiàn)軟件開發(fā)過程(包括軟件需求過程、軟件設(shè)計過程、軟件編碼過程、集成過程)活動的工具;軟件驗(yàn)證工具是用于實(shí)現(xiàn)軟件驗(yàn)證過程活動(主要包括評審、分析和測試)的工具;其他工具主要指軟件生命周期中的管理和支持工具,用于實(shí)現(xiàn)軟件開發(fā)過程和軟件驗(yàn)證過程之外的過程的活動,例如,軟件項(xiàng)目管理工具、問題報告管理工具、變更控制工具等。表1所示的是軟件生命周期中可能會使用到的一些常見工具及其分類。
如引言中所述,如果工具不當(dāng)?shù)貓?zhí)行了其預(yù)期的功能,工具中的錯誤可能會對軟件功能造成負(fù)面的影響。為了規(guī)避這種風(fēng)險并確保工具功能的完整性,應(yīng)該使用正確合理的研制流程來開發(fā)和驗(yàn)證軟件工具。
表1 軟件生命周期中常見的工具
工具鑒定是工具獲得合格審定信用必需的過程,其目的是建立對工具功能的信心,確保工具提供的置信度至少等同于被省略、縮減或者自動化的過程[1]。例如,在機(jī)載軟件驗(yàn)證過程中,對于“源代碼是否符合編碼標(biāo)準(zhǔn)”這一目標(biāo)(DO-178C附錄A中的表A-5#4),可以使用人工評審的方式來驗(yàn)證,或者使用源代碼靜態(tài)分析工具來驗(yàn)證。若使用源代碼靜態(tài)分析工具并且相信該工具,即不再對該工具輸出的驗(yàn)證結(jié)果進(jìn)行驗(yàn)證,那么需要對該工具驗(yàn)證源代碼是否符合編碼標(biāo)準(zhǔn)的這一功能進(jìn)行鑒定,以確保其提供的置信度至少等同于人工評審方式的置信度。
當(dāng)軟件生命周期中的某個過程活動通過工具來實(shí)現(xiàn)時,該過程活動的可信度可以通過對該工具的輸出按照DO-178B/C的要求進(jìn)行驗(yàn)證獲得,也可以通過對該工具進(jìn)行工具鑒定獲得。通常,審定機(jī)構(gòu)會有傾向性地建議使用鑒定的工具。
工具鑒定的意義是把重復(fù)性的驗(yàn)證活動轉(zhuǎn)化為一次性的工具鑒定活動。通過工具鑒定,可獲得該工具的審定信用,建立對該工具功能的信心。需要注意的是,工具鑒定獲取的審定信用僅在獲取批準(zhǔn)的項(xiàng)目范圍內(nèi)有效,即工具鑒定是在其所在的機(jī)載軟件合格審定過程中進(jìn)行且有效的。
軟件生命周期中會使用到很多軟件工具,但這不代表適航要求所有的軟件工具都要進(jìn)行工具鑒定。進(jìn)行工具鑒定會帶來人力和成本的消耗,因此需要判斷哪種情況下什么樣的工具需要進(jìn)行工具鑒定,才能避免不必要的人力和成本消耗。DO-178B/C給出了工具鑒定的必要性的判斷準(zhǔn)則,可以通過評估以下兩個問題來確定某個軟件工具是否需要進(jìn)行工具鑒定:
1) 工具是否省略、縮減或自動化了DO-178B/C中的過程活動;
2) 工具的輸出是否由其它驗(yàn)證活動根據(jù)DO-178B/C軟件驗(yàn)證過程的要求進(jìn)行了驗(yàn)證。
確定工具是否需要鑒定的判定過程如圖1[1]所示,項(xiàng)目中所有軟件開發(fā)和驗(yàn)證工具都需要一一進(jìn)行如下判定評估。需要注意的是,一個工具鑒定項(xiàng)目僅僅適用于一個特定系統(tǒng)的機(jī)載軟件項(xiàng)目,使用工具的目的和鑒定的考慮應(yīng)在支持該系統(tǒng)的軟件合格審定計劃(PSAC)中闡述。如果一個工具先前基于一個特定系統(tǒng)被鑒定過,當(dāng)該工具應(yīng)用于其他系統(tǒng)軟件的研發(fā)過程時,它應(yīng)該在新系統(tǒng)背景下被重新鑒定。
圖1 確定工具是否需要鑒定的判定流程圖
如果通過評估確定需要對某軟件工具進(jìn)行工具鑒定,依據(jù)DO-178C及DO-330標(biāo)準(zhǔn),可通過下列步驟來實(shí)施工具鑒定:
1) 首先,評估工具對軟件生命周期過程的影響,以確定工具鑒定的判定準(zhǔn)則(準(zhǔn)則1、2或3);
2) 其次,結(jié)合工具鑒定的判定準(zhǔn)則和軟件級別,確定工具鑒定級別(TQL1~TQL 5);
3) 最后,根據(jù)對應(yīng)TQL的工具鑒定準(zhǔn)則要求(依據(jù)DO-330工具鑒定的目標(biāo)要求),進(jìn)行工具鑒定。
需要注意的是,工具鑒定是伴隨著特定的機(jī)載軟件合格審定項(xiàng)目開展的。從上述工具鑒定的實(shí)施步驟中便可以發(fā)現(xiàn),工具在具體項(xiàng)目中的使用情況不同,就可能會導(dǎo)致對軟件生命周期過程的影響不同;工具所應(yīng)用的特定項(xiàng)目的軟件級別不同,對工具鑒定的級別也會造成影響。因此工具鑒定的審定屬于機(jī)載軟件審定過程的組成部分之一。
3.2.1 工具鑒定的判定準(zhǔn)則
DO-178C根據(jù)工具對軟件生命周期過程的影響不同,定義了3個工具鑒定的判定準(zhǔn)則[2]:
準(zhǔn)則1:工具的輸出是機(jī)載軟件的一部分,其使用結(jié)果可能會在機(jī)載軟件中引入錯誤;
準(zhǔn)則2:工具屬于自動化驗(yàn)證過程的工具,使用它可能會導(dǎo)致機(jī)載軟件中的一些錯誤沒能被發(fā)現(xiàn),并且它的輸出證明消除或者減少了如下活動:工具自動化驗(yàn)證過程以外的驗(yàn)證過程活動,或?qū)C(jī)載軟件有影響的開發(fā)過程。
準(zhǔn)則3:工具在其預(yù)期使用范圍內(nèi)未能檢測到錯誤。
這3條準(zhǔn)則是從上往下依次推進(jìn)的,即對于某軟件工具,應(yīng)首先判斷其使用的影響是否符合準(zhǔn)則1,如不符合,再對比是否符合準(zhǔn)則2,最后是準(zhǔn)則3。
準(zhǔn)則1適用于自動生成軟件開發(fā)過程(輸入/輸出格式不限)的部分輸出的工具,相當(dāng)于DO-178B中的軟件開發(fā)工具,其輸出是機(jī)載軟件的一部分,因而可能會對機(jī)載軟件引入錯誤。
準(zhǔn)則2和準(zhǔn)則3適用于驗(yàn)證機(jī)載軟件或其軟件生命周期數(shù)據(jù)、分析計算軟件特征等的所有工具。對應(yīng)于DO-178B中的軟件驗(yàn)證工具,其使用不會對機(jī)載軟件引入錯誤,但可能會導(dǎo)致檢測不到機(jī)載軟件中的部分錯誤。
3.2.2 確定工具鑒定級別
確定需要鑒定的工具及其適用的判定準(zhǔn)則后,需要結(jié)合機(jī)載軟件的軟件級別,確定其工具鑒定級別(TQL)[3]。不同的工具鑒定級別,對于工具鑒定準(zhǔn)則要求的嚴(yán)格程度不同,需要實(shí)現(xiàn)的活動和達(dá)成的目標(biāo)也有所不同。
工具鑒定級別(包括TQL-1到TQL-5)是基于工具使用在軟件生命周期中潛在影響和機(jī)載軟件級別所判定的。工具鑒定級別的劃分同軟件級別和判定準(zhǔn)則之間的對應(yīng)關(guān)系如表2所示:
表2 工具鑒定級別的劃分
在表2中,TQL-1是要求最嚴(yán)格的級別,TQL-5是要求最不嚴(yán)格的級別。
3.2.3 工具鑒定需滿足的鑒定準(zhǔn)則要求
DO-330針對不同的工具鑒定級別,明確地定義了工具鑒定需要滿足的工具鑒定準(zhǔn)則要求和滿足這些工具鑒定準(zhǔn)則要求需要實(shí)施的活動和指導(dǎo)意見,以及用于證明滿足這些工具鑒定準(zhǔn)則要求的生命周期數(shù)據(jù)。
本文前面章節(jié)中描述了軟件生命周期中軟件工具的工具鑒定判定準(zhǔn)則,以及工具鑒定級別的劃分。下面提供兩個實(shí)際的場景分析示例,來明確對于工具鑒定適航要求的實(shí)踐。
場景:在某項(xiàng)目中,軟件級別為“C級”,其軟件需求標(biāo)準(zhǔn)要求軟件高級需求文字描述中的“shall”必須為斜體字。使用這樣的工具:是word的插件,點(diǎn)擊按鈕,能夠找到所有不是斜體字的“shall”。
分析:首先,該工具能夠省略對高級需求在“shall”要求上面的評審過程,且它的輸出并沒有得到驗(yàn)證,所以可以判斷該工具需要鑒定。根據(jù)本文第3.2.1節(jié)的內(nèi)容進(jìn)行判斷,工具符合“準(zhǔn)則3”,結(jié)合軟件級別可以判斷出該工具鑒定級別應(yīng)該是“TQL-5”。因此需按照“TQL-5”級別要求進(jìn)行工具的鑒定。
場景:在某項(xiàng)目中,軟件級別為“B級”,其軟件設(shè)計標(biāo)準(zhǔn)要求軟件低級需求必須使用某形式化語言描述。使用了這樣的工具:如果軟件低級需求的描述符合該形式化語言的語法,它可以生成符合該低級需求的源代碼程序;如果軟件低級需求描述不符合該形式化語言的語法,它可以給出警告。
分析:這是一個綜合工具,擁有兩個不同的功能:檢查語法和生成源代碼。對于生成源代碼的功能,自動化了源代碼生成過程,所以可以判斷該工具需要鑒定。根據(jù)本文第3.2.1節(jié)的內(nèi)容進(jìn)行判斷,滿足“準(zhǔn)則1”,結(jié)合軟件級別可以判斷出該工具鑒定級別為“TQL-2”。對于檢查語法的功能,省略了驗(yàn)證過程,如果軟件驗(yàn)證過程中不對該工具檢查語法功能的輸出進(jìn)行驗(yàn)證,則可以判斷該工具需要鑒定,根據(jù)3.2.1節(jié)的內(nèi)容判斷,符合“準(zhǔn)則3”,結(jié)合軟件級別,可以判斷該工具鑒定級別為“TQL-5”。
注:對于這種“綜合工具”,包含了不同鑒定級別的多個功能,通常有兩種鑒定方法:①以最高的鑒定級別來鑒定整個工具;②把工具的各個功能按照各自的鑒定級別分開進(jìn)行鑒定。
工具鑒定依托一個特定的項(xiàng)目進(jìn)行,因此在一個項(xiàng)目中經(jīng)過鑒定的工具,在新的項(xiàng)目里使用時需要重新鑒定[4]。已鑒定工具的重用包括以下三種情況:未經(jīng)修改的已鑒定工具,操作環(huán)境發(fā)生改變的已鑒定工具和有其它變更的已鑒定工具(如TQL級別提高,工具自身版本變化)。
1) 未經(jīng)修改的已鑒定工具,需要同時滿足如下條件:
①工具在其它項(xiàng)目中已經(jīng)鑒定;
②本項(xiàng)目中的工具鑒定級別和以前的鑒定級別相同或更低;
③工具生命周期數(shù)據(jù)在上次鑒定后沒有發(fā)生改變;
④工具運(yùn)行環(huán)境與上次鑒定的項(xiàng)目相同;
⑤工具操作需求與上次鑒定的項(xiàng)目相同;
⑥申請人有權(quán)限訪問上次鑒定的數(shù)據(jù);
⑦使用上次鑒定數(shù)據(jù)支持的同一軟件版本。
上述條件只要有一個不滿足,則需要依據(jù)后兩個方案執(zhí)行。對于滿足上述所有條件的,需要在《軟件合格審定計劃》或《軟件工具鑒定計劃》中列明重用鑒定數(shù)據(jù)的意圖與合理性。
2) 運(yùn)行環(huán)境發(fā)生改變的已鑒定工具,需要做如下的分析:
①工具驗(yàn)證環(huán)境相對新的運(yùn)行環(huán)境來說是否具有代表性;
②《工具操作需求》中描述的工具運(yùn)行環(huán)境的兼容性需求是否完整,是否適用于新的工具運(yùn)行環(huán)境;
③工具安裝到新的環(huán)境后是否依然符合預(yù)定的軟件生命周期。
根據(jù)上述分析結(jié)果,明確定義需要(重復(fù))執(zhí)行的活動,并在《軟件合格審定計劃》和《軟件工具鑒定計劃》中描述上次鑒定以后發(fā)生的變化以及分析結(jié)果。
3) 有其它變更的工具,需要做如下的影響分析:
①工具操作需求;②工具需求;③工具設(shè)計描述;④工具源代碼;⑤工具開發(fā)環(huán)境和開發(fā)過程。
根據(jù)上述影響分析,明確定義需要重新驗(yàn)證的內(nèi)容。
本文針對DO-178B/C和DO-330中有關(guān)軟件工具鑒定的考慮,進(jìn)行了深入研究和詳細(xì)分解,明確了滿足適航要求的軟件工具鑒定實(shí)施方法與準(zhǔn)則,并提供了應(yīng)用示例參考和工具鑒定數(shù)據(jù)重用的方法,可為民機(jī)機(jī)載軟件研制過程中的工具鑒定工作提供有效的指導(dǎo)。