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