• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      面向需求高動態(tài)變化的強適應性可信飛行軟件設計方法

      2022-08-25 10:46:38黃萬偉方建平
      導彈與航天運載技術 2022年4期

      高 飛,黃萬偉,楊 威,吳 潤,方建平

      (1. 北京航天自動控制研究所,北京,100854;2. 中國運載火箭技術研究院,北京,100076)

      0 引 言

      某項目高度融合科學與工程,以工程產(chǎn)品為基礎探索科學邊界為目標,要求工程產(chǎn)品需根據(jù)科學探索目標不同進行研制。不同于傳統(tǒng)運載火箭、導彈武器圍繞特定任務開展研制,產(chǎn)品研制周期長、目標統(tǒng)一,針對最終產(chǎn)品進行質(zhì)量測試及鑒定等特點,該項目并行目標多、變化頻率高,階段間產(chǎn)品可繼承性弱、階段產(chǎn)品交付頻率高等。

      工程產(chǎn)品的質(zhì)量對于科學探索目標的實現(xiàn)具有“0-1”式?jīng)Q定作用,要求“萬無一失”。飛行控制軟件是航天型號的核心產(chǎn)品,它的質(zhì)量直接決定著航天飛行的成敗。此類研制過程要求飛行軟件需求隨著每一次飛行試驗探索驗證目標的不同而發(fā)生較大的變化,導致在進行飛行控制軟件設計時,新一次飛行試驗用的軟件對之前的軟件繼承性相對較少,需要根據(jù)探索目標的不同不斷重新設計軟件,在快速迭代交付的要求下,工作量大且存在質(zhì)量風險。因此,在有限的時間資源條件下確保軟件能夠快速適應新需求、確保軟件的可信性、最大程度繼承前序研制工作的成果就成了影響此類航天項目目標是否能夠順利達成的關鍵問題。

      針對這樣的研制特點,從技術角度出發(fā),對傳統(tǒng)型號飛行控制軟件的設計方法進行了比較,并從中歸納出最小化功能加接口的抽象子集模型,從而在此基礎上對傳統(tǒng)飛行控制軟件設計思路進行重新整合定義,形成一套面向高動態(tài)需求變化的強適應高擴展性飛行控制軟件架構(gòu)策略,讓飛行控制軟件的架構(gòu)更加適應后續(xù)類似的需求高動態(tài)變化、階段產(chǎn)品可信可交付等極限開發(fā)的要求。

      1 傳統(tǒng)飛行軟件設計

      傳統(tǒng)航天領域飛行控制軟件研制以瀑布模型為基礎,通過定義軟件需求明確了全軟件生命周期中的統(tǒng)一功能目標,分解該功能目標后,針對每一個需求子目標設計模塊或?qū)嶓w對象,然后對所有模塊集合或?qū)ο蠹线M行組裝,形成在特定環(huán)境中可以正常運行的軟件。隨后通過獨立測試,保證軟件正確實現(xiàn)了需求定義的所有功能點,滿足規(guī)定的性能要求,并具有一定的可靠性和安全性。

      李蘭蘭等提出一種基于構(gòu)件的運載器控制系統(tǒng)飛行軟件設計方法,其從加大重用率的角度將常用的功能點定義為功能構(gòu)件,通過對功能構(gòu)件的重用來提高飛行控制軟件的研制效率。但該方法假設部分功能點保持不變,無法適應功能發(fā)生變化的設計要求。薛恩對飛行軟件復雜性進行了分析,并從降低復雜性的角度論述了采用瀑布模型和敏捷開發(fā)各自優(yōu)點,同時指出,瀑布模型在需求改變時較難修改設計以適應變化,而敏捷開發(fā)又會在每次迭代引入新的限制,排除一些未來功能或增加和引入新的復雜度。宋征宇提出了雙CPU 環(huán)境下飛行控制軟件的設計方法,從可靠性提升的角度提出了如何利用雙CPU 克服在飛行過程中出現(xiàn)CPU 出錯、程序跑飛以及數(shù)據(jù)出錯等問題,并補充提出了此類飛行控制軟件的可靠性設計方法。馬衛(wèi)華討論了飛行控制軟件可靠性設計的通用原則。賀彥博等從通用化的角度討論了飛行軟件的框架設計。

      這些飛控軟件設計方法大部分是直接從需求出發(fā),以需求功能點為設計焦點,對每個功能進行封裝,并通過對封裝接口的設計來兼容需求功能點的變化。但此類設計方法的兼容能力僅局限在具體細節(jié)特征上,如時序處理的時間和類型、判據(jù)閾值的選擇、硬件端口的適配等。通過前期設計可以將這些易變的細節(jié)定義為接口參數(shù),從而通過對接口參數(shù)的調(diào)整,兼容這些變化,但對于功能需求的高頻大幅變化的問題還沒有成熟通用的解決方案。

      根據(jù)以科學探索為目的的航天工程的特點及其對飛行控制軟件研制功能需求變化大、質(zhì)量要求高、交付頻率高的要求,從框架適應性,功能適應性,設計可信性的角度出發(fā),根據(jù)需求的專業(yè)類型不同對需求進行切分分層設計,著眼于需求的可調(diào)整性、高適應性,接口的高適配性以及功能的可配置性,提出了功能數(shù)據(jù)對象化的理念,形成了一套面向高動態(tài)需求變化的強適應性高擴展性飛行控制軟件設計方法。

      與以往的設計方法不同,本文所提出的方法主要在分層解耦架構(gòu)設計,并以控制邏輯數(shù)據(jù)化、控制流程配置化、功能模塊獨立化為設計思路來解決需求中的功能點的大幅度高頻率變化。對于需求中功能點的變化,通過針對性在不同層次進行適應性更改,同時保持其他層穩(wěn)定的方法,將變化的影響限制在最小范圍,讓軟件中已有的實現(xiàn)和質(zhì)量保證工作得到繼承,大大提高了研發(fā)的效率。為了更好的獲得層間獨立性和功能點解耦的目標,本文在制導、姿控的封裝,硬件接口定義方面做出了改進??尚判栽O計通過逐層設計與逐層驗證相配合的方式確保軟件的可信性,簡化了軟件可信性設計的過程,在設計過程中即確保了軟件的質(zhì)量,體現(xiàn)了“設計質(zhì)量”在設計中實現(xiàn)的思想,從軟件設計本身大大提高了在高速迭代下軟件功能、質(zhì)量的適應性,為可信性軟件設計在航天領域的應用走出了探索性的一步。

      2 分層抽象的軟件結(jié)構(gòu)

      2.1 適應需求高動態(tài)變化的層次化架構(gòu)

      需求的變化通常分為4 個層次:算法變化、邏輯功能變化、硬件環(huán)境變化、系統(tǒng)交互環(huán)境變化。例如由飛行軌道和氣動外形變化引起的制導算法的變化、由電氣安全性變化引起的I/O 時序指令的變化、由芯片變更引起的硬件接口的變化以及由協(xié)同設備交互邏輯變化引起的系統(tǒng)輸入輸出需求發(fā)生變化。

      為了應對需求變化,將從需求到產(chǎn)品的設計實現(xiàn)過程抽象為以理論模型、實現(xiàn)模型、產(chǎn)品模型、系統(tǒng)產(chǎn)品為階段性產(chǎn)品的4 個漸進式研制子過程。理論模型是求解問題的基本算法理論在理想化條件下運行的實驗模型,其定義了產(chǎn)品的理論可行性;實現(xiàn)模型是軟件的基本功能在理想條件下運行的實驗模型,其定義了產(chǎn)品的實現(xiàn)可行性;產(chǎn)品模型是軟件在特定芯片環(huán)境下運行的實驗模型,其定義了產(chǎn)品的工程可行性;系統(tǒng)產(chǎn)品即為最終達到交付質(zhì)量標準的產(chǎn)品。

      封裝的思想源于面向?qū)ο箢I域,其最大的優(yōu)點在于:保持模塊與模塊、對象與對象、層與層之間接口不變的條件下,模塊內(nèi)部、對象內(nèi)部及層內(nèi)部的實現(xiàn)方式發(fā)生變化后不影響集成后的功能。根據(jù)4 個漸進研制子階段的定義,將飛行軟件的模塊封裝為4 個層次,也對應需求的4 個漸進層次。當不同層次的需求變化時,將軟件更改限制在對應的層次中,同時也縮小了變更的影響域,從而讓變更更有針對性、影響域更可控。

      傳統(tǒng)的飛行控制軟件主要負責的功能包括:導航設備敏感信息獲取,導航計算,制導律計算,姿控指令計算,時序控制,自毀控制,轉(zhuǎn)級轉(zhuǎn)段等功能。通過分析傳統(tǒng)飛行軟件的實現(xiàn)方式并結(jié)合以科學探索為目標的航天型號特點,將飛行軟件抽象為如圖1 所示的抽象層次化模型。

      圖1 飛行軟件抽象層次模型Fig. 1 Abstraction Hierarchy of Flight Software

      為了能夠靈活、快速適應不同專業(yè)、不同層次的需求變更,將需求按照運行層次,即下層為上層的運行環(huán)境,上層為下層的任務輸入和運行對象,進行抽象化分類。在抽象層次化模型中,算法層對應制導、姿控和導航3 個專業(yè)的技術需求,綜合控制層對應著電氣綜合專業(yè)的技術需求,硬件層對應著芯片及模塊技術手冊規(guī)范。接口封裝層的部分功能實現(xiàn)了軟件間通信數(shù)據(jù)幀的封裝和解包功能。通過需求專業(yè)分類和層次化抽象結(jié)構(gòu)的封裝,就實現(xiàn)了各專業(yè)、各層次的需求可以進行獨立更改,同時對其他專業(yè)需求實現(xiàn)部分影響最小化的要求。

      根據(jù)以科學探索為目標的航天型號算法變化較大,芯片及硬件運行環(huán)境變化較小的特點,用接口封裝層將上層的技術要求與底層的運行環(huán)境分離開來,從而獲得了需求與硬件環(huán)境的獨立性;將算法層與綜合控制層分離開來,從而獲得了軟件邏輯架構(gòu)和制導姿控算法的獨立性;將導航計算、制導計算以及姿控計算分離開來,獲得了導航、制導及姿控3 個專業(yè)功能的獨立性。

      2.2 制導功能的封裝設計

      由于導航計算和制導計算關系較為緊密,邏輯耦合度較高,因此,為了減少運行過程中的通信開銷,將導航和制導兩部分功能封裝為1 個模塊——制導模塊。制導功能主要封裝為慣性數(shù)據(jù)解算模塊、導航計算模塊、運動參數(shù)計算模塊、制導率計算模塊、轉(zhuǎn)段控制計算模塊。各模塊接口如圖2 所示。

      圖2 制導模塊封裝Fig. 2 Encapsulation of Guidance Module

      其中慣性數(shù)據(jù)解算對應慣性敏感器件,若慣性敏感器件不發(fā)生變化,則該模塊亦無須發(fā)生變化;導航計算通常會根據(jù)解算的慣性數(shù)據(jù)計算各個通用飛行坐標系下的位置、速度、姿態(tài)等基礎參數(shù),該模塊屬于基本理論范疇,當輸入慣性器件增量接口保持不變時,本部分通常不會變化;運動參數(shù)計算模塊對應于航天飛行器專用定義的一些坐標系參數(shù)計算、氣動參數(shù)以及控制參數(shù)計算,該模塊根據(jù)不同的控制需求計算不同的參數(shù)。因此該模塊屬于需求適應模塊,在軌道、控制方式等發(fā)生變化后,該模塊容易發(fā)生相應的變化;制導律計算用于計算制導指令,該部分會隨制導控制方法的變化而變化;轉(zhuǎn)段控制計算模塊通常會根據(jù)飛行軌道的不同段所采用的不同控制方法而進行變化,通常計算結(jié)果為軌道上的分段點信息。這些模塊整合后形成制導功能模塊的封裝包,輸出制導指令作為姿控模塊的輸入部分。

      2.3 姿控功能的封裝設計

      姿控模塊根據(jù)制導輸入的制導指令完成計算飛行器姿態(tài)控制設備動作指令的功能。該部分根據(jù)控制機構(gòu)不同,根據(jù)輸入處理的過程分為:偏差計算,控制段計算、控制指令計算、設備動作指令計算、執(zhí)行機構(gòu)輸出限制幾個模塊。具體的流程如圖3 所示。

      圖3 姿控模塊封裝Fig.3 Encapsulation of Attitude Control Module

      其中偏差計算部分主要通過計算當前運動參數(shù)與制導指令之間的差異來供后續(xù)姿態(tài)控制指令計算模塊使用。該模塊通常對制導輸入做一定的預處理,在飛行軌道不發(fā)生巨大變化的情況下,該模塊不發(fā)生變化??刂贫斡嬎隳K主要考慮姿態(tài)控制能夠兼容的控制方法類別,通過該模塊來進行切換,通常與不同的飛行方式相關。當飛行軌道確定后,姿控控制段計算模塊通常不發(fā)生變化。執(zhí)行機構(gòu)指令計算模塊將根據(jù)不同的姿態(tài)控制硬件設備的驅(qū)動和接口進行封裝,僅僅根據(jù)硬件設備不同會有少許變化。

      2.4 硬件接口封裝式設計

      硬件接口是和底層運行的芯片特征關系較為緊密,為了保證上層算法邏輯功能層的穩(wěn)定性,在硬件層上面插入一層邏輯硬件層,從而向上屏蔽芯片、總線等硬件具體細節(jié),維持上層的獨立性。圖4 說明了硬件邏輯層的設計狀態(tài)。

      圖4 從軟件設計層架構(gòu)到軟件實施層架構(gòu)Fig.4 From Design Architecture to Implementation Architecture

      其中,硬件描述層對芯片的細節(jié)進行描述,邏輯硬件層將其封裝起來,將功能層與硬件層獨立開來,并使功能層能夠“看到”的硬件控制接口保持不變,從而就解放了功能層以上的部分,使其具有更大的設計獨立性,與底層的硬件細節(jié)變化實現(xiàn)了完全解耦。

      2.5 具有可信性的質(zhì)量結(jié)構(gòu)

      對于以飛行理論探索為目的的航天工程設計飛行軟件來說,快速迭代是一個顯著的特點。在這種快速迭代的情況下,無法提供按照傳統(tǒng)的軟件開發(fā)設計流程完成工作所要求的時間,這給產(chǎn)品的質(zhì)量保證提出了嚴峻的挑戰(zhàn)?;谇笆鲕浖軜?gòu)的層次化結(jié)構(gòu),可以容易確認更改的影響層范圍,從而通過層次化增量測試的策略,將測試范圍限定在測試層內(nèi),有效提升軟件的可測試性以及測試的效率和效果。

      根據(jù)從理論模型到實現(xiàn)模型,到產(chǎn)品模型和系統(tǒng)產(chǎn)品的設計層次,將可信性驗證架構(gòu)定義為算法層、功能匹配層、芯片層以及系統(tǒng)接口層,通過在不同層次針對性對軟件進行可信性、可測試性設計,使軟件在相應層次上達到可被驗證的最小子集,從而分層實現(xiàn)對軟件可信性的驗證。

      可信性層次化設計及驗證結(jié)構(gòu)如圖5 所示。

      圖5 可信性層次化設計及驗證結(jié)構(gòu)Fig.5 Validation Hierarchy of Software Trustworthiness

      算法層是一個僅包括導航、制導和姿控算法的模塊子集,其對應的輸入和輸出僅為算法運算的結(jié)果。算法層可信性驗證要求對算法相關模塊進行高內(nèi)聚,與功能層間定義清晰的接口,方便易于從產(chǎn)品模塊中單獨剝離出來,嵌入到以PC 機+VS 仿真其功能層接口的數(shù)學仿真驗證環(huán)境中,從而針對算法來定義的輸入輸出來驗證算法的有效性和適應性。輸入輸出可以直接定義存儲到外部存儲(如文件)中,用以將算法層的執(zhí)行結(jié)果與各專業(yè)的理論結(jié)果進行對比。通過此層的驗證,確保軟件中的算法層具有可信級實現(xiàn)質(zhì)量。在此層,所有算法運行的平臺均為PC 機等于軟件實際運行的目標環(huán)境獨立的驗證,因此其不涉及和硬件相關的任何接口及細節(jié),聚焦了驗證的范圍,提高了驗證的效率。

      功能匹配層可信性是通過補充綜合控制功能如通信控制、時序控制、邏輯控制、自毀管理等功能,讓算法層的輸出結(jié)果更接近產(chǎn)品的輸出結(jié)果,讓產(chǎn)品實現(xiàn)完成從理論模型到實現(xiàn)模型的轉(zhuǎn)化。該層基于功能層和邏輯硬件層的范圍,定義清晰的接口,從而便于“算法層+功能層”可以從軟件產(chǎn)品中剝離出來,對軟件產(chǎn)品中功能層及其以上的部分進行仿真驗證。本層同樣在虛擬驗證環(huán)境中,如PC 機環(huán)境中,對邏輯硬件層進行等效,以邏輯硬件層的輸出形式定義針對功能層的輸入輸出(如將算法層可信性驗證所需的輸入輸出的變量集合形式變?yōu)闀r序邏輯定義、高層總線協(xié)議等形式),對實現(xiàn)模型的程序結(jié)果進行驗證。在驗證過程中,可以通過確認算法層輸出的正確性對問題的范圍進行確認,從而縮小驗證的范圍,提高驗證的效率。

      芯片層可信性則是將集成算法層后的功能層“放到”虛擬芯片中運行,來檢查產(chǎn)品模型的實現(xiàn)有效性。該可信性驗證要求邏輯硬件層與真實硬件層間接口清晰,能夠?qū)⑿酒瑢右陨系牟糠謴能浖袆冸x出來,嵌入到等效硬件環(huán)境和芯片的虛擬環(huán)境中進行驗證。該層虛擬驗證環(huán)境通過模擬硬件描述層的輸出(如將功能匹配層可信性驗證所需的時序邏輯定義、高層總線協(xié)議等形式的輸入變?yōu)橐杂布壿嫳硎镜腎/O 變量形式、總線通信層協(xié)議等),來驗證軟件在芯片上的邏輯行為與預期的一致性,從而保證該層的可信性。在出現(xiàn)超預期偏差時,通過確認功能匹配層的輸出正確性,縮小化問題定位的范圍,提高驗證效率。

      系統(tǒng)接口層可信性則是將上述產(chǎn)品模型的軟件變?yōu)檐浖a(chǎn)品,放入真實的硬件環(huán)境中進行驗證。其主要針對軟件實現(xiàn)的最下層——硬件描述層進行驗證,確保軟件在真實環(huán)境中的硬件接口匹配性、響應性能、與系統(tǒng)中其他軟件的功能匹配性等進行驗證。同樣可以通過芯片層的輸出正確性,來縮小定位問題的范圍,從而提高軟件的驗證效率。

      從上述各層次的實現(xiàn)過程可以看出,后一層只需在前一層的基礎上通過增加新的驗證層內(nèi)容、代替前一層輔助部分就可以得到。因此,在設計的過程中,需要對上下兩層的替換內(nèi)容和增加內(nèi)容進行設計即可逐層確認每層設計的可信性,最終實現(xiàn)飛行控制軟件的可信性。

      3 實施效果及應用前景分析

      軟件缺陷密度(千行代碼缺陷率),是一個評價軟件產(chǎn)品質(zhì)量的重要指標。缺陷率越低,則軟件研制質(zhì)量越高。以軟件第三方測評中統(tǒng)計的千行代碼缺陷率為測量指標,可以對軟件的研制質(zhì)量及其在整個型號的多次交付過程中的變化趨勢進行分析。

      本文提出的飛行軟件層次化架構(gòu)在某項目中得到應用,在每次飛行方案的變化過程中,涉及軟件代碼更改量高達70%以上,其中包括了制導、姿控的算法變化,綜合控制時序的變化等,圖6 說明了軟件在歷次產(chǎn)品交付過程的缺陷密度的變化情況。從圖6 中可以看出,在最初一次變更后交付后,本文所述的軟件架構(gòu)逐步成熟起來,從千行代碼缺陷率4.64,下降至2.96 左右,相對于行業(yè)內(nèi)典型型號,缺陷率下降非常明顯。軟件很好地適應了這些狀態(tài)變化,保證了較高的質(zhì)量。

      圖6 某實踐項目軟件缺陷率統(tǒng)計Fig.6 Defect Rate of Some Aerospace Software System

      在軟件質(zhì)量要求不變的情況下,軟件交付頻率高,對軟件開發(fā)人員的生產(chǎn)率要求較高。軟件生產(chǎn)率指的是交付達到質(zhì)量標準的軟件產(chǎn)品代碼行的效率。本文所述的結(jié)構(gòu)化設計方法通過分層設計、分層影響分析以及分層實現(xiàn)和可信性驗證保證,大大提升了軟件人員的編碼效率。圖7 展示了本文架構(gòu)在多輪高頻次交付過程中生產(chǎn)率的變化情況。從圖7 中可以看出,軟件在最初幾次交付后,軟件的生產(chǎn)率很快有了明顯的提升,甚至在軟件規(guī)模增大的情況,生產(chǎn)率依然保持了較高水平。

      圖7 某實踐項目軟件研制效率統(tǒng)計Fig.7 Development Efficiency of Some Aerospace Software System

      分層設計的理念也讓軟件具有更好的可重用性。型號中的其他軟件如綜合測試軟件、各種等效器軟件、仿真環(huán)境軟件等,也可以直接移植重用對應層的程序。實現(xiàn)了一處驗證,多處重用,從而提高了軟件研制的效率。

      隨著中國后續(xù)具有重大技術革新意義的航天型號的研制工作的不斷發(fā)展,對航天飛行、空天運輸?shù)刃吕碚?、新技術的探索需求日益增加。航天型號的不斷增多,同型號不同衍生狀態(tài)數(shù)量的快速增長要求飛行軟件的研制過程具有更高的適應性。本文提出的方法基于軟件設計的層次化對架構(gòu)進行分層,將軟件需求的變化限制在較小的范圍內(nèi),從變更影響的范圍內(nèi)控制了軟件的質(zhì)量風險,有效繼承了原有代碼的質(zhì)量成果,從而幫助軟件生產(chǎn)者提升了高頻交付的能力和有效有質(zhì)的代碼生產(chǎn)率。因此,本項目的實踐成果具有較大的推廣意義。

      4 結(jié)束語

      本文針對功能需求高動態(tài)變化、高頻率交付的研制要求提出了一種層次化的飛控軟件設計架構(gòu),其將飛控軟件分為算法層、功能層、邏輯硬件層、硬件描述層,通過保持各層接口的穩(wěn)定性,將各層功能解耦,使其能夠應對對應各層的需求點變更。在驗證方面,方便將各層程序剝離出來,采用更適合的驗證環(huán)境對其進行獨立驗證,提高了驗證效率??傮w上新飛行軟件可以最大程度繼承原有軟件的程序?qū)崿F(xiàn)成果和質(zhì)量工作成果,從而提高了產(chǎn)品交付效率。

      本文提出的方法也可以用于傳統(tǒng)航天型號的研制過程中,有效縮小軟件更改的影響范圍,提高軟件的結(jié)構(gòu)級重用效率,促進代碼生產(chǎn)率和質(zhì)量水平的提升。對其他諸如小型無人機等飛行器的飛行軟件的設計與實現(xiàn)也具有很強可借鑒意義。

      襄垣县| 百色市| 合江县| 景洪市| 武山县| 嘉禾县| 汉寿县| 嘉兴市| 马龙县| 连城县| 龙南县| 连山| 门源| 南涧| 东兴市| 甘孜| 商河县| 定日县| 林甸县| 青岛市| 土默特左旗| 松原市| 红河县| 喀喇沁旗| 三穗县| 托里县| 定安县| 南开区| 阳西县| 凌云县| 滦南县| 措美县| 江陵县| 依兰县| 大埔县| 维西| 吴桥县| 洛川县| 黎城县| 宁海县| 鄱阳县|