陳宣文, 馬 超, 馬 倩, 孟 強(qiáng)
(航空工業(yè)西安航空計算技術(shù)研究所,陜西 西安 710068)
1968年,在北大西洋公約組織(North Atlantic Treaty Organization,NATO)召開的軟件工程會議上,首次提出了軟件危機(jī)(Software Crisis)的概念[1]。會議上,Mcllroy 提交了一篇題為《Mass-Produced Software Components》的論文,首次提出了軟件構(gòu)件(Software Components)和構(gòu)件工廠等概念,指出軟件復(fù)用的一個重要基礎(chǔ)就是需要有充足的軟件構(gòu)件,NATO 制定了關(guān)于軟件復(fù)用的一套指導(dǎo)性標(biāo)準(zhǔn),其中就有關(guān)于構(gòu)件的定義和利用標(biāo)準(zhǔn)構(gòu)件來實現(xiàn)軟件復(fù)用的基本思路。2011年12月13日,美國航空無線電技術(shù)委員會(Radio Technical Commission for Aeronautics,RTCA) 正式發(fā)布了DO-331《Model-Based Development and Verification(基于模型的開發(fā)與驗證指南)》,標(biāo)志著該技術(shù)在工程應(yīng)用領(lǐng)域的成熟[2]。基于模型驅(qū)動的開發(fā)技術(shù)不僅在國外機(jī)載飛控、顯控軟件被廣泛運(yùn)用,在國內(nèi)民機(jī)軟件研制中也在推廣應(yīng)用。例如,新舟600、ARJ21等型號的顯控系統(tǒng)軟件研制采用了Simulink 模型開發(fā),C919 飛行顯控軟件研制也采用了SCADE 模型開發(fā)[3]。近年來,航空工業(yè)集團(tuán)及其各院所對軟件的重視程度不斷提升,提出軟件“三化”(通用化、系列化和組合化(模塊化)的要求[4]。美國國防部也為美空軍的軟件現(xiàn)代化進(jìn)程組建了越來越多的軟件工廠。目前,已有針對基于模型驅(qū)動的軟件開發(fā)技術(shù)、軟件構(gòu)件產(chǎn)品庫復(fù)用技術(shù)和軟件工廠流水線技術(shù)的探索研究和實現(xiàn),但是鮮見能把這三者有機(jī)結(jié)合在一起的方案。完整軟件生產(chǎn)模式使用了最先進(jìn)的基于模型驅(qū)動設(shè)計技術(shù),同時考慮了復(fù)用/定制功能,并且建設(shè)了規(guī)模化的構(gòu)件產(chǎn)品庫,在可視化的管理平臺上采用軟件工廠流水線模式。為進(jìn)一步提升型號飛行控制軟件開發(fā)效率、質(zhì)量和工程化能力,把已經(jīng)成為未來趨勢的基于模型的軟件開發(fā)設(shè)計技術(shù)運(yùn)用到軟件工廠的構(gòu)件庫建設(shè)中,并進(jìn)行規(guī)模化的應(yīng)用,開展了基于模型開發(fā)結(jié)合構(gòu)件庫的飛行控制軟件工廠的研究并加以實現(xiàn)。
首先,對傳統(tǒng)飛行控制軟件架構(gòu)進(jìn)行了分解,分析了飛行控制軟件構(gòu)件化的需求,給出了基于模型驅(qū)動開發(fā)構(gòu)件庫的基本概念,并與傳統(tǒng)軟件開發(fā)方法和過程進(jìn)行了對比分析;然后,針對飛行控制軟件快速開發(fā)需求,對飛行控制軟件進(jìn)行分層和領(lǐng)域構(gòu)件化分析,建立了軟件開發(fā)平臺框架,詳細(xì)討論了基于模型驅(qū)動開發(fā)的構(gòu)件庫支持的軟件工廠的關(guān)鍵技術(shù),提供了在可視化智能向?qū)渲脴?gòu)件的管理平臺快速形成飛行控制軟件整體解決方案的工程化能力。
飛行控制軟件駐留在飛控計算機(jī)中,接收飛機(jī)的姿態(tài)、速率、控制、導(dǎo)航、空速和發(fā)動機(jī)狀態(tài)等信號,進(jìn)行控制狀態(tài)選擇、控制律計算和余度管理工作,向伺服放大器和伺服回路輸出控制信號,向電子飛行儀表系統(tǒng)輸出狀態(tài)信號,實現(xiàn)對所有飛行控制功能的計算和管理,飛行控制軟件總體架構(gòu)如圖1所示。飛行控制軟件包括以下幾個部分。
圖1 飛行控制軟件架構(gòu)
① 地面支持軟件是一套支持嵌入式實時操作系統(tǒng)的開發(fā)環(huán)境,可以使用開發(fā)環(huán)境完成應(yīng)用程序的編譯、連接、加載和調(diào)試工作。
② 實時操作系統(tǒng)是飛控計算機(jī)的系統(tǒng)管理軟件,管理著系統(tǒng)中應(yīng)用軟件的工作過程和任務(wù)的執(zhí)行順序,具有快速實時響應(yīng)、異常/看門狗處理、多任務(wù)調(diào)度、動態(tài)存儲器管理、二進(jìn)制信號量、互斥信號量、消息隊列、系統(tǒng)時鐘、輔助時鐘支持能力和可剪裁能力。當(dāng)飛控計算機(jī)硬件發(fā)生變化,系統(tǒng)可通過板級支持包BSP增、減以及修改相應(yīng)的驅(qū)動程序,從而生成新的操作系統(tǒng)。
③ 飛行操作軟件是飛控的應(yīng)用層軟件,完成系統(tǒng)的啟動/關(guān)閉、任務(wù)管理、硬件管理、余度管理功能,根據(jù)離散量狀態(tài)選擇某一確定飛行模態(tài),進(jìn)行相應(yīng)控制律計算,通過D/A輸出將控制指令送給伺服放大器去控制舵機(jī)。
④ 自動駕駛儀系統(tǒng)機(jī)內(nèi)自檢測(Built-In Test,BIT),是計算機(jī)系統(tǒng)用于檢測系統(tǒng)各個硬件的功能和性能的所有軟件與硬件的總稱。BIT用于檢測計算機(jī)系統(tǒng)的功能和性能,可作為系統(tǒng)維護(hù)檢測與確認(rèn)故障的重要手段。
隨著多余度飛行控制軟件架構(gòu)規(guī)模和復(fù)雜度的急劇增加、安全性可靠性的要求大幅提高和軟件工程化管理要求的日益嚴(yán)格,傳統(tǒng)的飛行控制軟件開發(fā)過程中存在如下問題。
① 飛行控制軟件在需求分析階段不能有效進(jìn)行需求復(fù)用,在設(shè)計階段無法有效實現(xiàn)構(gòu)件復(fù)用,開發(fā)階段軟件人員對代碼僅僅是自發(fā)地選擇復(fù)用,沒有進(jìn)行提前規(guī)劃,這樣“復(fù)用”以后的軟件仍然需要進(jìn)行完整的單元、配置項測試和系統(tǒng)測試等過程驗證。
② 飛行控制軟件體系架構(gòu)中領(lǐng)域?qū)I(yè)相關(guān)的通用算法邏輯與型號定制算法邏輯沒有實現(xiàn)完全解耦,不具備良好的可擴(kuò)展性,導(dǎo)致在開發(fā)具體項目的飛行控制軟件時,往往需要根據(jù)項目特定需求對通用算法進(jìn)行適應(yīng)性更改,影響了軟件的可靠性,缺乏體系級別的復(fù)用。
③ 在飛行控制軟件的數(shù)據(jù)輸入端口,存在大量傳感器信號、離散開關(guān)信號和總線信號等復(fù)雜信號且交聯(lián)關(guān)系煩瑣,缺少可復(fù)用的高可靠飛行控制軟件基礎(chǔ)構(gòu)件,通過傳統(tǒng)人工編碼方式實現(xiàn)數(shù)據(jù)采集/還原工作量大且容易出錯。
④ 目前的飛行控制軟件與具體的機(jī)載操作系統(tǒng)、硬件驅(qū)動接口緊密關(guān)聯(lián),如果系統(tǒng)實驗環(huán)境不具備,缺乏仿真環(huán)境會使余度管理軟件難以進(jìn)行有效的早期驗證。
綜上所述,采用傳統(tǒng)的飛行控制軟件開發(fā)方式將導(dǎo)致“三化”成果無法融合,研制新的飛行控制軟件項目時手工選擇復(fù)用組織資產(chǎn)庫從頭開始研發(fā),效率低、風(fēng)險大,工具、數(shù)據(jù)獨(dú)立缺少集成,無法自動共享和建立關(guān)聯(lián)關(guān)系,數(shù)據(jù)操作切換頻繁,集成開發(fā)環(huán)境(Integrated Development Enviroment,IDE)與應(yīng)用無關(guān),領(lǐng)域支撐力度不夠。因此,需要在現(xiàn)有的能力基礎(chǔ)上,借鑒國外先進(jìn)技術(shù),學(xué)習(xí)和掌握新一代基于模型和構(gòu)件的軟件研發(fā)和管理技術(shù)(例如,模型開發(fā)仿真技術(shù)、可定制快速原型仿真技術(shù)、全模態(tài)綜合調(diào)試驗證技術(shù)、多團(tuán)隊統(tǒng)一開發(fā)和管理工具鏈技術(shù)的軟件流水線/工廠),將驗證充分的軟件模型和構(gòu)件放入數(shù)據(jù)/產(chǎn)品庫,后期研發(fā)時,只需逐級分解需求,根據(jù)需求配置、組裝已有的軟件模型和構(gòu)件即可,采用該方式開發(fā)的軟件復(fù)用度高、軟件缺陷率低,可以大幅提升軟件研發(fā)能力,提高軟件成熟度,滿足新一代產(chǎn)品研發(fā)需求。
為了提升飛行控制軟件的研制工程支撐能力,根據(jù)構(gòu)件的設(shè)計準(zhǔn)則,對飛行控制軟件功能、性能、軟件和硬件組成及接口關(guān)系進(jìn)行領(lǐng)域工程建模,對飛行控制軟件的共性通用部分和型號定制部分解耦后進(jìn)行分層和領(lǐng)域構(gòu)件化分析,如圖2所示。
圖2 飛行控制軟件構(gòu)架設(shè)計
① IDE內(nèi)核層。支持多目標(biāo)機(jī)的軟件編譯器、系統(tǒng)調(diào)試、結(jié)果觀測和結(jié)果記錄等功能的調(diào)試;支持多余度的動態(tài)加載器和固化器,為用戶提供目標(biāo)文件的燒寫固化、擦除、校驗、查詢校驗碼等功能,是軟件工廠開發(fā)平臺的基礎(chǔ)。
② 操作系統(tǒng)層。該層包括MSL設(shè)備管理器、OS內(nèi)核管理器和任務(wù)藍(lán)圖規(guī)劃。其中,MSL設(shè)備管理器可對串行通信構(gòu)件、網(wǎng)絡(luò)通信構(gòu)件、看門狗構(gòu)件、離散量構(gòu)件、模擬量構(gòu)件和總線通信構(gòu)件等進(jìn)行配置;OS內(nèi)核管理器包括時間觸發(fā)操作系統(tǒng)、實時分布式操作系統(tǒng)和分時分區(qū)操作系統(tǒng);任務(wù)藍(lán)圖規(guī)劃可根據(jù)選定的內(nèi)核,提供智能導(dǎo)向式內(nèi)核配置、任務(wù)規(guī)劃和速率組。
③ 領(lǐng)域設(shè)計層。通過推動軟件“三化”設(shè)計,形成系列的軟件“三化”構(gòu)件,按照領(lǐng)域構(gòu)件化設(shè)計思想進(jìn)行優(yōu)化設(shè)計,形成以同步構(gòu)件、交叉?zhèn)鬏敇?gòu)件、數(shù)據(jù)采集/還原構(gòu)件、余度管理構(gòu)件、BIT構(gòu)件、濾波器構(gòu)件和慣性結(jié)算構(gòu)件為代表的系統(tǒng)構(gòu)件和構(gòu)件設(shè)計器。
④ 型號定制層。該層為不可復(fù)用的功能提供基于模型設(shè)計和手工編碼的設(shè)計和導(dǎo)入入口。
對飛行控制軟件進(jìn)行分層和領(lǐng)域構(gòu)件化分析后,可以逐層進(jìn)行操作系統(tǒng)、領(lǐng)域設(shè)計和型號定制部分的需求分析和軟件設(shè)計,有效地分解和復(fù)用通用需求庫中的共性需求,完成完整的軟件需求分析過程。領(lǐng)域構(gòu)件應(yīng)形成底層模型庫和構(gòu)件庫,并可對構(gòu)件進(jìn)行選取與組裝,從而搭建完整的飛行控制軟件架構(gòu)。利用管理平臺相關(guān)的工具鏈生成飛行控制軟件的目標(biāo)程序和文檔,快速形成飛行控制軟件整體解決方案,最后可以依托操作系統(tǒng)與數(shù)據(jù)接口,并結(jié)合仿真數(shù)據(jù),即使在系統(tǒng)硬件環(huán)境不具備的情況下,也可以在早期有效地完成飛行控制軟件的驗證與測試。
2019年時任美空軍采辦、技術(shù)和后勤的助理部長威爾·羅珀稱“美空軍要在21世紀(jì)突破機(jī)載軟件工作方式的界限,為軍種開辟出新的道路并使軟件日益成為制勝優(yōu)勢的來源”。凱塞爾航線是美空軍首個軟件工廠,正式名稱是美空軍壽命周期第12支隊。該軟件工廠希望通過快速提高空軍軟件開發(fā)、采購和裝備速度,將長達(dá)數(shù)年的時間線縮短到幾個月,并在開發(fā)過程中節(jié)省資金。2022年2月,美國防部發(fā)布《國防部軟件現(xiàn)代化戰(zhàn)略》明確了美國軍方“建立美國防部全部門的軟件工廠生態(tài)系統(tǒng)的愿景目標(biāo)”,這時美空軍已經(jīng)建立了18個軟件工廠,如圖3所示??梢哉f在美國防部軟件現(xiàn)代化方面,美空軍已經(jīng)走在了前列[5]。
圖3 美軍18家軟件工廠在美國大陸分布圖
使用軟件工廠的生產(chǎn)流水線技術(shù)快速開發(fā)飛行控制軟件的目標(biāo)是在項目研制過程中直接使用被重用的構(gòu)件時,研制流程不再進(jìn)行需求分析、軟件設(shè)計、編碼、單元測試、軟硬件綜合測試、系統(tǒng)測試、軟件評測等重復(fù)工作;軟件開發(fā)人員有更多精力開展驗證、開發(fā)管理、軟件自動生成等關(guān)鍵性技術(shù)工作;促進(jìn)飛行控制軟件研制走上軟件產(chǎn)品化、標(biāo)準(zhǔn)化的道路,建立現(xiàn)代工業(yè)流水線生產(chǎn)模式的飛行控制軟件研制工廠[6-7]。
飛行控制軟件開發(fā)可以在模型驅(qū)動構(gòu)件化支持的軟件工廠管理平臺完成,軟件工廠管理平臺提供智能向?qū)Щ目梢暬渲昧鞒?,由開發(fā)者進(jìn)行構(gòu)件選取、配置來搭建飛行控制軟件架構(gòu)。IDE內(nèi)核層已經(jīng)固化使用方式,僅需要簡單配置實際參數(shù)就可以使用。遵循自底向上集成的原則,開發(fā)者按照開發(fā)流程順序進(jìn)行飛行控制軟件整體架構(gòu)的搭建,如圖4所示。首先,應(yīng)進(jìn)行操作系統(tǒng)的選型和配置,然后選取和配置領(lǐng)域構(gòu)件,最后完成型號定制部分。
圖4 飛行控制軟件工廠開發(fā)流程
3.1操作系統(tǒng)
3.1.1 MSL設(shè)備管理器
在飛行控制系統(tǒng)領(lǐng)域中,將在MSL設(shè)備管理層識別出的領(lǐng)域構(gòu)件按照操作系統(tǒng)構(gòu)件定義進(jìn)行了生成與發(fā)布,并將系統(tǒng)資源按照不同功能進(jìn)行劃分。MSL設(shè)備管理包括串行通信構(gòu)件、網(wǎng)絡(luò)通信構(gòu)件、看門狗構(gòu)件、離散量構(gòu)件、模擬量構(gòu)件、總線通信構(gòu)件、時鐘構(gòu)件、中斷處理構(gòu)件等CPU系統(tǒng)資源。
以總線通信構(gòu)件為例,系統(tǒng)總線資源構(gòu)件包括:① 低速串行總線構(gòu)件;② 1553B 總線構(gòu)件;③ 高速1394B 總線;④ 高速FC 總線構(gòu)件;⑤ 高速DMA 傳輸構(gòu)件;⑥ XML 能力構(gòu)件。
如果選用的操作系統(tǒng)是VxWorks,則與飛控系統(tǒng)底層設(shè)備相關(guān)的總線資源構(gòu)件均應(yīng)按照VxWorks 操作系統(tǒng)標(biāo)準(zhǔn)I/O 設(shè)備操作規(guī)范編寫,從而保證設(shè)備的操作接口的規(guī)范化。
以高速1394B總線為例,1394B總線領(lǐng)域構(gòu)件在VxWorks 5.5 構(gòu)件配置樹(Tornado 2.2集成開發(fā)環(huán)境)中的表現(xiàn)方式如圖5所示。
圖5 Tornado/VxWorks環(huán)境下1394B總線構(gòu)件的實現(xiàn)
3.1.2 操作系統(tǒng)內(nèi)核管理器
根據(jù)選定的內(nèi)核,提供智能導(dǎo)向式內(nèi)核配置、任務(wù)規(guī)劃和速率組可視化配置,為飛行控制軟件的應(yīng)用層提供支撐。在平臺上對任務(wù)完成執(zhí)行周期、任務(wù)參數(shù)、執(zhí)行時間和任務(wù)棧等屬性進(jìn)行配置,并將任務(wù)調(diào)度周期可視化顯示,如圖6所示。
圖6 任務(wù)調(diào)度管理配置
3.1.3 操作系統(tǒng)任務(wù)藍(lán)圖規(guī)劃
操作系統(tǒng)任務(wù)藍(lán)圖規(guī)劃如圖7所示,包括以下需要配置的內(nèi)容。
① 任務(wù)設(shè)置??蓪尤蝿?wù)、任務(wù)基礎(chǔ)速率、各個任務(wù)的速率設(shè)置和后臺任務(wù)進(jìn)行設(shè)置。
② 系統(tǒng)剩余時間設(shè)置。對系統(tǒng)剩余時間進(jìn)行設(shè)置,以滿足余量要求。
③ 健康監(jiān)控設(shè)置。健康監(jiān)控定義并分類飛控系統(tǒng)中所發(fā)生的錯誤,分別在3個層次(進(jìn)程級、分區(qū)級和模塊級)根據(jù)錯誤發(fā)生時的系統(tǒng)狀態(tài),執(zhí)行相應(yīng)的錯誤恢復(fù)策略。
④ 非屏蔽中斷設(shè)置。對系統(tǒng)各級非屏蔽中斷的屬性進(jìn)行設(shè)置,例如中斷號、中斷向量和連接中斷處理程序。
⑤ 高速緩存設(shè)置。對高速緩存總線的類型、余度配置、波特率等屬性進(jìn)行設(shè)置。
⑥ 系統(tǒng)同步設(shè)置。對系統(tǒng)工作的同步總線進(jìn)行設(shè)置,包括初始同步和周期同步。
圖7 系統(tǒng)任務(wù)藍(lán)圖規(guī)劃
在各領(lǐng)域共性構(gòu)件庫支持下,進(jìn)行領(lǐng)域構(gòu)件可視化配置,包括整體配置、信號輸入定義、總線及設(shè)備定義、離散量管理配置、數(shù)字量管理配置、傳感器管理配置、計算機(jī)管理配置、伺服器監(jiān)控配置、積分器均衡、故障記錄、故障碼定義、故障綜合等。
以傳感器管理配置為例,如圖8所示,對傳感器的以下各屬性進(jìn)行配置。
① 對傳感器信號的定義管理,包括新建、改名、確認(rèn)和刪除等操作。
② 傳感器信號余度配置,包括是否單信號工作,是否帶有自監(jiān)控信號、門限是否可變等。
③ 各余度傳感器監(jiān)控時延設(shè)置,主要對時延格式進(jìn)行設(shè)置。
④ 傳感器監(jiān)控所屬的表決速率組、監(jiān)控速率組,以及瞬時故障區(qū)設(shè)置等。
⑤ 傳感器信號出現(xiàn)故障時的運(yùn)算安全值策略預(yù)設(shè),可選擇表決值、歷史值、安全值和計算插值。
圖8 領(lǐng)域構(gòu)件配置
在具體領(lǐng)域進(jìn)行設(shè)計開發(fā)時,可以根據(jù)項目需求在領(lǐng)域構(gòu)件可視化配置界面進(jìn)行選型與配置,快速搭建飛行控制軟件解決方案。
在飛行控制軟件領(lǐng)域的具體應(yīng)用中,根據(jù)領(lǐng)域應(yīng)用的具體需求,在可視化界面完成參數(shù)化模塊配置后,構(gòu)件層在通用構(gòu)件庫中檢索相關(guān)構(gòu)件,進(jìn)行基于標(biāo)準(zhǔn)接口進(jìn)行構(gòu)件的快速復(fù)合組裝?;陬I(lǐng)域工程的領(lǐng)域構(gòu)件技術(shù)利用了領(lǐng)域工程的功能內(nèi)聚性和穩(wěn)定性等特點(diǎn),有利于提高軟件的復(fù)用效率和軟件質(zhì)量。
早期的飛行控制軟件開發(fā)方式是根據(jù)文字化、條目化的需求進(jìn)行自頂向下逐步分解、設(shè)計,之后手工編碼完成,這種項目開發(fā)方式的可視化和效率較為低下?,F(xiàn)在,由于經(jīng)常面臨緊迫的交付周期和激烈的團(tuán)隊競爭,設(shè)計、編碼和測試過程高度交叉,軟件的規(guī)模也日趨龐大,為了將軟件設(shè)計人員從復(fù)雜的編碼工作中解放出來,將工作的重心轉(zhuǎn)移到飛行控制軟件的安全性、可靠性等關(guān)鍵需求分析上,有必要采用更高效的軟件設(shè)計方式。
基于模型驅(qū)動的開發(fā)使用更接近于人的理解和認(rèn)識的模型,將需求與設(shè)計數(shù)據(jù)由文字描述的形式轉(zhuǎn)換為可視化的模型,有利于設(shè)計人員把注意力集中在系統(tǒng)工作邏輯相關(guān)的內(nèi)容,而不用過早考慮與平臺相關(guān)的實現(xiàn)細(xì)節(jié),并且在開發(fā)周期的早期驗證設(shè)計、測試用例和收集覆蓋率指標(biāo)。實現(xiàn)環(huán)節(jié)通過自動代碼生成和自動代碼檢查提高軟件質(zhì)量,并且可以運(yùn)用工具鏈?zhǔn)褂米詣釉O(shè)計的測試用例進(jìn)行測試和檢查。即使是當(dāng)前不可復(fù)用的定制部分,仍然采用復(fù)用規(guī)范過程進(jìn)行開發(fā)和管理,并在完成軟件測試后進(jìn)入產(chǎn)品目錄、構(gòu)件產(chǎn)品庫和模型庫。
模型驅(qū)動構(gòu)件可定制開發(fā)技術(shù)的優(yōu)點(diǎn)有:可顯著提升軟件按需定制和隨需應(yīng)變的能力,使流程、數(shù)據(jù)、規(guī)則、資源和界面等構(gòu)件要素實現(xiàn)了分離,減少了手工編程工作量,提高了軟件開發(fā)效率,降低了軟件開發(fā)和維護(hù)成本;降低對軟件開發(fā)人員要求,系統(tǒng)手工編程工作量的減少,使大部分軟件開發(fā)者能完成大部分模型定制工作;提高業(yè)務(wù)管理軟件的可靠性和可維護(hù)性,系統(tǒng)可靠性主要體現(xiàn)在模型定制、模型轉(zhuǎn)換和運(yùn)行支撐等工具的可靠性上,而傳統(tǒng)手工編程方式難以保證業(yè)務(wù)軟件的可靠性,同時會導(dǎo)致系統(tǒng)內(nèi)部和第三方測試的工作量增加。另外,當(dāng)業(yè)務(wù)需求發(fā)生變化時,只需調(diào)整相應(yīng)業(yè)務(wù)模型即可,系統(tǒng)可維護(hù)性也得到提高[8]。
針對具體項目的定制化需求,應(yīng)用模型化設(shè)計,通過模型與需求對接,提升軟件設(shè)計、仿真驗證,形成了模型標(biāo)準(zhǔn),納入軟件設(shè)計標(biāo)準(zhǔn),規(guī)范了軟件模型設(shè)計,制定的開發(fā)規(guī)范包括:① 《模型命名方法》;② 《模型安全性設(shè)計方法》;③ 《模型外觀設(shè)計方法》;④ 《狀態(tài)機(jī)設(shè)計方法》;⑤ 《模型輸入輸出方法》;⑥ 《模型庫的使用》。
基于模型開發(fā)的主流工具包括SCADE和MATLAB/Simulink等,SCADE以高安全性領(lǐng)跑于模型開發(fā)領(lǐng)域,代碼生成器KCG通過了航空領(lǐng)域的DO-330(TQL-1)、核能行業(yè)領(lǐng)域的IEC 60880(核安全級)、軌道交通領(lǐng)域的EN 50128(SIL-3)等標(biāo)準(zhǔn)并在高安全性行業(yè)應(yīng)用[9-10]; MATLAB/Simulink應(yīng)用廣泛,擁有眾多自帶模型庫、算法庫、控制系統(tǒng)、環(huán)境模型以及優(yōu)秀的專業(yè)協(xié)同設(shè)計兼容性,可以完成產(chǎn)品級別的聯(lián)合仿真、建模、設(shè)計、測試和報告平臺集成工作。以MATLAB/Simulink開發(fā)環(huán)境為例,基于模型的設(shè)計和形式化方法在符合DO-178C、DO-331、DO-333和DO-330的過程中,MathWorks工具可用于DO-178C項目的開發(fā)和驗證階段。Simulink?、Stateflow?和Requirements ToolboxTM被用于開發(fā)符合DO-331基于模型的開發(fā)和驗證的軟件。根據(jù)DO-331和DO-178C的要求,Simulink Report GeneratorTM用于提供設(shè)計描述文檔和跟蹤數(shù)據(jù)。通過Simulink CheckTM、Simulink TestTM、Simulink CoverageTM和Simulink Design VerifierTM對設(shè)計進(jìn)行驗證。使用MATLAB CoderTM、Simulink CoderTM和Embedded Coder?開發(fā)系統(tǒng)的源代碼。使用Simulink Code InspectorTM、Polyspace Bug FinderTM和Polyspace Code ProverTM對源代碼進(jìn)行驗證??蓤?zhí)行的目標(biāo)代碼的驗證是使用Simulink Test和Simulink Coverage以及處理器在環(huán)(Processor in the Loop,PIL)中的測試功能來執(zhí)行的。圖9為覆蓋DO-178C/DO-331 過程的MathWorks完整工具鏈路徑[11]。
圖9 覆蓋DO-178C/DO-331 過程的MathWorks工具鏈路徑圖
以飛控系統(tǒng)的工作狀態(tài)管理為例,飛行控制軟件在飛控系統(tǒng)工作全狀態(tài)下對5種工作狀態(tài)切換進(jìn)行驗證。在對邏輯實現(xiàn)內(nèi)容進(jìn)行分析的基礎(chǔ)上,利用Stateflow 來實現(xiàn)狀態(tài)切換,并與Simulink 有機(jī)結(jié)合,共同建立了駕駛儀工作狀態(tài)仿真和應(yīng)用,同時對Simulink/Stateflow/Model Advisor/Bug Finder工具鏈進(jìn)行了驗證使用,最后對模型自動生成的代碼進(jìn)行了優(yōu)化,整個工作狀態(tài)仿真過程和結(jié)果如圖10所示。由Stateflow 所建立的圖形化模型邏輯結(jié)構(gòu)簡潔、清晰,可用Simulink/Stateflow進(jìn)行早期驗證,提高開發(fā)效率,縮短開發(fā)時間,自動生成的代碼經(jīng)過驗證和檢查,表明其可滿足飛行/仿真要求。
圖10 飛行控制軟件工作狀態(tài)驗證仿真
綜上所述,對現(xiàn)有飛行控制軟件開發(fā)模式進(jìn)行了對比和分析,如表1所示。探索、研究和實踐目前是基于模型驅(qū)動構(gòu)件庫的軟件工廠的開發(fā)模式,采用了先進(jìn)的開發(fā)方法和手段,對飛行控制軟件的通用部分和領(lǐng)域部分進(jìn)行了解耦,在可視化智能化導(dǎo)向配置平臺的支持下,對模型開發(fā)形成的構(gòu)件庫可以進(jìn)行有效配置和復(fù)用,在軟件開發(fā)模式上和美軍軟件工廠模式保持同步,可以供業(yè)內(nèi)軟件研發(fā)單位參考,進(jìn)行工程化推廣應(yīng)用。
表1 幾種飛行控制軟件開發(fā)模式的對比
構(gòu)件產(chǎn)品庫的開發(fā)應(yīng)遵循一系列模型驅(qū)動構(gòu)件的開發(fā)規(guī)范,例如面向復(fù)用與共享的軟件需求分析規(guī)范、面向復(fù)用與共享的軟件構(gòu)件設(shè)計規(guī)范、代碼復(fù)用工作流程及管理規(guī)范、面向復(fù)用與共享的軟件測試工作規(guī)范等。
基于模型開發(fā)的構(gòu)件支持產(chǎn)品庫,在已經(jīng)擁有可復(fù)用構(gòu)件后,還應(yīng)保證設(shè)計開發(fā)人員能夠快速、容易地找到和理解,這就是構(gòu)件產(chǎn)品庫的主要作用。構(gòu)件產(chǎn)品庫是用于組織、存儲和管理可復(fù)用組件的。在建立構(gòu)件產(chǎn)品庫的同時,還需要建立配套的分類、檢索和復(fù)用的目錄,并可以對構(gòu)件進(jìn)行新建、檢索、更新和刪除的操作,以及對其進(jìn)行有效的配置管理[12-13]。
與傳統(tǒng)的飛行控制軟件開發(fā)流程相比,基于模型驅(qū)動構(gòu)件庫的軟件工廠的開發(fā)模式可以大幅提高飛行控制軟件的開發(fā)效率。在軟件工廠協(xié)同開發(fā)管理平臺的支持下,對飛行控制軟件進(jìn)行可視化分析和配置,可有效復(fù)用通用需求庫中的共性需求,并可針對項目專用需求進(jìn)行型號定制需求分析。在軟件設(shè)計階段,根據(jù)共性需求從通用領(lǐng)域構(gòu)件庫中進(jìn)行構(gòu)件選取與組裝;其次根據(jù)項目型號定制需求完成定制部分算法模型的開發(fā),快速形成飛行控制軟件整體解決方案,并且可以進(jìn)行早期驗證和測試。實踐證明,基于模型驅(qū)動構(gòu)件庫的軟件工廠的開發(fā)模式可以提高飛行控制軟件研發(fā)的安全性與可靠性,縮短軟件開發(fā)與驗證的周期。