湯玥等



摘 要: 為了便于對體系結構設計和分析語言AADL可靠性模型進行可靠性評估, 實現AADL模型到廣義隨機Petri網模型(GSPN)可靠性計算模型的自動轉換,依據AADL模型到GSPN模型的轉換規則,設計并實現了集成在開源工具OSATE上的模型轉換工具。實驗表明:該文的轉換工具可以將AADL可靠性模型自動轉換為GSPN模型。
關鍵詞: 體系結構設計和分析語言; 可靠性模型; 廣義隨機Petri網; 模型轉換工具
中圖分類號: TN911?34; TP311 文獻標識碼: A 文章編號: 1004?373X(2015)12?0062?04
0 引 言
近年來,嵌入式系統一直在不斷的發展,嵌入式系統的結構也變得越來越豐富和復雜,規模日益變大,嵌入式系統的開發周期、非功能性屬性(可靠性、可調度性、安全性)及開發成本的要求也是越來越高,之前的那些嵌入式系統開發方法早就已經不能滿足現在嵌入式軟件開發的需求。OMG(Object Management Group,國際對象集團)提出了模型驅動體系架構(Model Driven Architecture,MDA)[1?2]。MDA整合了OMG在模型存儲、模型轉換和建模語言等方面的諸多標準。MDA的引進將嵌入式系統軟件開發提升到了模型級。此后,對新型的嵌入式系統的非功能屬性可以從更高的抽象層面上進行分析。這樣不僅能很大程度地縮短系統的開發周期,而且節約開發成本[3]。
基于這個思想,美國自動化工程師協會(Society of Automotive Engineers,SAE)發布了航空標準AS5506——架構分析與設計語言[4](Architecture Analysis and Design Language,AADL)。AADL可以定義和實現支持MDA的工具并且已被標準化。
AADL提供標準化的文本和圖形符號來描述軟件和硬件系統架構及其功能接口。AADL將系統的設計、分析、驗證和自動代碼生成等環節融合在一個框架之中[5]。在AADL中,系統被模型化成交互應用構件(數據、線程、進程、子程序)的分層集合和一組執行平臺的組件(總線、處理器、設備、存儲器)[6]。應用構件被綁定在執行平臺,相關信息被分開描述,然后插入到架構模型中。為了補充支持AADL核心語言對相關可靠性的信息(如故障、故障傳播、修改、容錯策略)的描述, SAE 發布了錯誤模型附件[7](Error Model Annex,Annex E)并且將其標準化。錯誤附件的使用在原有的模型描述和驗證的基礎上增加了可靠性分析,進一步完善了AADL語言。
為了支持基于AADL模型的各種分析目前已經實現了一些工具。調度和內存需求可以通過Cheddar來進行模擬和可行性測試的分析。開源AADL工具環境(Open Source AADL Tool Environment,OSATE)[8]支持資源分配分析。目前無法對AADL模型直接進行可靠性驗證,本文的轉換工具可以將AADL可靠性模型自動轉換為廣義隨機Petri網模型(General Stochastic Petri Net,GSPN)[9],在此基礎上,可以通過對GSPN模型的驗證來進行AADL模型的分析與驗證。
1 OSATE插件開發流程
開源AADL工具環境是基于Eclipse平臺[10]的AADL模型開發工具。Eclipse平臺是一個基于Java的集成開發環境,它可以擴展并且開放源碼。就Eclipse的本身而言,是利用其插件(Plug?in)機制來實現其所有功能的。在OSATE平臺上,可以進行AADL的建模、模型實例化以及語法檢查。因此,本文在OSATE和錯誤模型附錄庫插件開發的基礎上設計了AADL架構模型和AADL錯誤模型,直接利用OSATE對AADL架構模型和AADL錯誤模型進行解析,生成一個實例文件(AAXL文件)。利用XML解析器SAX對得到的AAXL模型文件進行解析,通過AADL錯誤模型向GSPN模型轉換規則,轉換生成一個廣義隨機Petri網的XML文件。之后,就可以利用馬爾可夫分析法、故障樹分析法或者用PIPE2對轉換后的GSPN模型進行可靠性的評估可驗證。插件的開發流程如圖1所示。
2 AADL模型到GSPN模型轉換規則
設計實現AADL模型到GSPN模型的轉換工具,關鍵是要確定AADL模型到相應GSPN模型的轉換關系。下面給出AADL錯誤模型基本元素轉換為GSPN的規則。
規則1:將AADL錯誤模型中的錯誤狀態轉換為GSPN中的庫所。
規則2:將AADL錯誤模型中的錯誤事件轉換為GSPN中的變遷,滿足泊松分布的事件轉換為時間變遷,服從固定概率的事件轉換為瞬時變遷。
規則3:將AADL中錯誤狀態之間的變遷轉換為變遷到庫所的弧和庫所到變遷的弧。
規則4:將初始錯誤狀態轉換為包含一個托肯的庫所。
規則5:對于符合泊松分布的錯誤傳出,把狀態和錯誤傳出轉換庫所,增加一個時間變遷,其符合泊松分布,增加錯誤傳出庫所和變遷的禁止弧,把相應的弧加上。
規則6:對于服從固定概率的錯誤傳出,把狀態和錯誤傳出轉換為庫所,增加一個庫所表示無錯誤傳出狀態。增加兩個變遷,分別表示錯誤傳出和錯誤未傳出。把相應的弧加上。
規則7:將狀態轉換為庫所,把錯誤傳入轉換為瞬時變遷,且概率為1,增加相應的弧。
規則8:把在錯誤傳播過濾規則中所定義的每個連接轉換為一個瞬時變遷,狀態和傳播轉換為庫所,在相應的庫所上加上禁止弧。
規則9:把在guard_out中定義錯誤傳播屏蔽規則轉換為庫所,一一對應,把每一個規則中每一連接轉換為變遷。
可以在這些模型轉換規則的基礎上,實現從AADL 可靠性模型到GSPN 計算模型的模型轉換的工具,為可靠性評估提供條件。單獨組件的錯誤模型到GSPN的轉換如圖2所示。
3 轉換工具的設計與實現
3.1 轉換工具的整體架構設計
模型轉換工具的架構如圖3所示,OSATE和Error Model Annex是基于Eclipse平臺開發的。OSATE為AADL可靠性模型提供了設計環境,Error Model Annex給出了錯誤模型的定義。轉換工具是基于OSATE和Error Model Annex開發的,實現了AADL可靠性模型到GSPN模型的自動轉換。轉換工具的輸入文件是的AAXL文件,AAXL文件是XML格式的。AAXL文件是開源工具OSATE提供的文件接口,而模型轉換工具的輸出文件是廣義隨機Petri網模型的XML文件,可以供其他工具分析GSPN模型的基本屬性以及可靠性。
3.2 轉換工具的模塊設計與實現
AADL可靠性模型到GSPN可靠性計算模型的轉換工具是基于OSATE和Error Model Annex開發的。該工具包含4個功能模塊:建立AADL可靠性模型模塊、AAXL文件提取解析模塊、AADL錯誤模型轉換為GSPN模塊、GSPN模型輸出模塊,如圖4所示。
(1) 建立AADL可靠性模型模塊。AADL錯誤模型是對構件的各種可靠性信息包括故障行為、故障傳播等進行描述。將AADL錯誤模型添加到AADL架構模型中,與嵌入式軟件中的各種構件相結合,即錯誤模型與相應的構件綁定,最終形成完整的嵌入式軟件可靠性模型。
(2) AAXL文件提取解析模塊。對錯誤模型進行轉換,首先要對錯誤模型所在的AAXL文件的錯誤附件進行提取,因為錯誤模型要XML、文本、圖形3種存儲方式,而SAX可以很好的處理XML文件,所以本工具采用SAX對錯誤模型中的狀態、事件、錯誤傳出、錯誤傳入等元素進行識別和提取,并將其以對象的形式存儲在鏈表中,待所有元素提取完成后,對其進行轉換。方法Clickleft(IAction Action)通過點擊鼠標左鍵獲取文件,方法Judge(Resultpath)判斷該文件是否為AAXL文件,若為AAXL文件,SaxRead.readaaxl(Resultpath)對AAXL文件進行解析提取信息。
(3) AADL錯誤模型到GSPN轉換模塊。狀態轉換為庫所,初始狀態轉換為帶有托肯的庫所,事件根據其滿足泊松分布還是固定概率分別轉換為時間變遷或瞬間變遷,錯誤傳出和傳入對應的轉換為弧。將轉換后的元素以對象的形式存儲起來,以待存儲為XML文件。下面給出模型轉換的偽代碼:
Begin
Do
If(WrongEle is ErrorState) //元素是故障狀態
TransformPlace(); //轉換為GSPN庫所
else if(WrongEle is ErrorEvent) //元素是故障傳播
TransformTransition(); //轉換為GSPN變遷
else if(WrongEle is ErrorTransition) //元素是狀態遷移
TransformArc(); //生成庫所和變遷之間的連接弧
else if(WrongEle is OutProp) //元素是故障傳出
RecordSourceID(); //記錄源組件的標識
RecordSourceEvent(); //記錄傳出的故障事件
else if(WrongEle is InProp) //元素是故障傳入
if(matched()) //查詢同標識故障傳出事件
RecordTargetID(); //記錄目標組件的標識
RecordTransition(); //記錄目標組件的狀態遷移
End
(4) GSPN模型輸出模塊。最后,從已經記錄下來的元素集合中讀取元素,調用相應元素的輸出方法,建立目標目錄和文件,利用Dom工具將輸出的信息集中輸出到目標文件中。最后得到的文件可作為pipe2工具驗證的輸入文件。
4 轉換工具的應用
本節將對航電系統的飛行規劃子系統進行AADL可靠性建模,利用轉換工具把飛行規劃子系統的錯誤模型轉換到廣義隨機Petri網。航電系統的飛行規劃子系統有6個進程構成:傳感器處理進程(Navigation Process)、綜合導航進程(IntegrateNavigation Process)、飛行優化進程(FlightPerfor Process)、導航處理進程(Guidance Process)、飛行規劃進程(FlightPlane Process)、數據顯示(DataDisplay Process)。其中硬件組件包括:傳感器(Device)、處理器(FMProcessor)、內存(MeM)和總線(Processor_Mem_Bus)。根據飛行規劃子系統的AADL架構模型和每一個組件的動態運行以及它們之間的交互情況,給每一個組件增加相應的錯誤模型,并且根據它們之間的交互情況,確定它們之間的錯誤傳播。飛行規劃子系統的錯誤模型,在這里本文使用文本表示,描述了傳感器處理進程(Navigation Process)和綜合導航進程(Integrate Navigation Process)的錯誤模型。
綜合導航進程(Integrate Navigation Process)的錯誤模型如下:
error model Navigation_Process
features
NaP_ErrorFree:initial error state;
Nap_Faile:error state;
NaP_Failed,NaP_Repair:error event;
NaP_InteP_Faile:out error propagation;
end Navigation_Process;
error model implementation Navigation_Process.Impl
transitions
NaP_ErrorFree?[NaP_Faile]?>NaP_Failed;
NaP_Failed?[out NaP_InteP_Faile]?>NaP_Failed;
NaP_Failed?[NaP_Repair]?>NaP_ErrorFree;
properties
Occurrece=>possion 5.0e?4 applies to NaP_Faile;
Occurrece=>possion 1.0e?1 applies to NaP_Repair;
Occurrece=>fix 0.8 applies to NaP_InteP_Faile;
end Navigation_Process.Impl
error mode2 IntegrateNavigation_Process
features
InteP_ErrorFree:initial error state;
InteP_Failed:error state;
InteP_Faile,InteP_Pepair:error event;
NaP_InteP_Out_Faile:out error propagation;
Intep_Out_Faile:out error propagation;
end IntegrateNavigation_Process;
error mode2 implementation IntegrateNavigation_Process.Impl
transitions
InteP_ErrorFree?[InteP_Faile]?>InteP_Failed;
InteP_ErrorFree?[in NaP_InteP_Faile]?>InteP_Failed;
InteP_Failed?[InteP_Repair]?>InteP_ErrorFree;
InteP_Failed?[Intep_out_Faile]?>InteP_Failed;
properties
Occurrece=>possion 1.0e?3 applies to InteP_Failed;
Occurrece=>possion 1.0e?1 applies to InteP_Repair;
Occurrece=>fix 0.75 applies to InteP_Out_Failed;
end IntegrateNavigation_Process.Impl
利用AADL模型到GSPN的轉換工具將上述錯誤模型轉換并生成了一個XML文件。飛行規劃子系統的傳感器處理進程(Navigation Process)和綜合導航進程(Integrate Navigation Process)的GSPN模型如圖5所示。
5 結 語
本文介紹了OSATE插件開發流程和AADL可靠性模型到廣義隨機Petri網的轉換規則,設計并實現了AADL可靠性模型到廣義隨機Petri網的轉換工具,為AADL模型可靠性評估提供了條件。本文還給出了運用轉換工具將航電系統的飛行規劃子系統的錯誤模型轉換到GSPN的實例。后期將進一步完善AADL可靠性模型到GSPN的轉換工具,并研究評估AADL模型可靠性的方法。
圖5 傳感器處理進程和綜合導航進程的GSPN模型
參考文獻
[1] OMG. Model driven architecture (MDA) [EB/OL]. [2009?01?03]. http://www.omg.org/mda.
[2] 孫宏旭.MDA模型轉換方法的研究與實現[D].哈爾濱:哈爾濱工程大學,2012.
[3] 劉曉娟,溫冠華,李建軍,等.軟件可靠性度量方法[J].計算機工程,2009,35(3):57?59.
[4] YANG Z B, PI L, HU K, et al. AADL: An architecture design and analysis language for complex embedded real?time system [J]. Journal of Software, 2010, 21(5): 899?915.
[5] 譙婷婷,王樂,耶國棟.基于AADL的軟件可靠性驗證[J].計算機應用,2013,32(2):92?95.
[6] 楊志斌,皮磊,胡凱,等.復雜嵌入式實時系統體系結構設計與分析語言:AADL[J].軟件學報,2010,21(5):899?915.
[7] International Society of Automotive Engineers. SAEAS5506/1?2006 SAE architecture analysis and design language (AADL) annex volume 1, annex e: error model annex [S]. [S.l.]: International Society of Automotive Engineers, 2006.
[8] FEILER Peter. Open source AADL tool environment [R]. [S.l.]: Software Engineering Institute, 2005.
[9] 林闖.隨機Petri網和系統性能評價[M].北京:清華大學出版社,2005.
[10] 張昊,麥先根,賈璐.Eclipse插件開發技術淺探[J].航空計算技術,2006(6):108?112.