馬燕燕,楊志斌,2,江國華
(1.南京航空航天大學計算機科學與技術學院,江蘇 南京 211106; 2.高安全系統(tǒng)的軟件開發(fā)與驗證技術工信部重點實驗室,江蘇 南京 211106)
安全關鍵系統(tǒng)(Safety-Critical System)是其故障可能導致生命損失、重大財產(chǎn)損失或環(huán)境破壞的系統(tǒng),廣泛應用于航空、航天、交通和能源等領域。隨著安全關鍵系統(tǒng)規(guī)模和復雜性不斷提高,這類系統(tǒng)出現(xiàn)錯誤的可能性及其造成的危害也日益突出。2019年3月10號,埃及航空的一架波音737MAX8客機在從埃塞俄比亞首都飛往肯尼亞首都內(nèi)羅畢途中失事,機上157名乘客無人生還。失事的主要原因是由于高迎角傳感器將錯誤的數(shù)據(jù)輸入給飛行控制系統(tǒng),從而引起錯誤的機頭降低指令,使得駕駛員難以判斷和控制飛行狀態(tài)造成的。
安全關鍵系統(tǒng)的實現(xiàn)需要通過需求、設計、集成、驗證和測試等多個階段。設計階段首先進行系統(tǒng)設計,然后區(qū)分軟硬件,進行軟件和硬件協(xié)同設計。近年來,模型驅(qū)動(Model-Driven)尤其是采用形式化模型驅(qū)動的安全關鍵系統(tǒng)設計與開發(fā)方法逐漸受到重視,并被工業(yè)界認為是保障系統(tǒng)安全性與可靠性切實可行的重要手段?;谀P偷南到y(tǒng)工程(Model-Based Systems Engineering)支持從概念設計階段開始并在整個開發(fā)生命周期階段中持續(xù)進行的系統(tǒng)需求、設計、分析、驗證和確認活動。側重于利用領域模型作為工程師之間信息交換的載體,而不是基于文檔的信息交換[1]。
安全關鍵領域常用的建模語言有UML(Unified Modeling Language)、SysML (Systems Modeling Language)[2]、航空電子系統(tǒng)描述語言MetaH和HOOD(Hierarchical Object Oriented Design)、汽車電子系統(tǒng)描述語言EAST-ADL(Electronics Architecture and Software Technology-Architecture Description Language)、嵌入式實時系統(tǒng)體系結構分析與設計語言AADL(Architecture Analysis & Design Language)[3]等。然而,目前還沒有一個標準的建模語言支持安全關鍵系統(tǒng)的整個開發(fā)生命周期。因此,考慮集成使用適合于系統(tǒng)設計階段建模的SysML和適合于軟硬件協(xié)同建模的AADL。SysML適合于進行需求捕獲、分析和初步系統(tǒng)設計,而AADL適合于詳細設計階段,區(qū)分軟硬件,可采用仿真和形式化方法進行模型的驗證與分析。
目前,SysML和AADL的集成使用已經(jīng)成為一個研究熱點。例如,挪威奧斯陸大學Simula研究所[4,5]提出了ExSAM概要文件(Profile)的概念,它通過向SysML添加AADL概念來擴展SysML,能夠?qū)ο到y(tǒng)工程概念建模,并在需要時使用AADL分析工具。圖盧茲大學的de Saqui-Sannes等人[6]提出了一種基于模型的安全關鍵嵌入式系統(tǒng)設計、驗證和實現(xiàn)方法,將標準化的SysML和AADL結合在一起,用于系統(tǒng)級建模、需求捕獲、用例和場景分析、體系結構描述,并使用SysML和AADL對飛行管理系統(tǒng)進行無縫建模、驗證和實現(xiàn)。進一步地,Wang等人[7]提出在整個模型驅(qū)動工程中集成使用SysML、AADL和FACE (Future Airborne Capability Environment);在工業(yè)界,ANSYS公司提供SCADE System用于SysML系統(tǒng)模型設計,提供SCADE Suite用于軟件設計,SCADE System和SCADE Suite可進行無縫對接。在SCADE System中定義的模塊接口能自動轉換到SCADE Suite中的接口,并且在兩者中保持同步[8]。
在這些已有研究中,挪威奧斯陸大學Simula研究所[4,5]將AADL核心元素擴展到SysML中用以區(qū)分軟硬件,但是無法與AADL分析工具無縫對接,分析時仍需手工完成SysML模型到AADL模型的轉換。圖盧茲大學的de Saqui-Sannes等人[6]提出將SysML狀態(tài)機圖轉換為AADL行為附件,狀態(tài)機圖較難描述輸入通過一系列動作轉換為輸出的過程。另外,SCADE只支持System的BDD(Block Definition Diagram)、IDB(Internal Block Diagram)向AADL模型的轉換。
本文提出一種SysML模型到AADL模型的自動轉換方法。首先定義SysML子集SubSysML,SubSysML包括BDD、IBD、ACT子集以及在IBD和BDD上擴展的AADL Profile;其次提出SubSysML模型向AADL模型轉換的具體規(guī)則,并且設計基于Eclipse的模型轉換工具SubSysML2AADL,實現(xiàn)SubSysML向AADL模型自動轉換,通過模型來自動傳遞設計信息;由于SysML和AADL在不同的抽象層次進行建模,因此在獲得AADL初始模型之后,通過求精的方式將一些設計細節(jié)增加到AADL模型中;最后通過工業(yè)界案例雷達信息處理系統(tǒng)驗證本文方法的有效性。
本文第2節(jié)介紹SysML語言和AADL語言;第3節(jié)介紹SysML模型到AADL模型的轉換方法總體研究框架;第4節(jié)定義SysML子集SubSysML;第5節(jié)描述SubSysML到AADL的轉換方法;第6節(jié)介紹SubSysML到AADL的模型轉換工具實現(xiàn);第7節(jié)以典型工業(yè)應用案例說明本文方法的有效性;第8節(jié)對國內(nèi)外的相關研究工作進行相應概述;第9節(jié)對研究工作進行總結和展望。
本節(jié)主要介紹SysML和AADL的基本建模概念。
國際系統(tǒng)工程學會INCOSE(International Council on Systems Engineering)和對象管理組織 OMG(Object Management Group) 在對 UML2.0 的子集進行重用和擴展的基礎上,提出一種新的系統(tǒng)建模語言——SysML,作為系統(tǒng)工程的標準建模語言[9]。SysML是一種通用的圖形建模語言,旨在幫助指定和構建系統(tǒng),并指定可以使用其他特定于領域的語言設計的組件。SysML中定義了9個圖來描述系統(tǒng)。
(1)描述需求。
需求圖用于表示基于文字的基本需求、需求之間的關系以及滿足、驗證和改善它們的其他模型元素。
(2)描述結構。
①模塊定義圖BDD表示模塊和值類型之類的元素。
②內(nèi)部模塊圖IBD用于指定單個模塊的內(nèi)部結構。
③參數(shù)圖用于表示1種或多種約束如何與系統(tǒng)的屬性綁定。
④包圖用于顯示模型以包相互包含的層級關系形式組織的方式。
(3)描述行為。
①用例圖從系統(tǒng)參與者的角度表達系統(tǒng)執(zhí)行的用例,是一種黑盒視圖。
②活動圖ACT(Activity Diagram)用于指定一種行為,主要關注控制流程,以及輸入通過一系列動作轉換為輸出的過程。
③序列圖用于指定一種行為,主要關注模塊的組成部分如何通過操作調(diào)用和異步信號交互。
④狀態(tài)機圖用于指定一種行為,主要關注模塊的一系列狀態(tài),以及響應事件時狀態(tài)之間的轉換。
關于 SysML 的擴展機制,官方主要提供了如下3個途徑[2]:基于 UML構造型(Stereotypes)、基于 UML
圖元擴展(Diagram extensions)和基于模型庫(Model libraries)。SysML 構造型機制通過用新的屬性和約束來擴展現(xiàn)有的 UML2.0構造型,從而定義新的建模元素;SysML
圖元擴展通過定義新的圖元符號,用于補充從 UML2.0中重用的圖元符號;SysML 模型庫則用于描述可供重用的專用模型元素。
2004 年,美國汽車工程師協(xié)會SAE (Society of Automotive Engineers)在MetaH、UML等建模語言的基礎上,提出了嵌入式實時系統(tǒng)體系結構分析與設計語言AADL[3],目的是提供一種標準而又足夠精確的方式,設計與分析嵌入式實時系統(tǒng)的軟、硬件體系結構及功能與非功能性質(zhì),采用單一模型支持多種分析的方式,將系統(tǒng)設計、分析、驗證、自動代碼生成等關鍵環(huán)節(jié)融合于統(tǒng)一框架之下[10]。AADL的這些特性使其具有廣闊的應用前景,得到了以航空航天領域(如空客、波音、霍尼韋爾等)為首的歐美工業(yè)界的支持,此外學術界也對AADL展開了深入的研究和擴展,其中,美國卡耐基·梅隆大學開發(fā)的開源AADL集成開發(fā)環(huán)境OSATE(Open Source AAOL Tool Environment)已被廣泛使用。
安全關鍵系統(tǒng)是應用軟件、運行時環(huán)境以及硬件平臺深度融合的復雜系統(tǒng),AADL語言與之對應地提供了軟件體系結構、運行時環(huán)境以及硬件體系結構的建模概念[10]。AADL 提供了一組預定義的構件類別:
(1)軟件構件:包括線程、線程組、子程序、數(shù)據(jù)和進程。
(2)執(zhí)行平臺構件:包括處理器、內(nèi)存、總線和外設。
(3)系統(tǒng)構件:用系統(tǒng)表示軟件和執(zhí)行平臺的組合集。
為了支持組件內(nèi)部的控制流建模,法國圖盧茲計算機與信息研究所IRIT(Institute de Recherche en Informatique de Toulouse)[11]實驗室于 2006 年提出了 AADL 行為附件BA(Behavior Annex)。行為附件以變遷系統(tǒng)(Transition System)的形式增強了 AADL 線程構件和子程序構件功能行為的詳細描述能力。行為附件與執(zhí)行模型有密切的關系:執(zhí)行模型定義行為附件何時執(zhí)行、哪些數(shù)據(jù)被改變,而行為附件處于構件內(nèi)部,對線程、子程序構件的執(zhí)行給予更精確的描述。行為附件是執(zhí)行模型調(diào)度機制的擴展,用于更精確地描述模型行為,例如端口通信、子程序調(diào)用、時序、異步等。完整的 AADL 模型應該包括執(zhí)行模型和行為附件。
行為附件主要包括3部分:變量、狀態(tài)和轉換。變量部分聲明當前行為附件中使用的所有局部變量。局部變量可以用來保存當前行為附件范圍內(nèi)的中間結果。狀態(tài)部分枚舉狀態(tài)機的所有狀態(tài)及其屬性(initial,complete,final或它們的組合)。默認狀態(tài)是一個執(zhí)行狀態(tài)。轉換定義了從源狀態(tài)到目標狀態(tài)的轉換,轉換可以有條件和動作。
SysML模型到AADL模型的轉換方法總體框架如圖1所示,整個過程分為3個部分:
(1)定義SysML子集SubSysML,包括IBD子集、BDD子集、從IBD和BDD擴展的AADL Profile,以及ACT的子集。
(2)定義SubSysML到AADL轉換規(guī)則以及具體的轉換算法,生成AADL初始設計模型。
(3)對第(2)步生成的AADL初始設計模型使用同步語言Signal進行精化。針對不同應用,對AADL初始設計模型可以使用BA、Signal、SDL(Specification and Description Language)進行功能行為求精設計。BA是AADL的標準擴展,支持以自動機的方式表達控制流形式的功能行為;而同步語言Signal則是基于數(shù)據(jù)等式的方式表達(同步)數(shù)據(jù)流形式的功能行為,例如用數(shù)學公式所表達的應用功能往往可以通過同步語言來建模;SDL則是一種接近常用C程序的數(shù)據(jù)流和控制流表達語言,其語義為異步執(zhí)行,接近我們常用的執(zhí)行程序。本文主要使用Signal對功能設計進行精化。
Figure 1 Framework of model transformation from SysML to AADL圖1 SysML到AADL的模型轉換方法研究框架
SubSysML包括BDD子集SubBDD、IBD子集SubIBD、對BDD中的Block和IBD中的FlowPort擴展得到的AADL Profile,以及ACT子集SubACT。其定義如下:
定義1SubSysML = 〈SubBDD,SubIBD,SubACT,AADL Profile〉,其中:
SubBDD ={Block,Realization},Block為SysML結構中的基本單元,可以使用模塊為系統(tǒng)中或者系統(tǒng)外部環(huán)境中任意一種實體類型創(chuàng)建模型,Realization為系統(tǒng)聲明的Block和系統(tǒng)實現(xiàn)的Block之間的實現(xiàn)關系。
SubIBD={Block,Part,FlowPort,Connector},Block為SysML結構中的基本單元;Part為Block的組成部分;FlowPort為端口,代表結構邊緣不同交互點的一種屬性;Connector為2個Part之間的連接器。
AADL Profile={system,data,eventPort,dataPort,eventDataPort,dataAccess},system表示該Block 表示一個系統(tǒng),data表示該Blcok為數(shù)據(jù)組件,eventPort表示該FlowPort為事件端口,dataPort表示該FlowPort為數(shù)據(jù)端口,eventData-Port表示該FlowPort為事件數(shù)據(jù)端口,dataAccess表示數(shù)據(jù)組件上的端口。
SubACT={ActivityNode,ActivityEdge,Variable},ActivityNode為活動圖的節(jié)點,ActivityEdge為活動圖的邊,Variable為活動圖中需要使用的局部變量。
AADL Profile是對SysML描述能力的補充。本文使用構造型的方式擴展SysML。AADL Profile如圖2所示。首先定義擴展自SysML Block 構造型的2個新的構造型 system 和data,用于區(qū)分Block代表的是系統(tǒng)還是數(shù)據(jù)組件,SysML Block 擴展自UML的類,并被選擇為組件建模,在使用時添加system構造型表示該Block表示為系統(tǒng),添加data構造型自定義復雜數(shù)據(jù)類型。其次定義新的構造型dataPort、eventDataPort和eventPort分別表示數(shù)據(jù)端口、事件數(shù)據(jù)端口和事件端口,dataAccess擴展自SysML FlowPort構造型,表示數(shù)據(jù)組件上的端口。
圖3所示為SysML活動圖子集SubACT元模型,包括活動節(jié)點(ActicityNode)和活動邊(ActivityEdge)2個部分,定義如下:
定義2ActicityNode = 〈ExecutableNode,ControlNode,ObjectNode〉,其中:
ExecutableNode={SendSignalAction,AcceptEventAction,CallBehaviorAction},SendSignalAction為發(fā)送信號動作,AcceptEventAction為接收事件動作,CallBehaviorAction為調(diào)用行為動作,在啟動時觸發(fā)另一種行為。
Figure 2 AADL profile圖2 AADL 概要文件
Figure 3 Meta model of SubACT圖3 SubACT元模型
ControlNode={InitialNode,DecisionNode,MergeNode,ForkNode,JoinNode,FinalNode},InitialNode為初始節(jié)點,標記活動的起點;DecisionNode為決定節(jié)點,標記活動中可替換序列的開始;MergeNode為合并節(jié)點,標記活動中可選序列的結尾;ForkNode為分支節(jié)點,標記活動中并發(fā)序列的開始;JoinNode為集合節(jié)點,標記活動中并發(fā)序列的結束;FinalNode為終止節(jié)點,標記控制流的結束。
ObjectNode={InputPin,OutputPin},其中InputPin表示動作的輸入數(shù)據(jù),OutputPin表示動作的輸出數(shù)據(jù)。
定義3AcitivityEdge = 〈ObjectFlow,ControlFlow〉,其中ObjectFlow為對象流,表示事件,數(shù)據(jù)的實例通過活動從一個節(jié)點向另一個節(jié)點流動;ControlFlow為控制流,表示可以傳遞控制令牌的邊,控制令牌的到達可以啟動等待它的動作。
從SysML模型到AADL模型的自動轉換主要包括2部分:
(1)系統(tǒng)基本結構的轉換。系統(tǒng)的基本結構即SubIBD、SubBDD中的元素,以及擴展的AADL Profile,將其對應轉換為AADL體系結構模型。例如Block對應轉換為Component構件,根據(jù)Stereotype的不同,system Stereotype對應轉換為system構件,data Stereotype對應轉換為data構件。
(2)系統(tǒng)行為的轉換。系統(tǒng)行為涉及到的元素主要為SubACT中的元素。活動圖對應轉換為AADL 模型的行為附件。一個system Stereotype的活動圖對應拆分為該system Stereotype對應的system構件的subComponent的行為附件。
系統(tǒng)基本結構的轉換規(guī)則如下所示:
(1) Rule1:SysML模型中的Package元素轉換為AADL模型的Package構件。
(2) Rule2:SysML模型中的模塊定義圖中使用system Stereotype的Block元素轉換為AADL的system構件。若2個Block之間存在Realization關系,則supplier端的Block轉換為system Type構件,client端的Block轉換為system Implementation 構件。若同時使用data構造型,則對應轉換為AADL的數(shù)據(jù)構件。
(3) Rule3:SysML模型中Block的內(nèi)部模塊圖Part 元素轉換為對應AADL模型中system的subComponent構件。
(4) Rule4:SysML模型中Block的內(nèi)部模塊圖Connector元素轉換為AADL模型 的connection構件。
(5) Rule5:SysML模型中Block的內(nèi)部模塊圖Port元素轉換為AADL模型中feature的port。Port元素若同時使用dataPort 構造型,則轉換為 dataPort端口;若同時使用dataEventPort 構造型,則轉換為 dataEventPort端口;若同時使用eventPort 構造型,則轉換為 eventPort端口。
系統(tǒng)行為的轉換規(guī)則如下所示:
(1) Rule1:SysML模型中Block的活動圖轉換為AADL模型對應的system構件的子組件的行為附件。
(2) Rule2:活動圖中一個InitialNode轉換為對應AADL模型中行為附件中的initialstate。
(3) Rule3:活動圖中的action轉換為AADL模型對應行為附件中的transition語句中的behavior_action_block。其中SendSignalAction轉換為行為附件的Transition中的發(fā)送語句port!(var)。AcceptEventAction轉換為行為附件的condition中的on dispatch port。并且為接受事件對應的狀態(tài)添加complete標識。CallBehaviorAction轉換為子程序調(diào)用?;顒訄D中的元素通過分配表明確活動節(jié)點的動作和Block的分配關系。
(4) Rule4:活動圖中的局部變量轉換為AADL模型對應行為附件中的variables。
(5) Rule5:活動圖中的ActivityEdge轉換為AADL模型對應行為附件中的state。
(6) Rule6:活動圖中的DecisionNode中的guard轉換為AADL模型對應行為附件中transition中的behavior_ condition。
(7) Rule7:活動圖中的FinalNode轉換為AADL模型對應行為附件中的FinalState。
基于SubSysML和AADL元模型,本文給出SubSysML到AADL的轉換算法,如算法1所示。
Algorithm1Transformation from SysML to AADL
Input:SysML_ModelS。
Output:AADL_ModelM。
01:for each BlockbinS.getBlocksdo
02: ifb.isSystemthen
03:M.add(new Systemn);
04: else ifb.isDatathen
05:M.add(new Datan);
06: else
07:M.add(new Abstractn);
08: end if
09:M.addInstance(n.newInstance);
10:b.getPorts→n.features;
11:b.Parts→n.instance.subcomponents;
12:b.Connector→n.instance.connections;
13:b.Activity→n.instance.subcomponents.BA;
14: for each Elementeinb.Activitydo
15: ife.isVariablethen
16:BA.add(new Variablev);
17: else ife.isInitialStatethen
18:BA.add(new InitialStates);
19: else ife.isActivityEdgesthen
20:BA.add(new States);
21: else ife.isActionthen
22:BA.add(new Transition.behavior_
23: action_blocka);
24: else ife.isDecisionNodethen
25:BA.add(new Transition. Behavior
26: _conditiong);
27: elsee.isFinalNodethen
28:BA.add(new FinalStatef);
29: end if
30: end for
31:end for
Figure 4 Framework of SubSysML2AADL tool圖4 SubSysML2AADL工具框架
本文在已經(jīng)集成OSATE和Papyrus插件的Eclipse平臺上進行SubSysML2AADL工具的開發(fā)。Papyrus是一個工業(yè)級的基于開源模型的工程工具。Papyrus為SysML提供了完整的支持,以支持基于模型的系統(tǒng)工程。還提供了SysML所需的特定表格和圖形編輯器。OSATE用于AADL建模、編譯和分析,以及進行可調(diào)度性分析和安全性分析和時間延遲分析等。SubSysML2AADL是基于EMF(Eclipse Modeling Framework)框架實現(xiàn)的。EMF是一個建??蚣芎痛a生成工具,用于構建基于結構化數(shù)據(jù)模型的工具和其他應用程序。使用EMF設計滿足SubSysML語法的Ecore元模型,為模型生成1組Java類,進而通過編寫轉換規(guī)則實現(xiàn)向AADL的轉換。SubSysML2AADL工具框架如圖4所示。
首先分析存儲SysML模型的XML文件,定義1個EMF元模型,用于描述XML文件的元結構,所述EMF元模型可自動生成框架代碼,復用該框架代碼可生成SysML模型解析器并通過EMF提供的API讀取XML文件的信息,生成EMF對象。其次根據(jù)制定的SubSysML到AADL的關系對應,對從SysML模型中讀取的EMF對象,使用OSATE提供的API生成對應的AADL對象。最后使用AADL和EMF對象之間的映射以及EMF對象之間的關系來填充AADL對象之間的鏈接,完成AADL初始設計模型的生成。
雷達信息處理系統(tǒng)主要應用于空中監(jiān)視、空間和導彈監(jiān)視、表面搜索和戰(zhàn)場監(jiān)視、跟蹤和制導、氣象雷達、天文和大地測量。雷達是利用目標對電磁波反射現(xiàn)象來發(fā)現(xiàn)目標并測定其位置的。雷達信息處理系統(tǒng)一般由天線、前端處理和后端處理3部分組成。前端主要做A/D采樣、下變頻和脈沖壓縮,后端主要做成像和匹配定位。其中后端主要包括成像模塊和匹配模塊2部分,成像模塊由2個DSP和1個FPGA構成,匹配模塊由2個DSP和2個FPGA構成。雷達信息處理系統(tǒng)的抽象結構如圖5所示。
Figure 5 Framework of radar information processing system圖5 雷達信息處理系統(tǒng)抽象框架圖
Figure 6 BDD of radar information processing system圖6 雷達信息處理系統(tǒng)的BDD
使用Papyrus對雷達信息處理系統(tǒng)進行建模,建立BDD描述雷達信息處理系統(tǒng)功能模塊之間的組成關系,建立IBD對BDD的內(nèi)容做補充,描述單個模塊內(nèi)部組成部分之間的數(shù)據(jù)連接。成像和匹配是雷達最重要的2個功能模塊,本文選擇成像模塊建立活動圖描述成像的執(zhí)行過程。表1所示為該雷達模型的數(shù)據(jù)統(tǒng)計。圖6所示為雷達信息處理系統(tǒng)的BDD。
Table 1 Statistical data of SysML model of radar information processing system表1 雷達信息處理系統(tǒng)的SysML模型數(shù)據(jù)統(tǒng)計
圖7所示為成像模塊Main DSP活動圖,當Main DSP收到開始掃描指令后,解析指令,獲得指定的高度Height,然后判斷高度,根據(jù)高度的不同取值進入不同的模式。當1 Figure 7 Activity of Main DSP of the imaging module圖7 成像模塊Main DSP活動圖 完成雷達信息處理系統(tǒng)的SysML建模后,通過SubSysML2AADL工具,可以將SysML模型轉換成AADL初始設計模型。模塊定義圖和內(nèi)部模塊圖表示的系統(tǒng)結構自動轉換為AADL體系結構模型,活動圖表示的系統(tǒng)行為自動轉換為AADL模型中對應構件的行為附件。圖8所示為生成的Main DSP模塊的AADL模型圖形化表示。由圖7的SysML活動圖生成的AADL行為附件如下所示: annexbehavior_specification{** variables startScanOrder_variable: Data_Types::startScanOrder.Impl; DetectHeightPulseData_variable: Data_Types::DetectHeightPulseData.Impl; PrtInterrupt_variable: Data_Types::PrtInterrupt.Impl; DetectHeightRelevantParameter_variable: Data_Types:: DetectHeightRelevantParameter.Impl; pluseWidthAndBandWidth_variable: Data_Types::pluseWidthAndBandWidth.Impl; states s0:initial state; s1:complete state; s2:state; s3:state; s4:state; s5:state; s6:state; transitions t0:s0-[]→s1{count0:=0;count1:=0; num1:=7;num2:=4}; t1:s1-[on dispatchstartScanOrder]→s2{ startScanOrder?(startScanOrder_variable); t2:s2-[]→s3{calculatedAltitude!}; t3:s3-[(2 and(startScanOrder_variable.height<3)] →s4{calculatingParameter!}; t4:s4-[]→s5{pluseWidthAndBandWidth! (pluseWidthAndBandWidth_variable)}; t5:s5-[]→s6{calculatingfilterCoefficient!}; SysML主要關注系統(tǒng)級建模,在對雷達信息處理系統(tǒng)進行系統(tǒng)級建模時,對于計算過程,在活動圖中使用CallBehaviorAction元素來描述,通過CallBehaviorAction的name表達計算的含義,沒有對具體的計算過程進行建模,所以對應生成的AADL模型中的子程序都是空的。以子程序calculatingParameter為例,本文介紹同步語言的人工求精過程。calculatingParameter子程序主要完成多普勒中心估計的計算過程,在進行雙側扇掃前,由于不同方向的回波具有不同的多普勒值,需要估計多普勒中心。使用同步語言估計多普勒中心過程如下所示: Figure 8 AADL model of Main DSP module圖8 Main DSP模塊的AADL模型 01: processDoppeParameterEstimation:= 02: (! realnrn,nan; 03: ? realf′ 04: ) 05: (|R11:=F11(nrn,nan) 06: |… 07: |R14:=F14 (nrn,nan) 08: |K1:=F21(R11) 09: |… 10: |K4:=F24(R14) 11: |K′:=F3(K1,…,K4) 12: |f:=F4(K′) 13: |) 14: where 15: realR11,R12,R13,R14,K1,…,K4,K′; 16: end 其中,第2~4行輸入輸出信息,第5~7行計算4個符號相關參數(shù),第8~10行導出相應的相關系數(shù),第11行導出復數(shù)相關系數(shù),第12行將幅角轉變?yōu)槎嗥绽罩行念l率。在calculatingParameter子程序中調(diào)用該同步語言過程來估計多普勒中心。 在SysML的建模和擴展方面,挪威奧斯陸大學Simula研究所Behjati等人[4,5]提出了ExSAM(Extended SysML for Architecture Analysis Modeling)概要文件,它通過向SysML添加AADL概念來擴展SysML,能夠?qū)ο到y(tǒng)工程概念建模,并在需要時使用AADL分析工具。但是,使用AADL的分析工具的前提是手工將ExSAM的建模片段轉換為AADL模型。Ribeiro等人[12]探討了UML、SysML和實時及嵌入式系統(tǒng)建模與分析語言MARTE(Modeling and Analysis of Real Time and Embedded system)在RTS的軟硬件需求建模中的結合使用,表明僅SysML無法精確表達時間和性能方面的需求。由于SysML 可以通過建立不同的模型,從多個角度反映整個系統(tǒng)的結構特征,褚長勇等人[1]提出SysML需求圖到用例圖、用例圖到序列圖的轉換,從而提高了建模效率。李路野等人[13]以雷達信號處理系統(tǒng)為研究背景,提出了一種模型驅(qū)動的軟件開發(fā)流程,使用SysML建模并自動生成C代碼框架。 在SysML和AADL的集成使用研究方面,圖盧茲大學的de Saqui-Sannes等人[6]提出了一種基于模型的安全關鍵嵌入式系統(tǒng)設計、驗證和實現(xiàn)方法,將標準化的SysML(包括AVATAR實時概要文件)和AADL結合在一起,用于系統(tǒng)級建模、需求捕獲、用例和場景分析、體系結構描述,并使用SysML和AADL對飛行管理系統(tǒng)進行無縫建模、驗證和實現(xiàn)。Wang等人[7]研究了在基于多模型驅(qū)動工程中,如何有效集成使用SysML、AADL和FACE,從而涵蓋從早期的需求捕獲到最終的系統(tǒng)和嵌入式軟件的生成。萬小平等人[14]研究了基于XML的UML向AADL的模型轉換,使用戶在設計階段能夠結合運用AADL和UML工具的優(yōu)點對系統(tǒng)進行分析。本文關注SysML,是因為SysML可通過可跟蹤需求和通用的Block等特性支持系統(tǒng)工程。鄧佳佳等人[15]提出了一種SysML & AADL 的航電剎車控制系統(tǒng)實時性需求驗證方法,基于 SysML 建模語言建立系統(tǒng)模型,并在狀態(tài)機圖上添加用MARTE 描述的組件時間延遲,將SysML 模型轉化為符合 AADL 語義的模型。最后利用 AADL 分析工具得到實時性驗證結果。 本文提出一種SysML模型到AADL模型的自動轉換方法。首先定義SysML子集SubSysML;然后定義SubSysML到AADL的轉換規(guī)則及轉換算法,使用EMF框架技術實現(xiàn)SubSysML模型到AADL模型的自動轉換,對生成的AADL初始設計模型使用同步語言進行精化;最后以雷達信息處理系統(tǒng)為案例驗證了本文方法的有效性。 在SysML模型轉換為AADL模型的過程中,如果目標模型與源模型語義不一致,即使源模型能夠滿足系統(tǒng)設計要求,也無法保證轉換后的目標模型也滿足相應的性質(zhì),出現(xiàn)了語義保持(Semantics Preservation)問題。語義保持問題是模型轉換過程中的重要研究內(nèi)容,其證明大致可以在2個層次展開:模型實例層次(Instance-based)和語言層次(Language-based)。前者針對具體的模型實例,每次轉換都需要重新證明,通用性不夠;后者針對源語言和對象語言的所有語法結構及語義,只需證明1次就可以推廣到任意模型實例,但證明難度較大。未來,計劃研究基于時間變遷系統(tǒng)的互模擬等價(Bi-simulation)、單向模擬(Simulation)等價的基本方法,并基于定理證明器Coq對模型轉換的語義一致性保持進行證明。7.3 AADL模型的生成
8 相關工作
9 結束語