陳 福,牟 明,戴小氐,段海軍,徐 明
(中航工業(yè)西安航空計算技術(shù)研究所 19室,陜西 西安 710065)
?
機載大規(guī)模復雜軟件開發(fā)及驗證技術(shù)
陳福,牟明,戴小氐,段海軍,徐明
(中航工業(yè)西安航空計算技術(shù)研究所 19室,陜西 西安710065)
摘要針對航空電子系統(tǒng)結(jié)構(gòu)綜合化、硬件共享化、功能軟件化引發(fā)軟件規(guī)模、復雜度指數(shù)級上升的趨勢,分析了軟件開發(fā)、軟件綜合以及軟件測試的困難和挑戰(zhàn),并從開發(fā)技術(shù)、測試驗證技術(shù)和項目管理3個維度,結(jié)合模型驅(qū)動開發(fā)、軟件復用、虛擬仿真驗證、DO-297規(guī)范、CMMI等技術(shù)和管理方法,為機載大規(guī)模復雜軟件開發(fā)及驗證提供了解決方案,提高軟件的可靠性,縮短軟件的研發(fā)周期。
關(guān)鍵詞機載大規(guī)模;模型開發(fā);軟件復用;虛擬仿真
Development and Verification of Large-scale and Complex Airborne Software
CHEN Fu,MU Ming,DAI Xiaodi,DUAN Haijun,XU Ming
(Unit 19,AVIC Xi’an Aero Institute of Computing Technology,Xi’an 710065,China)
AbstractThe difficulties and challenges for software development due to the exponential growth of software size and complexity with the rapid development of integrated modular avionics systems are analyzed.The development,testing and verification techniques and project management are discussed.The techniques of MDA,software reuse,virtual simulation,DO-297,and CMMI are employed to provides a solution for the development and verification of large-scale and complex Airborne software in an attempt to improve the reliability and shorten the development cycle of software.
Keywordsairborne;large-scale;model development;software reuse;virtual simulation
半個世紀以來,科學技術(shù)的飛速發(fā)展、戰(zhàn)場環(huán)境的日益嚴峻和作戰(zhàn)需求的不斷升級,加速了航空電子技術(shù)的更新?lián)Q代。航空電子系統(tǒng)結(jié)構(gòu)經(jīng)歷了從最初的分立式航空電子系統(tǒng)、聯(lián)合式航空電子系統(tǒng),到綜合化航空電子系統(tǒng)的發(fā)展過程,正迅速朝著結(jié)構(gòu)綜合化、硬件共享化、功能軟件化和信息網(wǎng)絡化的方向發(fā)展,設備的體積功耗重量不斷下降。與此同時,以往許多由硬件實現(xiàn)的功能都交由軟件來實現(xiàn),導致軟件規(guī)模和復雜度呈指數(shù)級增長。美國的第二代戰(zhàn)機F-111D,軟件規(guī)模為5萬行代碼,航空電子系統(tǒng)功能的20%為軟件實現(xiàn);第三代戰(zhàn)機F-16A,軟件規(guī)模為12.8萬行代碼,航空電子系統(tǒng)功能的40%為軟件實現(xiàn);第四代戰(zhàn)機中,F-22的機載軟件規(guī)模達500萬行代碼,而F-35的機載軟件規(guī)模則更是高達近1 000萬行,航空電子系統(tǒng)功能的80%為軟件實現(xiàn)。國外研究數(shù)據(jù)表明,機載軟件的代碼量正以每10年超過200%的速度在快速增長,讓機載軟件研制面臨嚴峻的考驗。
1軟件開發(fā)面臨的新挑戰(zhàn)
機載軟件規(guī)模、復雜度的指數(shù)級增長,不僅造成軟件研發(fā)工作量的劇增,還將軟件研發(fā)難度和技術(shù)、成本風險提高到了危機邊緣。
(1)開發(fā)效率與成本問題。據(jù)國外權(quán)威統(tǒng)計數(shù)據(jù),對于A級軟件的手工開發(fā)效率為平均32行/天/人。據(jù)此計算,要開發(fā)一個代碼規(guī)模為100萬行的A級軟件,需要一個人干118年,而實際機載軟件交付周期大多不超過兩年時間,因此需要60名開發(fā)人員并行工作才能在兩年內(nèi)完成。按照國外IT公司的平均薪酬標準,工程師每小時工時費為110美元,則要完成全部軟件開發(fā)就需要3 800萬美元。若再將8%管理成本及系數(shù)為1.1的風險因素考慮在內(nèi),僅軟件研發(fā)費用就高達4 500萬美元。未來,代碼行上億的超大規(guī)模軟件將越發(fā)常見,數(shù)億乃至數(shù)十億的開發(fā)成本將會是對軟件研制單位的重大挑戰(zhàn);
(2)需求管理問題。機載軟件規(guī)模猛增,與之對應的需求條目數(shù)也急劇增加。以某個具有100萬行代碼規(guī)模的飛行顯示器軟件為例,其需求條目數(shù)達到了33 000條,按照每頁10條需求計算,高層需求將近3 300頁。如此大規(guī)模的需求數(shù)目,要做到每條需求均定義完整、清晰,可行可驗證,難度較高。同時,需求的追蹤和變更成為巨大的管理負擔;
(3)軟件缺陷問題。國際上,機載軟件千行代碼缺陷率平均水平在4‰~5‰之間。對于安全關(guān)鍵軟件,要求達到0.1‰~1‰??刂栖浖毕萋实碾y度,隨著軟件的規(guī)模和復雜度的增大而大幅增加。對于小規(guī)模的機載軟件(5 000行有效代碼以下),還能憑借開發(fā)人員的經(jīng)驗和能力控制軟件缺陷率。但對于大規(guī)模復雜軟件,安全性可靠性要求很高,不在開發(fā)技術(shù)上有所突破和提升,并借助軟件需求管理工具、建模仿真工具、代碼靜態(tài)分析和動態(tài)測試工具、安全性分析工具等,根本無法保證軟件質(zhì)量;
(4)系統(tǒng)綜合問題。大規(guī)模復雜軟件,往往包含多個軟件配置項,分由多家研制單位承擔。各個配置項獨立開發(fā)、獨立測試,實現(xiàn)各自的功能,并提供對外交互的接口,最后由總體單位將所有的軟件配置項綜合到一起,進行系統(tǒng)綜合測試。由于各承研單位的軟件研制能力參差不齊,軟件開發(fā)有關(guān)的標準和規(guī)范也不統(tǒng)一,導致系統(tǒng)綜合十分困難,各個軟件配置項的兼容性問題層出不窮。此外,諸多之前未暴露的軟件問題在系統(tǒng)綜合時會大量暴露,大量的分析故障、排除故障工作將極大影響系統(tǒng)綜合的進度;
(5)測試驗證問題。軟件的安全性可靠性一方面要靠規(guī)范完善的開發(fā)過程支撐,另一方面也需充分的驗證來保證。軟件開發(fā)生命周期中驗證的工作量常達到50%以上,在一些特定領(lǐng)域甚至高達80%。而航電系統(tǒng)機載軟件功能大幅增多,代碼規(guī)模、復雜度指數(shù)級增長的同時,影響范圍也在急劇增大,要求對機載軟件尤其是對各子系統(tǒng)集成進行全面充分的驗證,驗證的工作量在軟件開發(fā)生命周期中所占比例將進一步提高。同時,如圖1所示,在軟件開發(fā)生命周期中,70%的軟件問題產(chǎn)生于需求和設計階段[1],但一般只有3.5%的問題能在這兩個階段被發(fā)現(xiàn)和消除,大部分問題要到單元集成和集成測試階段才被發(fā)現(xiàn)。而編碼階段后的問題的修復代價是需求和設計階段修復問題代價的4~44倍。
圖1 軟件開發(fā)各階段引入和消除問題概率及消除難度
2應對措施和關(guān)鍵技術(shù)
在機載軟件大規(guī)模、高安全、高可靠的背景下,如何解決目前軟件開發(fā)所面臨的挑戰(zhàn)成為業(yè)界研究熱點。近年來,國內(nèi)外眾多專家學者都進行了大量的研究和實踐工作,誕生了眾多新的開發(fā)技術(shù)和工具,同時也逐步形成了相關(guān)的標準和規(guī)范。
2.1開發(fā)技術(shù)方面
(1)基于需求的管理。在機載軟件開發(fā)生命周期中,需求管理是一個獲取需求、定義需求、分析需求、條目化需求、實現(xiàn)需求和驗證需求的過程,并在開發(fā)及驗證的各個階段對需求進行追蹤。正確的獲取和定義需求,能避免或有效減少后續(xù)環(huán)節(jié)的無用功,能夠做到有的放矢,保證需求分析、軟件架構(gòu)設計、部件設計、詳細設計、編碼、測試和驗證都緊緊圍繞系統(tǒng)對軟件的需求這一中心點開展,保證軟件的開發(fā)效率和質(zhì)量。好的需求須滿足條目化、惟一性、可標識、正確性、完整性、清晰性、一致性、可驗證性、可追蹤性、可配置型、模塊化、正義性和設計無關(guān)性等要求。同時,針對每一條需求,在開發(fā)過程并行開展測試驗證工作,保證在交付集成之前每個軟件單元都滿足相應的質(zhì)量要求;
(2)基于模型的開發(fā)。模型開發(fā)是一種以軟件模型為驅(qū)動,以軟件模型構(gòu)建、模型驗證、自動代碼生成為主線的開發(fā)方式。隨著嵌入式軟件規(guī)模的迅速擴張與功能的日益復雜,手工編碼方式日益成為軟件研發(fā)的瓶頸。軟件工程的關(guān)注點不再局限于使用文本化的代碼編輯器和調(diào)試器等進行嵌入式系統(tǒng)的開發(fā),轉(zhuǎn)而使用諸如模型開發(fā)技術(shù)等新一代軟件開發(fā)技術(shù)。以模型為中心的基于MDA的軟件開發(fā)模式在大規(guī)模復雜軟件項目中越來越展現(xiàn)出卓越的問題解決能力和強大的生命力。在機載大規(guī)模復雜軟件研發(fā)中,航電、機電、飛控等子系統(tǒng)的領(lǐng)域建模及其驗證技術(shù)、模型庫構(gòu)建及管理技術(shù)等[2],成為研究重點;
(3)完整的工具鏈。開發(fā)工具是軟件開發(fā)過程中不可或缺的要素。各個開發(fā)階段都有相應的開發(fā)工具,輔助該階段開發(fā)活動,提高效率。但各種工具之間往往無法兼容,前一階段工具所產(chǎn)生的數(shù)據(jù),無法導入后一階段的工具,這大幅影響了軟件開發(fā)效率,沒有形成工具的集合效能。對軟件研發(fā)過程中所涉及的需求分析、建模、仿真及測試驗證等工具進行有效集成,打通工具間的數(shù)據(jù)接口,形成統(tǒng)一的開發(fā)工具集,實現(xiàn)工具的規(guī)范化和統(tǒng)一應用,將會大幅提高軟件研發(fā)效率和質(zhì)量;
(4)軟件復用。隨著機載軟件規(guī)模和復雜度的迅猛增長,傳統(tǒng)的以新開發(fā)為主的方式,顯然無法滿足研發(fā)周期和成本控制等要求。軟件復用是解決此問題的有效途徑之一。軟件復用是指重復使用“為了復用目的而設計的軟件”的過程,其體現(xiàn)了軟件工程思想的一種轉(zhuǎn)變,即從建立單一的系統(tǒng)到建立一系列相似或相關(guān)的系統(tǒng)。實踐證明,有效的軟件復用可提高軟件開發(fā)的效率和質(zhì)量。軟件復用包括兩個過程:可復用軟件(構(gòu)件)的開發(fā)(Development for Reuse)和基于可復用軟件(構(gòu)件)的應用系統(tǒng)構(gòu)造(集成和組裝)(Development with Reuse)。關(guān)鍵因素如圖2所示。
圖2 實現(xiàn)軟件復用的關(guān)鍵因素
2.2測試驗證技術(shù)方面
(1)基于虛擬環(huán)境的仿真驗證[3]。利用虛擬環(huán)境仿真驗證技術(shù),可以擺脫真實硬件設備的依賴,在尚不具備硬件條件的情況下,也能提供一個數(shù)字化的軟件開發(fā)和驗證平臺,進行軟件的開發(fā)和調(diào)試,實現(xiàn)軟硬件并行開發(fā),將軟件技術(shù)驗證工作提前,提高技術(shù)成熟度[4]。其次,利用虛擬環(huán)境仿真驗證技術(shù),便于制造各種故障模式,進行軟件故障注入,調(diào)試軟件的故障檢測、容錯重構(gòu)功能[5]。此外,虛擬環(huán)境仿真驗證還可完成眾多在真實硬件環(huán)境下具有較高破環(huán)性或危險性的測試驗證工作。圖3為引入虛擬仿真驗證技術(shù)的前后對比;
圖3 引入虛擬仿真驗證技術(shù)前后
(2)集成測試驗證方面。DO-297規(guī)范為綜合化大規(guī)模軟件的測試驗證提供了方法指南。綜合化大規(guī)模軟件多采用分區(qū)操作系統(tǒng),具有多個應用和大量任務,應采取自底向上增量式集成測試的策略,如圖4所示。根據(jù)DO-297規(guī)范要求,綜合化大規(guī)模軟件的驗證和確認,作為綜合化模塊化機載系統(tǒng)開發(fā)、綜合過程的一個重要組成部分,必須伴隨系統(tǒng)的綜合過程同步進行。避免前一個階段的缺陷到后一個階段放大或疊加,引發(fā)更大范圍的缺陷[6]。
圖4 綜合化大規(guī)模軟件測試策略
2.3項目管理
“軟件系統(tǒng)的質(zhì)量受制于開發(fā)和演化其所用過程的質(zhì)量”,解決軟件質(zhì)量問題的根本措施之一是提高軟件過程能力。國外廣泛使用CMMI(Capability Maturity Model Integration,能力成熟度模型集成)來加強項目管理,并取得了豐碩成果。國外某著名軟件公司推行CMMI后,項目開發(fā)效率提高了62%,計劃偏離控制在了20%以內(nèi),研發(fā)周期縮短36%,產(chǎn)品交付后的千行代碼缺陷率降到了1‰以下。運用先進的項目管理方法,也是機載大規(guī)模復雜軟件研發(fā)的必然要求。
3結(jié)束語
綜合化模塊化航空電子系統(tǒng)技術(shù)的發(fā)展,使機載軟件的規(guī)模和復雜度呈現(xiàn)出指數(shù)級的增長,也給傳統(tǒng)的機載軟件研制模式和流程造成了巨大的沖擊,新一輪軟件危機隨時可能爆發(fā),機載軟件業(yè)界已到了必須變革的危險時刻。因此,需從軟件開發(fā)技術(shù)、軟件測試驗證技術(shù)、軟件項目管理3方面同時入手,緊盯國際前沿技術(shù),掌握多領(lǐng)域建模、模型轉(zhuǎn)換、模型量化評估、模型復用、組合式仿真、多學科多項目協(xié)同開發(fā)等技術(shù),建立模型庫和仿真試驗資源庫,以適應機載大規(guī)模復雜軟件的研制要求。
參考文獻
[1]陳小峰.可信平臺模塊的形式化分析和測試[J].計算機學報,2009,32(4):646-653.
[2]張霖,張雪松,宋曉,等.面向復雜系統(tǒng)仿真的模型工程[J].系統(tǒng)仿真學報,2013,25(11):2729-2736.
[3]蔣崇武,楊順昆,劉斌.面向嵌入式軟件測試的仿真建模[J].計算機工程,2008,34(4):87-89.
[4]陳西選,徐珞,曲凱,等.仿真體系結(jié)構(gòu)發(fā)展現(xiàn)狀與趨勢研究[J].計算機工程與應用,2014,50(9):32-36,40.
[5]侯春燕,崔剛,劉宏偉.基于率的構(gòu)件軟件可靠性過程仿真[J].軟件學報,2011,22(11):2749-2759.
[6]周燕,宋敬華.面向?qū)ο蟮募蓽y試順序的研究[J].計算機測量與控制,2010,18(9):2014-2015,2018.
中圖分類號TP311.5;V243
文獻標識碼A
文章編號1007-7820(2016)03-190-04
doi:10.16180/j.cnki.issn1007-7820.2016.03.050
作者簡介:陳福(1984—),男,工程師。研究方向:機載嵌入式軟件研發(fā)和軟件工程。
基金項目:國家重大專項基金資助項目(2012ZX01041-006);航空支撐技術(shù)預研基金資助項目(619010604)
收稿日期:2015- 08- 10