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