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