邢志偉,王偉,陸志肖,宋治惠,胡尊帆
(中國直升機設計研究所 機電軟件專業(yè),天津,300300)
目前,直升機機電管理軟件采用傳統(tǒng)軟件的開發(fā)流程,主要包括:軟件需求、概要設計、詳細設計、編碼、單元測試、集成測試以及系統(tǒng)測試,以編碼為開發(fā)核心[1]。通常存在以下幾個問題:概要設計和詳細設計階段可能會存在歧義,無法模擬仿真,驗證工作量大且難以評價[2];人工編碼,開發(fā)周期較長,易引入人工編寫錯誤,而且軟件后續(xù)的維護工作量大;需要進行單元測試,耗時長;測試工作復雜,難以保證驗證充分性。
而使用SCADE作為開發(fā)工具,采用基于模型的軟件開發(fā)流程如圖1所示,是一個“Y”型開發(fā)流程。概要設計與詳細設計階段通過直觀的圖形化建模與仿真,能夠在開發(fā)初期階段就發(fā)現(xiàn)并解決大量的設計缺陷,并保證與用戶需求的一致性[3]。此外SCADE能夠實現(xiàn)模型的零時間代碼生成,其代碼生成器滿足DO-178C標準質量認證,能夠避免人工錯誤,無需進行單元測試[4]。省去的編碼工作和簡化的測試工作能夠使得軟件的開發(fā)周期得到有效縮減,使開發(fā)設計人員能夠專注于軟件功能實現(xiàn)與結構優(yōu)化,能夠在較大程度上實現(xiàn)軟件開發(fā)的自動化,也有利于軟件的升級和維護工作。
圖1 基于模型(SCADE)的軟件開發(fā)流程
本文探討了基于SCADE的軟件開發(fā)方法在機電管理軟件上的應用,并結合了典型模塊-燃油功能模塊,從需求分析、建模、仿真和代碼生成等方面探索了整個基本流程和技術要點,并對代碼進行了度量分析。
機電管理軟件主要實現(xiàn)監(jiān)控燃油、液壓等機電系統(tǒng)的工作狀態(tài),接收數(shù)據(jù)、狀態(tài)、故障等信息,并進行顯示和記錄。
對于機電管理軟件來說,面對不同的機電系統(tǒng),實現(xiàn)的功能類似,都是進行數(shù)據(jù)采集、狀態(tài)監(jiān)控、故障識別和數(shù)據(jù)發(fā)送等功能。而對于不同的直升機來說,機電系統(tǒng)實現(xiàn)的功能也類似,如燃油系統(tǒng):均能夠實現(xiàn)燃油數(shù)據(jù)監(jiān)控,按照發(fā)動機要求的壓力和流量進行不間斷的供油;進行加、抽油控制來實現(xiàn)飛行重心調整;實現(xiàn)調零、調滿等功能。因此對于機電管理軟件開發(fā)來說,非常適合與采用基于模型設計的開發(fā)方法,相似的結構及功能能夠使模型具有極高的可重用性,能夠大幅度地減少開發(fā)周期,提高開發(fā)效率。
SCADE軟件建模的核心是同步設計語言LSUTRE,能夠準確刻畫動態(tài)系統(tǒng)的行為,多用于描述和驗證實時系統(tǒng)[5],適合于直升機實時嵌入式軟件的開發(fā)。主要有數(shù)據(jù)流圖和安全狀態(tài)機兩種建模方式[6]。
數(shù)據(jù)流圖適合于對連續(xù)控制邏輯進行建模設計,將具體的系統(tǒng)的模型描述為從輸入到輸出的數(shù)據(jù)流和數(shù)據(jù)交換過程,并通過各類型的預定義操作符或用戶自行建立的操作符實現(xiàn)模型的搭建,并以節(jié)點作為功能單元,組成復雜的層次機構,實現(xiàn)整個系統(tǒng)模型的圖形化搭建[7]。
而安全狀態(tài)機適合于離散控制邏輯的建模,適合于復雜的邏輯狀態(tài)監(jiān)控,通過SCADE軟件提供的順序、優(yōu)先級、層次、并行等狀態(tài)結構,利用外部中斷或內部事件結果實現(xiàn)狀態(tài)轉移,可以很好地對反應式系統(tǒng)進行建模[8]。
SCADE軟件采用標準KCG代碼生成器,能夠將建立的系統(tǒng)模型直接轉化為高質量的代碼,滿足DO-178C民航A級安全標準[9]。
由于SCADE軟件嚴格的數(shù)學理論,能夠保證所生成代碼運行的結果與模型仿真結果完全一致,因此可以不經(jīng)過測試直接嵌入到產品中去。
本文選取了機電管理系統(tǒng)的典型模塊-燃油功能模塊的功能進行需求分析、模型建立、仿真驗證和代碼生成等工作,基于SCADE開發(fā)環(huán)境,探索了基于模型設計的開發(fā)方法在機電管理軟件上的應用。
針對機電管理燃油功能模塊,機電管理軟件主要實現(xiàn)以下功能需求:
(1)通過數(shù)據(jù)發(fā)送功能模塊,能夠模擬飛行員的工作指令,設置發(fā)送給燃油系統(tǒng)的控制指令和燃油油量等數(shù)據(jù);
(2)通過數(shù)據(jù)采集功能模塊,能夠接收燃油油量數(shù)據(jù)、燃油系統(tǒng)狀態(tài)信息以及各種傳感器的狀態(tài)信息等內容;
(3)通過狀態(tài)監(jiān)控功能模塊,能夠對接收的燃油系統(tǒng)數(shù)據(jù)進行識別分析,對于燃油系統(tǒng)發(fā)送的異常數(shù)據(jù)包能夠準確識別,并報告數(shù)據(jù)傳輸故障存在;
(4)通過數(shù)據(jù)處理功能,能夠對接收的燃油系統(tǒng)各類燃油傳感器狀態(tài)信息進行識別處理,準確識別定位到哪一個傳感器的故障問題;
(5)通過故障判斷功能,能夠對上述識別出來的故障信息進行判斷處理,若故障能夠持續(xù)多個周期,則認定故障存在,否則認定其故障不存在,有效地減少虛警。
燃油功能模塊的結構,如圖2所示。
圖2 燃油系統(tǒng)需求結構圖
根據(jù)上述結構的設計,利用SCADE軟件建模工具搭建的功能模型如圖3-圖7所示。
圖3 數(shù)據(jù)發(fā)送模型
圖7 狀態(tài)監(jiān)控功能
圖4 數(shù)據(jù)采集功能模型
圖5 數(shù)據(jù)處理功能模型
圖6 故障判斷模型
模型搭建完成后,對每個子功能模型進行Check檢查,根據(jù)錯誤提示,排除錯誤,確認每個模型都沒有錯誤存在后,整合以上各功能模型,組成燃油系統(tǒng)功能模塊總體模型,將設置調為Simulation,對燃油系統(tǒng)的總體模型進行仿真測試。根據(jù)相應燃油功能需求設置對應的輸入,依次模擬設置了燃油量的數(shù)據(jù)信息,多種傳感器的故障信息,燃油系統(tǒng)的異常數(shù)據(jù)等輸入,結果均符合預期,能夠實現(xiàn)數(shù)據(jù)的正確接收、故障判斷以及狀態(tài)監(jiān)控等功能。圖8為燃油功能模塊整體模型某輸入的仿真結果。
圖8 燃油功能模塊模型仿真結果
在系統(tǒng)仿真結果正確的基礎上,通過SCADE代碼生成器生成標準的C語言代碼,為了驗證自動生成代碼的質量,對自動生成的軟件代碼利用Testbed代碼測試工具進行了軟件度量分析。在Testbed工具中采用了因數(shù)-特性-度量三級結構模型對代碼的每個子程序進行了評價。
按照軟件的三個特性:可測試性分類、可維護性分類、清晰性分析的代碼質量分類統(tǒng)計圖如圖9~圖11所示。
圖9 可測試性質量分類
圖11 清晰性質量分類
按整體質量因素評估的代碼質量分類統(tǒng)計結果如圖12所示。
圖12 按質量因數(shù)評估的子程序質量分類統(tǒng)計圖
從統(tǒng)計結果中可以知道各子程序整體質量特性較好,尤其是在可測試性和可維護性上具有相當好的效果,而在清晰性上較為一般,而清晰性指標主要參考的是代碼的注釋性等性能,而對于整體功能的實現(xiàn)沒有影響。綜上所述,自動生成的代碼具有很高的質量特性,這一點也是經(jīng)過DO-178C民航A級安全標準認證的。而且通過檢查Testbed工具生成的代碼審核清單,可以觀察到?jīng)]有出現(xiàn)人工編寫代碼中常常出現(xiàn)的人為編寫錯誤、書寫不規(guī)范等錯誤,且代碼中沒有出現(xiàn)遞歸、死循環(huán)等現(xiàn)象。因此可以認為SCADE自動生成的代碼具有更高的可靠性,完全能夠替代人工編寫代碼,完全取締掉人工編寫代碼的工作量,大幅度縮短軟件的開發(fā)周期,較為適合應用在直升機機電管理軟件的開發(fā)上。
(1)本文在機電管理系統(tǒng)典型模塊-燃油功能模塊上使用SCADE開發(fā)環(huán)境探究了軟件開發(fā)流程,通過對于燃油功能模塊的需求分析,結構劃分及設計,能夠實現(xiàn)對燃油系統(tǒng)功能模塊的模型化設計,并通過模型仿真驗證表明了模型搭建的準確性。
(2)通過SCADE代碼生成器能夠自動生成標準的C語言代碼,并經(jīng)過Testbed代碼工具對軟件代碼進行了分析測試,驗證了自動生成代碼的高質量特性。表明了基于SCADE開發(fā)環(huán)境的模型化軟件開發(fā)流程能夠有效提高開發(fā)效率,并能夠保證軟件代碼生成的質量,在之后直升機機電管理軟件開發(fā)中具有廣闊的前景。
圖10 可維護性質量分類