鄺安玄,郭 勇,馮思桐
(航空工業(yè)西安航空計(jì)算技術(shù)研究所,陜西 西安 710076)
近年來(lái),數(shù)字電子和信息技術(shù)日益增進(jìn)的發(fā)展趨勢(shì),對(duì)機(jī)載設(shè)備的支持提出了具備復(fù)雜且全面的機(jī)載軟件新需求?,F(xiàn)代機(jī)載計(jì)算機(jī)應(yīng)該確保其操作的可靠性和機(jī)上人身安全[1-4]。數(shù)字化機(jī)載設(shè)備和系統(tǒng)的研發(fā)過(guò)程應(yīng)該確保飛機(jī)在臨界飛行條件下可靠運(yùn)行。例如在飛行員操控飛行期間,環(huán)境空氣壓力和溫度變化以及線(xiàn)性過(guò)載的情況;在惡劣天氣條件下,飛機(jī)臨近著陸時(shí),儀表降落系統(tǒng)軟件故障情況;以及在指示目標(biāo)/選擇武器類(lèi)型/戰(zhàn)斗飛行過(guò)程中頭盔武器控制系統(tǒng)損壞的情況。
為了嚴(yán)格滿(mǎn)足電子航空設(shè)備及其專(zhuān)用航空電子軟件開(kāi)發(fā)過(guò)程的可靠性相關(guān)要求,專(zhuān)家們制定了相關(guān)標(biāo)準(zhǔn),如軟件標(biāo)準(zhǔn)DO-178C,硬件標(biāo)準(zhǔn)DO-254,標(biāo)準(zhǔn)化支持文檔(ARP 4761和ARP 4754A),如圖1所示。
圖1 遵循標(biāo)準(zhǔn)DO-178C的航空電子設(shè)備和軟件的研發(fā)流程圖
標(biāo)準(zhǔn)ARP 4761是一套確保軟件達(dá)到一定可裝機(jī)標(biāo)準(zhǔn)的流程和技術(shù)。該標(biāo)準(zhǔn)以對(duì)飛機(jī)、機(jī)組、乘客的影響為評(píng)判準(zhǔn)則將失效狀態(tài)的危險(xiǎn)等級(jí)分為5類(lèi),并明確了各危險(xiǎn)等級(jí)失效狀態(tài)影響,如表1所示。標(biāo)準(zhǔn)ARP 4754A則是一套針對(duì)軟硬件的實(shí)用性系統(tǒng)要求。
表1 危險(xiǎn)等級(jí)失效狀態(tài)及影響
標(biāo)準(zhǔn)DO-178C是國(guó)際航空領(lǐng)域用于機(jī)載電子設(shè)備軟件研發(fā)和過(guò)程認(rèn)證的基礎(chǔ),由核心文件和補(bǔ)充文件兩部分組成(DO-331、DO-332、DO-333以及DO-330、DO-248C、DO-278A),這些標(biāo)準(zhǔn)定義了在軟件開(kāi)發(fā)過(guò)程中需要提供的附加需求和活動(dòng),具體取決于采用的實(shí)現(xiàn)技術(shù)如圖2。
圖2 DO-178C標(biāo)準(zhǔn)的組成部分
標(biāo)準(zhǔn)DO-331使用基于模型的開(kāi)發(fā)和驗(yàn)證描述軟硬件。計(jì)算編程算法或其他部分使用外部工具實(shí)現(xiàn)的,設(shè)計(jì)過(guò)程通過(guò)多組合的數(shù)學(xué)運(yùn)算執(zhí)行,需要經(jīng)過(guò)測(cè)試和驗(yàn)證,最終實(shí)現(xiàn)自動(dòng)生成基于軟件代碼的圖表。
標(biāo)準(zhǔn)DO-332適用于使用面向?qū)ο缶幊陶Z(yǔ)言(包括C++、Java、Ada)的項(xiàng)目。其根本目標(biāo)是驗(yàn)證軟件是否遵循三個(gè)核心技術(shù),即繼承、多態(tài)和動(dòng)態(tài)鏈接。此標(biāo)準(zhǔn)表現(xiàn)為,當(dāng)同名方法在相同的類(lèi)層次結(jié)構(gòu)中出現(xiàn)時(shí),調(diào)用相關(guān)的類(lèi)時(shí)會(huì)執(zhí)行適當(dāng)?shù)姆椒ā?/p>
標(biāo)準(zhǔn)DO-333對(duì)機(jī)載軟件安全性標(biāo)準(zhǔn)DO-178C關(guān)于形式化方法的補(bǔ)充,指出了需要形式化描述的軟件制品以及從中能獲得的驗(yàn)證證據(jù)。它是軟件開(kāi)發(fā)和驗(yàn)證過(guò)程適用的精確性技術(shù)。形式化方法描述了在軟件開(kāi)發(fā)、測(cè)試、啟動(dòng)和修改過(guò)程中對(duì)未經(jīng)驗(yàn)證的軟件工具的輸出進(jìn)行評(píng)估,從而驗(yàn)證其實(shí)用程度是否滿(mǎn)足安全性假設(shè)要求[1-3]。
標(biāo)準(zhǔn)DO-248C是DO-178C的補(bǔ)充文件,用于解釋其中難以理解和存疑的方面。
上述條件成為了建立支持機(jī)載軟件生命周期管理的基礎(chǔ)。
DO-178C規(guī)定了二十種軟件研制生命周期中產(chǎn)生的數(shù)據(jù),這些數(shù)據(jù)用來(lái)證明軟件實(shí)現(xiàn)了不同等級(jí)軟件在不同階段所設(shè)定的目標(biāo)。審定局方就是通過(guò)審查這些輸出數(shù)據(jù)來(lái)評(píng)估申請(qǐng)人軟件研制流程中目標(biāo)的實(shí)現(xiàn)情況,軟件研制生命周期數(shù)據(jù)及簡(jiǎn)要說(shuō)明見(jiàn)表2所示。
表2 軟件研制生命周期數(shù)據(jù)及簡(jiǎn)要說(shuō)明
機(jī)載軟件的生命周期與多種不同類(lèi)型的關(guān)聯(lián)性任務(wù)的實(shí)現(xiàn)相關(guān),其目標(biāo)是設(shè)計(jì)和開(kāi)發(fā)滿(mǎn)足訂購(gòu)方要求的符合質(zhì)量的軟件,同時(shí)確保所設(shè)計(jì)的軟件達(dá)到所需的安全級(jí)別[4-6]。
標(biāo)準(zhǔn)DO-178C定義了三個(gè)主要過(guò)程,即軟件規(guī)劃、開(kāi)發(fā)和集成。在被選領(lǐng)域內(nèi)三大過(guò)程是并發(fā)的,這意味著一個(gè)過(guò)程的開(kāi)始不必在前一個(gè)過(guò)程完成后進(jìn)行。例如,對(duì)已編碼的軟件部件進(jìn)行測(cè)試可以在全部編碼完成階段之前開(kāi)始。
軟件生命周期模型有很多,模型中的主要階段包括收集需求和分析,軟件設(shè)計(jì)、開(kāi)發(fā)、測(cè)試和實(shí)現(xiàn)。這些階段都允許回退到以前狀態(tài),允許執(zhí)行任務(wù)之間的交互,這在檢測(cè)需要修復(fù)的軟件問(wèn)題時(shí)是尤為重要的[7-10]。
軟件規(guī)劃涉及與計(jì)劃和標(biāo)準(zhǔn)相關(guān)的過(guò)程,在此之后軟件開(kāi)發(fā)將遵循這些過(guò)程。在此階段,標(biāo)準(zhǔn)DO-178C定義了五個(gè)主要計(jì)劃和三個(gè)軟件標(biāo)準(zhǔn),以及軟件認(rèn)證所需的其他文檔,見(jiàn)章節(jié)2。
生命周期各階段關(guān)鍵節(jié)點(diǎn)符合性證據(jù)評(píng)審是根據(jù)DO-178C標(biāo)準(zhǔn)相關(guān)章節(jié)對(duì)應(yīng)要求,對(duì)各級(jí)別軟件各階段需生成的生命周期數(shù)據(jù)進(jìn)行技術(shù)評(píng)價(jià)的活動(dòng)。
軟件生命周期數(shù)據(jù)評(píng)審是根據(jù)項(xiàng)目進(jìn)展需求(試驗(yàn)節(jié)點(diǎn)、項(xiàng)目問(wèn)題、評(píng)審要求等),對(duì)軟件某一項(xiàng)或幾項(xiàng)生命周期數(shù)據(jù)進(jìn)行的技術(shù)評(píng)價(jià)活動(dòng)。
軟件開(kāi)發(fā)過(guò)程包括了四個(gè)過(guò)程:
·軟件需求過(guò)程,高層需求(HLRs)的開(kāi)發(fā);
·軟件設(shè)計(jì)過(guò)程,底層需求(LLRs)和基于高層需求的軟件架構(gòu)的開(kāi)發(fā);
·編碼過(guò)程,創(chuàng)建源代碼和非集成的目標(biāo)代碼;
·軟件集成過(guò)程,包括將軟件整合成可執(zhí)行程序的形式,并與外部設(shè)備集成。
HLRs是基于系統(tǒng)架構(gòu)和系統(tǒng)需求實(shí)現(xiàn)的。HLRs包括時(shí)間波形、內(nèi)存管理、與外部設(shè)備的連接、響應(yīng)和檢測(cè)錯(cuò)誤的方法、系統(tǒng)運(yùn)行監(jiān)控和軟件分區(qū),以及與外部設(shè)備的連接描述,數(shù)據(jù)流的定義和方式,通信機(jī)制和軟件組件。
編碼過(guò)程是將LLRs轉(zhuǎn)換為源代碼和預(yù)編譯的目標(biāo)代碼。集成過(guò)程包括編譯和合并編譯后的代碼到可執(zhí)行應(yīng)用程序(一或多個(gè)),并將該軟件嵌入到機(jī)載設(shè)備上。
軟件開(kāi)發(fā)過(guò)程決定一個(gè)或多個(gè)系統(tǒng)需求級(jí)別。軟件需求過(guò)程利用軟件生命周期過(guò)程輸出來(lái)創(chuàng)建高層需求。軟件需求數(shù)據(jù)定義高層需求,包括訂購(gòu)方提出的需求。這些數(shù)據(jù)應(yīng)該包括軟件系統(tǒng)需求分配的描述,具體數(shù)據(jù)應(yīng)涉及安全要求和潛在的錯(cuò)誤條件,每個(gè)運(yùn)行模式的功能和操作要求,性能標(biāo)準(zhǔn)(如精度和準(zhǔn)確性),與時(shí)間相關(guān)的要求和限制,內(nèi)存大小限制,硬件和軟件接口(例如協(xié)議,格式,輸入/輸出頻率),錯(cuò)誤檢測(cè),安全監(jiān)控,以及軟件分區(qū)的要求(分離的軟件組件如何協(xié)作)和各組件的軟件級(jí)別。
機(jī)載軟件設(shè)計(jì)過(guò)程的輸入包括軟件需求、軟件開(kāi)發(fā)計(jì)劃和軟件設(shè)計(jì)標(biāo)準(zhǔn)。如果滿(mǎn)足了計(jì)劃的轉(zhuǎn)換標(biāo)準(zhǔn),則在制造過(guò)程中使用高層需求來(lái)創(chuàng)建軟件架構(gòu)和底層需求。這些過(guò)程的基本輸出是設(shè)計(jì)描述,包含軟件架構(gòu)和底層需求。數(shù)據(jù)應(yīng)該包括軟件如何滿(mǎn)足高層需求的詳細(xì)描述,算法和數(shù)據(jù)結(jié)構(gòu),以及軟件需求如何與過(guò)程和任務(wù)相對(duì)應(yīng)。它還應(yīng)該提供定義軟件結(jié)構(gòu)的軟件架構(gòu)描述,包括實(shí)現(xiàn)的需求、輸入/輸出描述(例如數(shù)據(jù)字典、設(shè)計(jì)中的數(shù)據(jù)和控制流)、資源限制、資源及其限制的管理策略、邊距以及測(cè)量邊距的方法(例如時(shí)間和內(nèi)存,排序程序)。描述應(yīng)該包括內(nèi)處理器和任務(wù)內(nèi)通信機(jī)制,包括固定的中斷時(shí)間序列,設(shè)計(jì)方法,以及它們的實(shí)現(xiàn)細(xì)節(jié)(例如軟件加載)。描述的一個(gè)重要元素是用戶(hù)修改的軟件、分區(qū)方法和防止分區(qū)破壞的措施,以及軟件組件的描述(無(wú)論它們是新的還是以前制造的)和對(duì)下載它們的基準(zhǔn)版本的引用。該描述還應(yīng)該包括軟件設(shè)計(jì)過(guò)程中產(chǎn)生的派生需求。如果一個(gè)系統(tǒng)包含一個(gè)非激活代碼,則在與其安全性相關(guān)的系統(tǒng)需求中直接包含用于在目標(biāo)計(jì)算機(jī)上激活該代碼的安全措施的描述和設(shè)計(jì)決策的證明。當(dāng)軟件設(shè)計(jì)過(guò)程的目標(biāo)和相關(guān)集成過(guò)程的目標(biāo)實(shí)現(xiàn)時(shí),軟件設(shè)計(jì)過(guò)程即完成。在軟件編碼過(guò)程中,源代碼是基于軟件架構(gòu)和底層需求實(shí)現(xiàn)的。編碼過(guò)程輸入是來(lái)自軟件設(shè)計(jì)過(guò)程、軟件開(kāi)發(fā)計(jì)劃和軟件編碼標(biāo)準(zhǔn)的底層需求和軟件架構(gòu)。軟件編碼過(guò)程可以在滿(mǎn)足計(jì)劃的轉(zhuǎn)換標(biāo)準(zhǔn)時(shí)開(kāi)始。源代碼是在這個(gè)過(guò)程中開(kāi)發(fā)的,并基于系統(tǒng)架構(gòu)和底層需求。在集成過(guò)程中,使用目標(biāo)計(jì)算機(jī)和來(lái)自軟件編寫(xiě)的源代碼來(lái)編譯、合并和加載數(shù)據(jù);其目的是整合航空電子系統(tǒng)或其設(shè)備組成部分。
集成過(guò)程包括了四個(gè)詳細(xì)的過(guò)程:
·軟件認(rèn)證期的溝通;
·軟件認(rèn)證的需求管理;
·軟件認(rèn)證中的驗(yàn)證;
·軟件認(rèn)證的質(zhì)量評(píng)估。
認(rèn)證期溝通過(guò)程是成功完成軟件認(rèn)證的一個(gè)必不可少的環(huán)節(jié),涉及申請(qǐng)人和認(rèn)證機(jī)構(gòu)之間的持續(xù)合作和溝通,貫穿于整個(gè)軟件生命周期。申請(qǐng)人需要確定定義軟件滿(mǎn)足基本認(rèn)證要求的合規(guī)性措施。
需求管理過(guò)程涵蓋了所有用于軟件開(kāi)發(fā)和驗(yàn)證的數(shù)據(jù)和文檔,同樣貫穿于整個(gè)軟件生命周期。管理需求在軟件開(kāi)發(fā)階段識(shí)別、組織和控制變更,其目標(biāo)是在最小化錯(cuò)誤的同時(shí)達(dá)到最高的效率。需求管理方法與機(jī)載設(shè)備損毀程度相關(guān)。
軟件驗(yàn)證過(guò)程包括檢測(cè)和描述從軟件規(guī)劃階段到開(kāi)發(fā)階段引入的錯(cuò)誤。
質(zhì)量評(píng)估過(guò)程用于證明軟件符合假定要求和標(biāo)準(zhǔn),即產(chǎn)品滿(mǎn)足訂購(gòu)方的期望。軟件質(zhì)量評(píng)估是一個(gè)持續(xù)的過(guò)程,它從計(jì)劃階段開(kāi)始一直持續(xù)到開(kāi)發(fā)和測(cè)試階段,直到最終產(chǎn)品交付[4]。
本文詳細(xì)描述了DO-178C標(biāo)準(zhǔn)中三個(gè)主要工程過(guò)程——軟件規(guī)劃、開(kāi)發(fā)和集成。整個(gè)軟件研制過(guò)程通過(guò)過(guò)程來(lái)實(shí)現(xiàn)目標(biāo),通過(guò)過(guò)程來(lái)產(chǎn)生軟件生命周期數(shù)據(jù),同時(shí)通過(guò)軟件生命周期數(shù)據(jù)來(lái)證明實(shí)現(xiàn)的目標(biāo)。機(jī)載軟件生命周期管理方法進(jìn)行的分析和設(shè)計(jì)工作所得到的結(jié)果,對(duì)飛機(jī)飛行期間的機(jī)載軟件安全性起到重要的保障作用。本文限于篇幅未對(duì)不同等級(jí)軟件在不同階段要實(shí)現(xiàn)的目標(biāo)進(jìn)行概論。