国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

安全關(guān)鍵異構(gòu)軟件混合建模及代碼生成方法*

2021-05-23 06:11:38楊志斌袁勝浩JeanPaulBODELEIXMamounFILALI
軟件學(xué)報(bào) 2021年4期
關(guān)鍵詞:代碼生成數(shù)據(jù)類型多任務(wù)

宗 喆 ,楊志斌 ,袁勝浩 ,周 勇 ,Jean-Paul BODELEIX ,Mamoun FILALI

1(南京航空航天大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,江蘇 南京 211106)

2(高安全系統(tǒng)的軟件開(kāi)發(fā)與驗(yàn)證技術(shù)工信部重點(diǎn)實(shí)驗(yàn)室(南京航空航天大學(xué)),江蘇 南京 211106)

3(IRIT-University of Toulouse,Toulouse 31062,France)

安全關(guān)鍵軟件(safety-critical software)[1]是指應(yīng)用于航空、航天和核能等領(lǐng)域的安全關(guān)鍵系統(tǒng)中,且其運(yùn)行失效會(huì)引起系統(tǒng)處于危險(xiǎn)狀態(tài),從而導(dǎo)致人員傷害、重大財(cái)產(chǎn)損失或者環(huán)境破壞等災(zāi)難性后果的一類軟件,它對(duì)功能正確性、實(shí)時(shí)性、安全性等性質(zhì)有極高的要求.隨著系統(tǒng)復(fù)雜性的急劇增加,未來(lái)安全關(guān)鍵軟件越來(lái)越多地采用異構(gòu)構(gòu)件組合架構(gòu),即構(gòu)件由不同供應(yīng)商以O(shè)EM(original equipment manufacturer)方式提供,各構(gòu)件可能具有不同特性,例如使用不同的計(jì)算模型(狀態(tài)機(jī)、同步數(shù)據(jù)流、異步執(zhí)行模型、連續(xù)時(shí)間模型等)或?qū)崿F(xiàn)語(yǔ)言,使得整個(gè)軟件系統(tǒng)呈現(xiàn)異構(gòu)性[2,3].異構(gòu)軟件系統(tǒng)的執(zhí)行與交互語(yǔ)義也從完全同步發(fā)展到全局異步-局部同步GALS(globally asynchronous locally synchronous)方式,即不同構(gòu)件具有各自的時(shí)鐘控制(稱為多時(shí)鐘,multirates),構(gòu)件之間采用異步通信方式.

近年來(lái),多范式建模方法MPM(multi-paradigm modeling)[4,5]已成為安全關(guān)鍵異構(gòu)軟件設(shè)計(jì)的研究熱點(diǎn).多范式建模方法可以通過(guò)模型轉(zhuǎn)換、模型組合、混合建模和混合仿真等方式對(duì)軟件系統(tǒng)中使用的不同領(lǐng)域知識(shí)、不同視圖以及不同抽象層次進(jìn)行建模,充分發(fā)揮各種建模語(yǔ)言的描述能力.在安全關(guān)鍵系統(tǒng)領(lǐng)域,常用的建模語(yǔ)言主要包括Modelica[6]、SysML[7]、UML Marte[8]、AADL[9]、EAST-ADL[10]、SCADE[11]、Simulink[12]、Ptolemy II[13]等.其中,AADL(architecture analysis and design language)是由美國(guó)汽車工程師協(xié)會(huì)SAE 提出的面向安全關(guān)鍵系統(tǒng)的一種建模語(yǔ)言標(biāo)準(zhǔn)(SAE AS5506).AADL 以層次化構(gòu)件的方式表達(dá)系統(tǒng)的軟硬件架構(gòu).一方面,AADL可以非常方便地表達(dá)多時(shí)鐘、GALS、異步通信等異構(gòu)軟件特征;另一方面,AADL 提供定義新屬性集和附件(annex)等多種擴(kuò)展方式,使得AADL 逐漸成為安全關(guān)鍵異構(gòu)軟件多范式建模的重要選擇.

在支持多領(lǐng)域知識(shí)的多范式建模方面:Modelica 是一種面向?qū)ο蟮慕UZ(yǔ)言,用于對(duì)大型、復(fù)雜和異構(gòu)系統(tǒng)進(jìn)行建模,并支持多領(lǐng)域建模.例如,航空航天領(lǐng)域的安全關(guān)鍵異構(gòu)系統(tǒng)涉及機(jī)械、電氣、液壓控制等多種領(lǐng)域模型.Sodja 等人[14]提出一種模型簡(jiǎn)化技術(shù),對(duì)基于Modelica 的信息物理融合系統(tǒng)CPS(cyber-physical system)多領(lǐng)域模型進(jìn)行模型簡(jiǎn)化,以降低基于Modelica 的異構(gòu)模型的驗(yàn)證與執(zhí)行過(guò)程的復(fù)雜性.

在不同抽象層次的多范式建模方面:Hugues 等人[15]提出一種基于SysML 和AADL 的安全關(guān)鍵系統(tǒng)設(shè)計(jì)、驗(yàn)證及代碼生成方法.其中,SysML 主要用于系統(tǒng)高層建模與分析,當(dāng)該系統(tǒng)分解給軟件來(lái)實(shí)現(xiàn)時(shí),就轉(zhuǎn)換到AADL,用AADL 以逐步求精的方式進(jìn)行軟件設(shè)計(jì)與實(shí)現(xiàn).Wang 和Hugues 等人[16]則進(jìn)一步提出面向未來(lái)開(kāi)放式航空電子系統(tǒng)的多范式建模方法,即SysML 用于系統(tǒng)工程建模,轉(zhuǎn)換到基于AADL 的軟件架構(gòu)設(shè)計(jì),并進(jìn)一步轉(zhuǎn)換到基于FACE[17]的開(kāi)放式航空電子系統(tǒng)架構(gòu)實(shí)現(xiàn)和基于SCADE 的軟件構(gòu)件功能實(shí)現(xiàn).

在支持多種功能行為表達(dá)的多范式建模方面:AADL 提供行為附件BA(behavior annex)[18]對(duì)基于控制流方式的構(gòu)件功能行為進(jìn)行表達(dá);正在制定中的AADL Hybrid Annex[19]則支持基于Hybrid CSP(communicating sequential processes)對(duì)構(gòu)件的連續(xù)行為模型進(jìn)行構(gòu)造;Zhan 和Zhan 等人[20]使用AADL 與Simulink 進(jìn)行混合建模,擴(kuò)展AADL 描述系統(tǒng)連續(xù)行為的表達(dá)能力;歐空局ESA 提出基于AADL、Simulink 和規(guī)范與描述語(yǔ)言SDL(specification and description language)[21,22]的多范式建模方法TASTE[23-25].TASTE 基于AADL 語(yǔ)言子集描述系統(tǒng)框架,并使用Simulink、SDL、C/Ada 等描述系統(tǒng)功能行為,目前,TASTE 主要支持串行Ada 代碼自動(dòng)生成和集成.

隨著安全關(guān)鍵異構(gòu)軟件對(duì)計(jì)算性能要求的不斷增加,使用多核處理器成為航空航天領(lǐng)域的迫切需求.我們提出AADL 及行為附件BA、同步語(yǔ)言SIGNAL、SDL、Simulink、C、Ada 的多范式建模方法:AADL 用于表達(dá)安全關(guān)鍵異構(gòu)軟件架構(gòu),AADL 行為附件BA、同步語(yǔ)言SIGNAL、SDL、Simulink 分別支持狀態(tài)機(jī)、同步數(shù)據(jù)流、異步執(zhí)行模型、連續(xù)時(shí)間模型等多種計(jì)算模型,并基于抽象語(yǔ)法標(biāo)記ASN.1(Abstract Syntax Notation One)[26,27]對(duì)異構(gòu)模型間的交互數(shù)據(jù)建模.SDL 作為一種異步建模語(yǔ)言,其主要特征是:可以準(zhǔn)確描述軟件的異步功能行為,用于表達(dá)安全關(guān)鍵軟件異步行為.我們?cè)谇捌谘芯縖28,29]中提出了同步語(yǔ)言SIGNAL 和AADL 的混合建模及多核代碼自動(dòng)生成方法,本文則主要介紹AADL 和SDL 的混合建模(兩種語(yǔ)言的多范式建模,我們稱其為混合建模)及Ada 多任務(wù)代碼生成方法.兩者的區(qū)別在于:同步語(yǔ)言SIGNAL 主要基于數(shù)據(jù)流等式表達(dá)AADL構(gòu)件的功能行為,側(cè)重于對(duì)數(shù)值計(jì)算相關(guān)的算法過(guò)程進(jìn)行建模,例如GNC 系統(tǒng)中對(duì)地斜開(kāi)關(guān)算法等;而SDL 則側(cè)重基于控制流方式表達(dá)構(gòu)件功能行為,側(cè)重于對(duì)系統(tǒng)控制流程進(jìn)行建模,如GNC 系統(tǒng)中的航天器三軸姿態(tài)角度修正控制模塊等.

AADL-SDL 混合建模過(guò)程可分為自頂向下和自底向上兩個(gè)方向:在自頂向下的建模過(guò)程中,首先,采用AADL 描述系統(tǒng)體系結(jié)構(gòu),并基于AADL 數(shù)據(jù)組件描述系統(tǒng)中涉及的數(shù)據(jù)類型;其次,對(duì)于具體功能行為采用SDL 模型進(jìn)行描述,并給出AADL 數(shù)據(jù)組件到ASN.1 的轉(zhuǎn)換,以保證異構(gòu)構(gòu)件間交互數(shù)據(jù)的一致性.而在自底向上的建模過(guò)程中,首先,采用SDL 語(yǔ)言描述具體組件功能,并基于ASN.1 描述SDL 模型和外部環(huán)境(即其他組件或系統(tǒng)輸入/輸出)之間的交互;其次,基于AADL 描述系統(tǒng)體系結(jié)構(gòu),并通過(guò)屬性集擴(kuò)展的方式規(guī)定AADL 體系結(jié)構(gòu)模型和SDL 功能行為模型之間的調(diào)用關(guān)系和數(shù)據(jù)交換方式.例如,安全關(guān)鍵系統(tǒng)已經(jīng)存在多個(gè)功能模塊的SDL 模型,如何基于AADL 將這些不同功能模塊自底向上地集成起來(lái),構(gòu)成完整的系統(tǒng)體系結(jié)構(gòu)模型.

本文考慮自底向上的AADL-SDL 混合建模過(guò)程,主要貢獻(xiàn)包括:

(1) 提出一種AADL 與SDL 混合建模方法,包括AADL-ASN.1 和AADL-SDL 擴(kuò)展屬性集方法.其中,AADL-ASN.1 擴(kuò)展屬性集主要用于描述混合模型中不同構(gòu)件間的數(shù)據(jù)類型,AADL-SDL 屬性集用于支持在AADL 體系結(jié)構(gòu)模型中集成SDL 模型對(duì)應(yīng)的功能行為.

(2) 提出一種面向多核處理器的AADL-SDL 混合模型到Ada 多任務(wù)代碼生成方法.首先,基于AADL 體系結(jié)構(gòu)模型生成Ada 框架代碼;其次,根據(jù)混合模型中的ASN.1 數(shù)據(jù)屬性生成Ada 數(shù)據(jù)類型代碼.然后,基于混合模型中的線程運(yùn)行時(shí)屬性生成Ada 運(yùn)行時(shí)代碼;最后,基于SDL 模型生成Ada 多任務(wù)代碼,并將所有生成代碼進(jìn)行集成.

(3) 基于AADL 開(kāi)源建模工具Osate[30,31]實(shí)現(xiàn)了AADL-SDL 混合建模工具ASCM(AADL and SDL comodeling tool)和多任務(wù)Ada 代碼生成工具AS2MTA(AADL and SDL to multi-task ada code generator),并使用實(shí)際工業(yè)案例AOCS 對(duì)本文所提方法的有效性進(jìn)行了分析.

(4) 相較于前期工作,本文擴(kuò)展了AADL 多范式建模框架對(duì)軟件控制流程的描述能力,在支持狀態(tài)機(jī)、同步數(shù)據(jù)流、連續(xù)時(shí)間模型等多種計(jì)算模型的基礎(chǔ)上,增加了異步執(zhí)行模型的建模過(guò)程.生成的Ada 代碼相較于前期工作,增加了流程控制代碼的并發(fā)過(guò)程,提升了代碼的運(yùn)行效率.

本文第1 節(jié)介紹AADL、SDL 建模語(yǔ)言和ASN.1 標(biāo)準(zhǔn)的基本概念.第2 節(jié)概述面向安全關(guān)鍵異構(gòu)軟件的AADL 多范式建??蚣?第3 節(jié)對(duì)本文提出的AADL-SDL 混合建模方法進(jìn)行詳細(xì)闡述.第4 節(jié)給出AADL-SDL混合模型到多任務(wù)Ada 代碼生成方法.第5 節(jié)介紹AADL-SDL 混合建模工具ASCM 和多任務(wù)Ada 代碼生成工具AS2MTA.第6 節(jié)通過(guò)對(duì)工業(yè)界案例導(dǎo)航、制導(dǎo)與控制系統(tǒng)GNC 建模與代碼生成進(jìn)行分析并與部分前期研究進(jìn)行比較,對(duì)本文所提方法及原型工具進(jìn)行評(píng)估.第7 節(jié)對(duì)多范式建模、混合建模和代碼生成相關(guān)工作進(jìn)行分析.第8 節(jié)總結(jié)全文,并對(duì)未來(lái)研究?jī)?nèi)容進(jìn)行初步探討.

1 研究背景

1.1 體系結(jié)構(gòu)分析與設(shè)計(jì)語(yǔ)言AADL

AADL 作為一種針對(duì)嵌入式系統(tǒng)的多范式建模語(yǔ)言,通過(guò)AADL 構(gòu)件以及構(gòu)件之間的連接,從軟件結(jié)構(gòu)、軟件運(yùn)行時(shí)環(huán)境和硬件結(jié)構(gòu)這3 個(gè)方面對(duì)嵌入式系統(tǒng)體系結(jié)構(gòu)進(jìn)行建模描述.

1) 軟件結(jié)構(gòu):支持通過(guò)線程、線程組、進(jìn)程、數(shù)據(jù)、子程序等構(gòu)件以及連接對(duì)軟件的內(nèi)部結(jié)構(gòu)進(jìn)行描述.通過(guò)上述構(gòu)件的組合,建立具有層次化的軟件體系結(jié)構(gòu)模型.

2) 軟件運(yùn)行時(shí)環(huán)境:支持通過(guò)分發(fā)協(xié)議、通信協(xié)議、調(diào)度策略、模式變換協(xié)議以及分區(qū)機(jī)制等屬性對(duì)軟件執(zhí)行模型進(jìn)行建模.

3) 硬件結(jié)構(gòu):支持通過(guò)處理器、虛擬處理器、存儲(chǔ)器、外設(shè)、總線、虛擬總線等構(gòu)件以及連接對(duì)系統(tǒng)的硬件執(zhí)行平臺(tái)進(jìn)行建模.

此外,AADL 支持基于自定義屬性集(property set)和基于附件的擴(kuò)展.其中,基于自定義屬性集的擴(kuò)展支持AADL 構(gòu)件與多種異構(gòu)模型之間通過(guò)自定義屬性進(jìn)行關(guān)聯(lián),以實(shí)現(xiàn)AADL 模型與多種異構(gòu)模型間的集成.基于附件的擴(kuò)展支持在AADL 核心構(gòu)件的基礎(chǔ)上通過(guò)增加附件的方式,提升AADL 建模語(yǔ)言的描述能力,例如:Behavior Annex 擴(kuò)展基于控制流方式的構(gòu)件功能行為表達(dá)能力;Hybrid Annex 擴(kuò)展AADL 支持對(duì)構(gòu)件的連續(xù)行為模型進(jìn)行構(gòu)造;Error Model Annex[32]擴(kuò)展了AADL 描述系統(tǒng)故障行為的能力.AADL 核心構(gòu)件、AADL 擴(kuò)展屬性集和AADL 附件共同組成完整的AADL 模型.

1.2 規(guī)范與描述語(yǔ)言SDL

規(guī)范與描述語(yǔ)言SDL 支持使用半圖形、半文本的方式描述特定類型的嵌入式系統(tǒng)的功能行為.SDL 有圖形表示法GR(graphical representation)和文字短語(yǔ)表示法PR(phrase representation)兩種.其中,GR 用一系列的符號(hào)和圖形來(lái)描述系統(tǒng),比較直觀;PR 用語(yǔ)句來(lái)描述系統(tǒng),便于計(jì)算機(jī)處理.這兩種表示方法在語(yǔ)義上是等效的,它們之間可以互相轉(zhuǎn)換.SDL 建模元素主要分為結(jié)構(gòu)元素、定義元素和行為元素.

結(jié)構(gòu)元素:主要用來(lái)描述整個(gè)系統(tǒng)模型的分層結(jié)構(gòu),包括系統(tǒng)(system)、功能塊(block)、進(jìn)程(process)和過(guò)程(procedure).圖1 給出了一個(gè)SDL 系統(tǒng)模型結(jié)構(gòu),其中,SDL 系統(tǒng)層包括兩個(gè)SDL 功能塊B1 和B2,B1、B2 分別通過(guò)SDL 信號(hào)c1、c3 與系統(tǒng)外界交互,B1、B2 之間則通過(guò)SDL 信號(hào)c2 進(jìn)行交互.SDL 功能塊B1 中進(jìn)程P1、P2 分別通過(guò)SDL 信號(hào)R1 和R2 與外界交互,P1 和P2 之間通過(guò)信號(hào)R3、R4 進(jìn)行交互.SDL 進(jìn)程P1 中描述了當(dāng)前進(jìn)程的行為,并且定義了SDL 過(guò)程Proc1,Proc1 對(duì)當(dāng)前過(guò)程的功能行為進(jìn)行建模.

Fig.1 An example of SDL system model structure圖1 SDL 系統(tǒng)模型結(jié)構(gòu)示例

定義元素:對(duì)軟件中需要使用到的各種數(shù)據(jù)(data)、臨時(shí)變量(variable)和子功能模塊之間的信號(hào)(signal)進(jìn)行建模描述.

行為元素:對(duì)進(jìn)程(process)/過(guò)程(procedure)模塊中的功能行為進(jìn)行建模.行為元素包括開(kāi)始狀態(tài)(start)、狀態(tài)(state)、觸發(fā)器(trigger)、行為(action)、表達(dá)式(expression)等.其中,開(kāi)始狀態(tài)和狀態(tài)用來(lái)基于自動(dòng)機(jī)的方式對(duì)系統(tǒng)行為進(jìn)行建模;觸發(fā)器包含輸入(input)和保存(save)元素,用來(lái)對(duì)子系統(tǒng)的中斷行為進(jìn)行建模,通常與通信信道組合使用,描述中斷信號(hào)的傳入和相關(guān)數(shù)據(jù)的保存;行為包含輸出(output)、任務(wù)(task)過(guò)程調(diào)用(procedure call)、分支選擇(switch)和進(jìn)程創(chuàng)建等,主要用來(lái)對(duì)具體功能行為中需要的輸出操作、順序流程、外部過(guò)程調(diào)用、分支選擇和進(jìn)程創(chuàng)建等過(guò)程進(jìn)行建模;表達(dá)式(expression)支持以偽代碼的形式對(duì)具體行為進(jìn)行建模描述.

1.3 抽象語(yǔ)法標(biāo)記ASN.1

ASN.1 作為一種國(guó)際標(biāo)準(zhǔn),用于描述通過(guò)電信協(xié)議傳輸?shù)臄?shù)據(jù).ASN.1 提供了一種對(duì)數(shù)據(jù)進(jìn)行表示、編碼、傳輸和解碼的標(biāo)準(zhǔn)格式,能夠有效地對(duì)異構(gòu)系統(tǒng)之間的通信數(shù)據(jù)進(jìn)行建模.在網(wǎng)絡(luò)管理、安全電子郵件、移動(dòng)網(wǎng)絡(luò)和空中交通管制等領(lǐng)域有著廣泛的運(yùn)用.國(guó)際電信聯(lián)盟ITU(International Telecommunication Union)也在標(biāo)準(zhǔn)ITU-T Z.105[33]中推薦在SDL 模型中使用ASN.1 描述數(shù)據(jù)類型.

ASN.1 中定義了整型(INTEGER)、布爾(BOOLEAN)、字符串(IA5String,UniveraslString,…)和位串(BIT STRING)等基本數(shù)據(jù)類型,并且支持有序集合(SEQUENCE)、有序數(shù)組(SEQUENCE OF)、無(wú)序集合(SET)和無(wú)序數(shù)組(SET OF)等復(fù)雜數(shù)據(jù)類型的構(gòu)造.此外,ASN.1 還支持壓縮編碼規(guī)則PER(packed encoding rule)、可辨別編碼規(guī)則DER(distinguished encoding rule)和XML 編碼規(guī)則XER(XML encoding rule)等數(shù)據(jù)編碼、解碼規(guī)則的描述.因此,ASN.1 也廣泛應(yīng)用于需要計(jì)算機(jī)通信和其他需要編碼數(shù)據(jù)的行業(yè).

2 安全關(guān)鍵異構(gòu)軟件的AADL 多范式建??蚣?/h2>

安全關(guān)鍵異構(gòu)軟件的AADL 多范式建??蚣苋鐖D2 所示.核心思路是基于AADL 描述系統(tǒng)體系結(jié)構(gòu),基于AADL BA、同步語(yǔ)言SIGNAL、SDL、Simulink、C 和Ada 等描述功能行為,以及基于AADL 數(shù)據(jù)構(gòu)件和ASN.1擴(kuò)展屬性集描述異構(gòu)模型間的交互數(shù)據(jù).

Fig.2 AADL multi-paradigm modeling framework圖2 AADL 多范式建??蚣?/p>

本文主要給出AADL 和SDL 混合建模及面向多核處理器平臺(tái)的Ada 代碼自動(dòng)生成方法,主要涉及圖2 中紅色虛線標(biāo)注的部分.

(1) 提出一種自底向上的AADL 與SDL 混合建模方法.首先,為了保證AADL 模型與SDL 模型交互數(shù)據(jù)的一致性,提出AADL-ASN.1 擴(kuò)展屬性集,以支持在AADL 模型中使用ASN.1 進(jìn)行數(shù)據(jù)建模.其次,為了支持在AADL 模型中使用SDL 描述構(gòu)件功能行為,提出AADL-SDL 擴(kuò)展屬性集,主要包括AADL 模型與SDL 模型間的接口映射、多線程調(diào)度、線程分發(fā)策略等相關(guān)屬性,從而支持AADL 和SDL 的混合建模.

(2) 提出一種面向多核處理器平臺(tái)的AADL-SDL 混合模型到Ada 多任務(wù)代碼的生成方法.首先,基于AADL 體系結(jié)構(gòu)模型生成對(duì)應(yīng)的Ada 框架代碼;其次,基于AADL 數(shù)據(jù)構(gòu)件與AADL-ASN.1 屬性集生成Ada數(shù)據(jù)類型代碼;然后,基于AADL 構(gòu)件與AADL-SDL 屬性集生成Ada 運(yùn)行時(shí)代碼;最后,基于SDL 行為模型生成Ada 多任務(wù)代碼,并將所有生成的代碼進(jìn)行集成.

(3) 基于AADL 開(kāi)源建模工具Osate 與SDL 開(kāi)源建模工具OpenGEODE[34]實(shí)現(xiàn)了AADL-SDL 混合建模工具ASCM 和Ada 多任務(wù)代碼生成工具AS2MTA,并且使用實(shí)際的工業(yè)案例GNC 系統(tǒng)對(duì)本文所提方法進(jìn)行評(píng)估.

3 AADL-SDL 混合建模方法

本節(jié)主要對(duì)AADL-SDL 混合建模方法的具體內(nèi)容進(jìn)行詳細(xì)介紹.首先,為了支持SDL 模型與AADL 模型間的數(shù)據(jù)交互建模,在第3.1 節(jié)給出AADL-ASN.1 交互數(shù)據(jù)屬性集擴(kuò)展.其次,在第3.2 節(jié)給出AADL-SDL 混合建模屬性集擴(kuò)展以支持將SDL 模型以自底向上的方式集成到AADL 架構(gòu)模型中.

3.1 AADL-ASN.1交互數(shù)據(jù)屬性集擴(kuò)展

由于SDL 模型通過(guò)ASN.1 描述數(shù)據(jù)類型,在進(jìn)行自底向上的AADL-SDL 混合建模的過(guò)程中,為了保證SDL模型與AADL 模型之間數(shù)據(jù)交互的一致性,本文提出AADL-ASN.1 交互數(shù)據(jù)屬性集擴(kuò)展以支持在AADL 模型中使用ASN.1 進(jìn)行數(shù)據(jù)建模.該屬性集主要包括對(duì)基本數(shù)據(jù)類型和復(fù)雜數(shù)據(jù)類型進(jìn)行建模的相關(guān)屬性.其中,基本數(shù)據(jù)類型包括整型(INTEGER)、實(shí)數(shù)(REAL)、布爾(BOOLEAN)和字符串(IA5String,UniveraslString,…)等;而復(fù)雜數(shù)據(jù)類型包括有序集合(ASN1_Sequence)、有序數(shù)組(ASN1_Sequence_of)、無(wú)序集合(ASN1_Set)和無(wú)序數(shù)組(ASN1_Set_of)等.

AADL-ASN.1 屬性集擴(kuò)展的主要屬性見(jiàn)表1.

Table 1 The ASN.1 data properties表1 ASN.1 數(shù)據(jù)性質(zhì)

其中,屬性Is_Base_Type 支持與AADL 數(shù)據(jù)構(gòu)件綁定,屬性值的類型為aadlboolean,用于描述當(dāng)前AADL構(gòu)件是否為基本數(shù)據(jù)類型.屬性的定義如下:

由于ASN.1 語(yǔ)法中支持通過(guò)數(shù)據(jù)范圍定義數(shù)據(jù)類型,因此,在AADL-ASN.1 擴(kuò)展屬性集中增加了實(shí)數(shù)(浮點(diǎn))取值范圍Real_Value_Range、整數(shù)取值范圍Integer_Value_Range、串長(zhǎng)度String_Size、數(shù)組長(zhǎng)度范圍Sequence 等屬性.具體定義如下:

ASN.1 支持的數(shù)據(jù)類型包括基本數(shù)據(jù)類型和復(fù)雜數(shù)據(jù)類型.具體定義如下:

屬性Support_Data_Type 的類型為枚舉類型,定義了AADL-ASN.1 屬性集支持的所有ASN.1 數(shù)據(jù)類型,作為屬性Data_Type 的屬性值,與Data_Type 組合使用描述數(shù)據(jù)類型.例如,使用Support_Data_Type 中的元素ASN1_Boolean 為Data_Type 賦值,Data_Type=>ASN1_Boolean 定義了當(dāng)前AADL 數(shù)據(jù)構(gòu)件的類型為ASN.1 布爾類型.

除了使用Data_Type 定義數(shù)據(jù)類型,AADL-ASN.1 屬性集還支持對(duì)4 種復(fù)雜數(shù)據(jù)類型進(jìn)行詳細(xì)描述.需要使用的屬性定義如下:屬性ASN1_Item 是一個(gè)record 類型,定義了復(fù)雜數(shù)據(jù)類型中的基本元素,即復(fù)雜數(shù)據(jù)類型中的成員變量.其中,ID_Value 定義的當(dāng)前變量在有序集合(ASN1_Sequence)和有序數(shù)組(ASN1_Sequence_of)中的序號(hào),如果是無(wú)序的結(jié)構(gòu),ID_Value 默認(rèn)值為–1.Name_Value 定義當(dāng)前變量的變量名,Type_Value 定義當(dāng)前變量的類型,Default_Value 定義當(dāng)前變量的默認(rèn)值.屬性ASN1_Sequence、ASN1_Sequence_of、ASN1_Set 和ASN1_Set_of 分別定義上述4 種復(fù)雜數(shù)據(jù)類型.其中,ASN1_Sequence 和ASN1_Set 的屬性值的類型為list,list 中的元素為ASN1_Item.ASN1_Set_of 和ASN1_Sequence_of 的屬性值為record,record 的成員item 類型為list 定義數(shù)組中的元素,成員Type_Value 定義數(shù)組中元素的類型,成員Count 定義數(shù)組中元素的個(gè)數(shù),Type_Rename_To 定義引用類型.

3.2 AADL-SDL混合建模屬性集擴(kuò)展

在第3.1 節(jié)中主要介紹了AADL-ASN.1 交互數(shù)據(jù)屬性集擴(kuò)展,本節(jié)將給出AADL-SDL 混合建模屬性集擴(kuò)展的主要內(nèi)容.在AADL-SDL 混合模型中AADL 構(gòu)件的功能行為使用SDL 模型表達(dá),SDL 功能行為模型在執(zhí)行過(guò)程中的運(yùn)行時(shí)屬性通過(guò)AADL-SDL 混合建模屬性集進(jìn)行建模.屬性集中主要包括SDL 模型運(yùn)行時(shí)的分發(fā)策略、分發(fā)周期等運(yùn)行時(shí)屬性,數(shù)據(jù)構(gòu)件的操作類型、訪問(wèn)權(quán)限屬性,SDL 行為模型的相關(guān)屬性等.AADL-SDL混合建模屬性集擴(kuò)展的主要內(nèi)容見(jiàn)表2.

Table 2 Properties of the SDL model表2 SDL 模型相關(guān)屬性

屬性Connections_Types 定義AADL 構(gòu)件間端口數(shù)據(jù)傳輸?shù)念愋?支持立即傳輸(immediate)和延遲傳輸(delay),屬性定義如下:

屬性Supported_Connection_Types 的類型為枚舉類型,定義了兩種支持的連接類型Immediate 和Delay,作為屬性Connection_Types 的屬性值.例如將Supported_Connection_Types 中的Immediate 賦值給屬性Connections_Types,Connections_Types=>Immediate 定義立即傳輸?shù)臄?shù)據(jù)傳輸連接.

AADL-SDL 支持對(duì)周期(periodic)、偶發(fā)(sporadic)、非周期(aperiodic)等線程分發(fā)策略進(jìn)行建模,具體使用到的屬性如下:

屬性Supported_Dispatch_Protocols 是枚舉類型,作為屬性Dispatch_Protocols 的屬性值支持上述3 種分發(fā)策略.例如,Supported_Dispatch_Protocols 中的Periodic 定義了周期分發(fā)策略,Dispatch_Protocols=>Periodic 綁定的AADL 線程構(gòu)件采用的就是周期分發(fā)策略.

屬性Deadline 繼承了AADL 的時(shí)間屬性Time,描述AADL 線程的最長(zhǎng)執(zhí)行時(shí)間.例如,Deadline=>500ms,當(dāng)前線程構(gòu)件的最長(zhǎng)執(zhí)行時(shí)間為500ms.

屬性Dispatch_Period 描述不同分發(fā)策略下AADL 線程構(gòu)件的需要描述的時(shí)間片段.例如,AADL 線程構(gòu)件綁定Dispatch_Period=>10ms,在周期分發(fā)策略下,定義了線程的分發(fā)周期為10ms.在偶發(fā)(sporadic)分發(fā)策略下,定義了相鄰觸發(fā)事件的最小時(shí)間間隔為10ms.

屬性Period_Offset 定義了采用周期分發(fā)策略的線程的啟動(dòng)偏移時(shí)間.例如,在未設(shè)置當(dāng)前屬性的周期線程中,默認(rèn)在系統(tǒng)啟動(dòng)時(shí)就啟動(dòng)線程.Period_Offset=>10ms 綁定的線程,在系統(tǒng)啟動(dòng)后延遲10ms 啟動(dòng)線程.

除了線程的分發(fā)過(guò)程,AADL-SDL 屬性集還支持對(duì)數(shù)據(jù)的操作與訪問(wèn)類型.數(shù)據(jù)的操作類型包含保護(hù)數(shù)據(jù)(protected)與非保護(hù)數(shù)據(jù)(unprotected).數(shù)據(jù)的訪問(wèn)類型包括只讀、只寫(xiě)和讀寫(xiě).屬性的具體定義如下所示:

其中,屬性Support_Operation_Kinds 與Support_Permissions 是枚舉類型,分別定義屬性Data_Kind 與Access_Permission 的屬性值.例如,Data_Kind=>Protected、Access_Permission=>Read_Only 描述了當(dāng)前AADL數(shù)據(jù)構(gòu)件定義的數(shù)據(jù)為保護(hù)類型并且只讀.

AADL-SDL 屬性集定義了對(duì)SDL 模型的接口描述,以確保AADL 模型能夠與SDL 模型的接口兼容.使用到的主要屬性如下所示:

AADL-SDL 擴(kuò)展屬性集支持通過(guò)SDL system 實(shí)現(xiàn)AADL 構(gòu)件的功能行為,通過(guò)SDL signal 實(shí)現(xiàn)數(shù)據(jù)交互.其中,屬性Supported_Element_Types 定義了AADL 構(gòu)件支持的SDL 元素,屬性Element_Name 描述當(dāng)前AADL構(gòu)件對(duì)應(yīng)的SDL 實(shí)現(xiàn)的名稱,屬性Element_Type 定義了當(dāng)前構(gòu)件在SDL 中實(shí)現(xiàn)為signal 或system,屬性Source_Language 定義當(dāng)前構(gòu)件的具體實(shí)現(xiàn).此外,如果AADL 中的數(shù)據(jù)傳輸過(guò)程含有參數(shù),則使用屬性Signal_Type 描述參數(shù)的類型.

4 Ada 多任務(wù)代碼生成

AADL-SDL 混合模型的Ada 多任務(wù)代碼生成主要包括兩個(gè)部分:AADL 體系結(jié)構(gòu)模型到Ada 多任務(wù)代碼的生成和SDL 功能行為模型到Ada 多任務(wù)代碼的生成.本節(jié)將詳細(xì)介紹上述代碼生成方法的具體內(nèi)容.

4.1 AADL模型到Ada多任務(wù)代碼生成方法

AADL 模型到Ada 多任務(wù)代碼的生成方法主要包括3 個(gè)部分.(1) AADL 結(jié)構(gòu)模型到Ada 框架代碼的生成方法;(2) AADL 數(shù)據(jù)構(gòu)件到Ada 數(shù)據(jù)類型代碼的生成方法;(3) AADL 線程構(gòu)件到Ada 運(yùn)行時(shí)代碼的生成方法.

4.1.1 AADL 結(jié)構(gòu)模型到Ada 框架代碼的生成方法

AADL 結(jié)構(gòu)模型主要由系統(tǒng)構(gòu)件、進(jìn)程構(gòu)件、線程構(gòu)件和子程序構(gòu)件等多種構(gòu)件組成.AADL 結(jié)構(gòu)模型生成的Ada 框架代碼主要包含多個(gè)Ada 過(guò)程(procedure)、函數(shù)(function)、任務(wù)(task)以及相互之間的調(diào)用過(guò)程.AADL 系統(tǒng)構(gòu)件與進(jìn)程構(gòu)件對(duì)應(yīng)Ada 代碼中的過(guò)程,系統(tǒng)構(gòu)件和進(jìn)程構(gòu)件中的特征(feature)、數(shù)據(jù)子構(gòu)件(data subcomponent)和連接(connection)分別對(duì)應(yīng)Ada 過(guò)程的形參、局部變量和保護(hù)對(duì)象.AADL 線程構(gòu)件和子程序構(gòu)件分別對(duì)應(yīng)Ada 代碼中的任務(wù)和函數(shù).Ada 框架代碼中每個(gè)Ada 過(guò)程、函數(shù)、任務(wù)只包含輸入輸出參數(shù)、局部變量聲明與調(diào)用關(guān)系,不包含軟件功能行為代碼.

4.1.2 AADL 數(shù)據(jù)構(gòu)件到Ada 數(shù)據(jù)類型代碼的生成方法

AADL 數(shù)據(jù)構(gòu)件生成Ada 數(shù)據(jù)類型代碼的過(guò)程包括如下步驟:首先,AADL 數(shù)據(jù)構(gòu)件通過(guò)綁定AADLASN.1 屬性集對(duì)AADL-SDL 混合模型中使用的ASN.1 數(shù)據(jù)類型進(jìn)行建模,得到AADL 數(shù)據(jù)模型;其次,通過(guò)AADL2ASN1 轉(zhuǎn)換算法生成ASN.1 數(shù)據(jù)文件;然后,通過(guò)ASN.1 編譯工具Asn1Scc[35]讀取ASN.1 數(shù)據(jù)文件,并生成對(duì)應(yīng)的Ada 數(shù)據(jù)類型代碼.AADL 數(shù)據(jù)模型到ASN.1 數(shù)據(jù)文件的轉(zhuǎn)換算法如下所示:

算法輸入為AADL 數(shù)據(jù)模型AADL_Data,輸出為ASN.1 數(shù)據(jù)ASN1_Data.首先獲取AADL 數(shù)據(jù)模型中的全部屬性data_properties(第4 行).通過(guò)函數(shù)setConfig 和setType 分別從屬性中解析出ASN.1 數(shù)據(jù)的名稱、ASN.1數(shù)據(jù)文件路徑等配置信息和ASN.1 數(shù)據(jù)的類型,并賦值給ASN1_Data(第5 行~第6 行);其次,通過(guò)函數(shù)getIs_Base_Type 獲取屬性Is_Base_Type 的值(第7 行),判斷當(dāng)前數(shù)據(jù)是否為基本數(shù)據(jù)類型(第8 行).如果是基本數(shù)據(jù)類型,則通過(guò)函數(shù)setID、setRange 和setValue 分別獲取ASN.1 數(shù)據(jù)的編號(hào)、范圍和默認(rèn)值,并賦值給ASN1_Data(第8 行~第11 行).如果不是基本數(shù)據(jù)類型,則通過(guò)函數(shù)getSubDatas 獲取復(fù)雜數(shù)據(jù)類型所有的成員變量,并存入鏈表subdatas 中,遍歷鏈表subdatas,對(duì)鏈表中每個(gè)元素遞歸調(diào)用算法AADL2ASN1,并將返回值添加到ASN1_Data 的成員變量中(第12 行~第18 行).最后,返回ASN.1 數(shù)據(jù)ASN1_Data.

4.1.3 AADL 線程構(gòu)件到Ada 運(yùn)行時(shí)代碼的生成方法

AADL 線程構(gòu)件生成的Ada 代碼主要包括兩部分:Ada 運(yùn)行時(shí)代碼和Ada 任務(wù)執(zhí)行代碼.其中,Ada 任務(wù)執(zhí)行代碼通過(guò)SDL 行為模型生成(詳見(jiàn)第5.2 節(jié)),因此本節(jié)主要介紹Ada 運(yùn)行時(shí)代碼的生成.

根據(jù)第4.4 節(jié)中對(duì)AADL-SDL 屬性集的介紹,本文提出的AADL-SDL 混合建模方法中,主要支持AADL周期調(diào)度、偶發(fā)調(diào)度和非周期調(diào)度這3 種線程調(diào)度策略.

Ada 運(yùn)行時(shí)代碼生成主要采用Ada 語(yǔ)言提供的generic 機(jī)制,即提供一種參數(shù)化模板的方式來(lái)定義Ada 運(yùn)行時(shí)代碼模板.本節(jié)主要考慮Ada 運(yùn)行時(shí)代碼的生成過(guò)程,具體任務(wù)功能通過(guò)調(diào)用SDL 模型生成的SDL_procedure 來(lái)實(shí)現(xiàn).

AADL 周期線程調(diào)度策略生成對(duì)應(yīng)的Ada 周期任務(wù)代碼模板APTCT(Ada periodic task code template)見(jiàn)表3.AADL 線程通過(guò)屬性 Dispatch_Protocols=>Periodic 定義當(dāng)前線程的分發(fā)策略為周期性分發(fā),通過(guò)屬性Dispatch_Period=>TIME(ms)定義當(dāng)前線程的周期.TIME 用來(lái)表示時(shí)間數(shù)值.例如,綁定屬性Dispatch_Protocols=>Periodic 與Dispatch_Period=>20ms 的AADL 線程對(duì)應(yīng)的Ada 任務(wù)通過(guò)時(shí)間觸發(fā)執(zhí)行,以20ms 為周期,每隔20ms 觸發(fā)1 次.

周期性任務(wù)代碼模板的主要參數(shù)包括變量與過(guò)程.例如,變量Task_Period 表示任務(wù)執(zhí)行周期.過(guò)程SDL_procedure 為SDL 行為模型生成的Ada 任務(wù)執(zhí)行過(guò)程代碼,通過(guò)關(guān)鍵字in/out 設(shè)置Ada 任務(wù)執(zhí)行過(guò)程的傳入傳出參數(shù).

Table 3 Ada periodic task code template (APTCT)表3 Ada 周期任務(wù)代碼模板

AADL 偶發(fā)線程調(diào)度策略對(duì)應(yīng)的Ada 偶發(fā)任務(wù)代碼模板見(jiàn)表4.AADL 線程通過(guò)屬性Dispatch_Protocols=>Sporadic 定義當(dāng)前線程的分發(fā)策略為偶發(fā),通過(guò)屬性 Dispatch_Period=>TIME(ms);規(guī)定了任務(wù)連續(xù)分發(fā)(dispatch)的最小時(shí)間間隔為TIME(ms).例如,綁定屬性Dispatch_Protocols=>Sporadic 與Dispatch_Period=>20ms的AADL 線程對(duì)應(yīng)的Ada 任務(wù)通過(guò)接收外部參數(shù)或者隊(duì)列內(nèi)參數(shù)觸發(fā)執(zhí)行,即如果隊(duì)列不為空,那么讀取隊(duì)列內(nèi)數(shù)據(jù)并觸發(fā)過(guò)程;如果隊(duì)列為空,接收到外部數(shù)據(jù),那么讀取外部數(shù)據(jù)并觸發(fā)任務(wù).并且,由于屬性Dispatch_Period=>20ms 規(guī)定了觸發(fā)最小時(shí)間間隔為20ms,即每次任務(wù)執(zhí)行結(jié)束后,需要等待20ms 才能從隊(duì)列或者外部讀取下一個(gè)數(shù)據(jù)并觸發(fā)任務(wù).

Ada 偶發(fā)任務(wù)代碼模板ASTCT(Ada sporadic task code template)與Ada 周期任務(wù)代碼模板不同,首先,Ada偶發(fā)任務(wù)的阻塞發(fā)生在任務(wù)體中,通過(guò)調(diào)用函數(shù)Wait_For_Incoming_Events 監(jiān)聽(tīng)端口是否有事件到達(dá);其次,計(jì)算最小到達(dá)間隔時(shí)間Minimal_Inter_Arrival 來(lái)確保相連相鄰任務(wù)分發(fā)之間存在最小時(shí)間間隔.

Table 4 Ada sporadic task code template (ASTCT)表4 Ada 偶發(fā)任務(wù)代碼模板

AADL 非周期線程調(diào)度策略對(duì)應(yīng)的Ada 非周期任務(wù)代碼模板AATCT(Ada aperiodic task code template)見(jiàn)表5.

Table 5 Ada aperiodic task code template (AATCT)表5 Ada 非周期任務(wù)代碼模板

AADL 線程通過(guò)綁定屬性Dispatch_Protocols=>Aperiodic 定義當(dāng)前線程的分發(fā)策略為非周期,非周期調(diào)度沒(méi)有時(shí)間屬性.例如,綁定屬性Dispatch_Protocols=>Aperiodic 的AADL 線程對(duì)應(yīng)的Ada 任務(wù)在執(zhí)行過(guò)程中通過(guò)接收外部參數(shù)或者隊(duì)列內(nèi)參數(shù)觸發(fā)執(zhí)行,通過(guò)參數(shù)觸發(fā)執(zhí)行的過(guò)程與偶發(fā)調(diào)度相同,不同的是偶發(fā)調(diào)度設(shè)置了觸發(fā)最小時(shí)間間隔,而非周期調(diào)度沒(méi)有.非周期任務(wù)只要接收外部參數(shù)或者隊(duì)列不為空就會(huì)觸發(fā)執(zhí)行.

Ada 非周期任務(wù)模板和偶發(fā)任務(wù)模板的主要區(qū)別是,前者生成的代碼中沒(méi)有最小到達(dá)間隔時(shí)間Minimal_Inter_Arrival 的限制,當(dāng)Wait_For_Incoming_Events 監(jiān)聽(tīng)到事件時(shí),就觸發(fā)當(dāng)前線程,執(zhí)行當(dāng)前線程的功能任務(wù).

通過(guò)對(duì)上述Ada 任務(wù)代碼模板設(shè)置不同的參數(shù),實(shí)現(xiàn)Ada 任務(wù)代碼的生成,對(duì)于多個(gè)任務(wù)間的數(shù)據(jù)交互,使用Ada 隊(duì)列代碼模板AQCT(Ada queue code template)實(shí)現(xiàn)不同任務(wù)間的數(shù)據(jù)交互,將隊(duì)列創(chuàng)建為Ada 保護(hù)類型(protected),以支持多任務(wù)調(diào)用,Ada 隊(duì)列對(duì)應(yīng)的代碼模板聲明如下所示:

其中,queue_size 定義當(dāng)前隊(duì)列容量;Signal_Type 通過(guò)參數(shù)化的方式定義隊(duì)列中元素的類型;通過(guò)進(jìn)入點(diǎn)put,get 實(shí)現(xiàn)入隊(duì)出隊(duì)操作,put 和get 參數(shù)s為隊(duì)列中的元素,t為入隊(duì)出隊(duì)延遲時(shí)間,通過(guò)設(shè)置參數(shù)t的值,支持在周期不同的任務(wù)之間進(jìn)行數(shù)據(jù)交互;Initialize 實(shí)現(xiàn)隊(duì)列的初始化操作;Size 獲取當(dāng)前隊(duì)列中的元素個(gè)數(shù).

4.2 SDL模型到多任務(wù)Ada代碼生成

歐空局ESA 開(kāi)發(fā)的OpenGEODE 開(kāi)源工具支持從SDL 模型中生成串行Ada 代碼,在此基礎(chǔ)上,我們提出面向多核的SDL 多任務(wù)代碼生成方法.如圖3 所示,首先,將SDL 系統(tǒng)結(jié)構(gòu)(system 和block)轉(zhuǎn)換為Ada 多任務(wù)框架代碼;其次,將SDL 塊結(jié)構(gòu)(block)之間的異步通信(無(wú)延遲/延遲)轉(zhuǎn)換為基于Ada 非延遲/延遲隊(duì)列的通信機(jī)制,從而支持目標(biāo)多任務(wù)通信;最后,基于分別編譯技術(shù),利用OpenGEODE 將SDL 塊中的進(jìn)程和過(guò)程層編譯為目標(biāo)Ada 代碼.

首先,圖3 深色部分給出了SDL 系統(tǒng)結(jié)構(gòu)到Ada 多任務(wù)框架內(nèi)代碼的生成.如表6 所示,SDL system 構(gòu)件轉(zhuǎn)換為Ada procedure,其中,SDL 模型與環(huán)境的交互轉(zhuǎn)換為procedure 中的參數(shù),以支持被AADL 模型生成的Ada線程所調(diào)用.而SDL 中層次化的Block 結(jié)構(gòu),將轉(zhuǎn)換為對(duì)應(yīng)的嵌套Ada Task 結(jié)構(gòu).

Table 6 Ada code generated from SDL system structure表6 SDL 系統(tǒng)結(jié)構(gòu)生成方法

其次,SDL 異步通信轉(zhuǎn)換方法包括非延遲通信和延遲通信(如圖3 紅色部分所示).對(duì)于SDL 非延遲通信,本文采用Ada 隊(duì)列的方式實(shí)現(xiàn)SDL 不同塊間采用異步通信機(jī)制,具體實(shí)現(xiàn)見(jiàn)表7:異步隊(duì)列(asyn_queue)定義為保護(hù)類型,以保證并發(fā)調(diào)用入隊(duì)/出隊(duì)(put/get)操作過(guò)程的正確性.

對(duì)于延遲通信,由于實(shí)際的延遲取決于真實(shí)物理環(huán)境(網(wǎng)絡(luò)、線路)中的約束,因此僅定義出隊(duì)和入隊(duì)操作.為了方便后續(xù)案例的分析與實(shí)驗(yàn),本文通過(guò)對(duì)出隊(duì)操作進(jìn)行隨機(jī)設(shè)置延遲時(shí)間訪問(wèn),從而實(shí)現(xiàn)仿真延遲通信.具體實(shí)現(xiàn)見(jiàn)表7,包含參數(shù)傳入和隨機(jī)值設(shè)置兩種方式,其中,RandomGenerator 函數(shù)用于生成隨機(jī)延遲時(shí)間(默認(rèn)范圍為0~10s),delay 表達(dá)式用于設(shè)置延遲出隊(duì)操作.

Fig.3 Ada multi-task code generated from SDL圖3 SDL 到Ada 多任務(wù)代碼生成

Table 7 Ada queue code template表7 Ada 隊(duì)列代碼模板

最后,對(duì)于 SDL 模型中的功能行為(由 process 和 procedure 組成,如圖 3 青色部分所示),本文利用OpenGEODE 已有串行Ada 代碼生成功能,自動(dòng)生成對(duì)應(yīng)的Ada procedure,并根據(jù)通信類型將其對(duì)應(yīng)接口和異步通信隊(duì)列操作相關(guān)聯(lián),其中,輸入對(duì)應(yīng)出隊(duì)操作,輸出對(duì)應(yīng)入隊(duì)操作.

5 原型工具

原型工具主要包含兩部分:AADL+SDL 混合建模工具ASCM(AADL and SDL co-modeling tool)和多任務(wù)Ada 代碼生成工具AS2MTA(AADL and SDL to multi-task Ada code generator).

5.1 AADL-SDL混合建模工具ASCM

ASCM 支持AADL+ASN.1 和AADL+SDL 的混合建模功能,支持ASN.1 數(shù)據(jù)文件的生成.ASCM 工具整體框架如圖4 所示.

Fig.4 The structure of ASCM圖4 ASCM 工具結(jié)構(gòu)

ASCM 支持AADL 軟件體系結(jié)構(gòu)建模、ASN.1 數(shù)據(jù)建模和SDL 功能行為建模,并通過(guò)ASN.1 屬性集和SDL屬性集實(shí)現(xiàn)AADL 體系結(jié)構(gòu)模型、ASN.1 數(shù)據(jù)模型和SDL 功能行為模型這3 種模型的集成,最終實(shí)現(xiàn)AADLSDL 的混合建模.其中,對(duì)于AADL 體系結(jié)構(gòu)建模ASCM 使用RNL2AADL[36]支持從RNL(restricted natural language)到AADL 架構(gòu)模型的自動(dòng)生成.

5.2 Ada多任務(wù)代碼生成工具AS2MTA

AS2MTA 支持AADL 模型到Ada 代碼框架的生成、SDL 模型到Ada 行為代碼的生成以及Ada 代碼框架與Ada 行為代碼的集成,AS2MTA 工具的整體框架如圖5 所示.

AS2MTA 主要分為5 個(gè)部分.

1) AADL2Ada:基于Ada 代碼生成工具AADL2Ada,AS2MTA 支持AADL 軟件體系結(jié)構(gòu)模型生成Ada 代碼框架.

2) ASN2Ada:基于開(kāi)源ASN.1 編譯工具Asn1Scc,AS2MTA 支持ASN.1 數(shù)據(jù)類型生成Ada 數(shù)據(jù)定義代碼.

3) SDL2Ada:基于開(kāi)源SDL 建模工具OpenGEODE,AS2MTA 支持SDL 模型到Ada 任務(wù)行為代碼的生成.

4) AS2MTA 支持ASN.1 屬性集與AADL 數(shù)據(jù)構(gòu)件生成Ada 數(shù)據(jù)訪問(wèn)接口,以支持Ada 數(shù)據(jù)定義代碼的外部調(diào)用.

5) AS2MTA 支持SDL 屬性集與AADL 構(gòu)件生成Ada 運(yùn)行時(shí)代碼,以支持Ada 框架代碼對(duì)多個(gè)Ada 任務(wù)行為代碼的多任務(wù)調(diào)度.

Fig.5 The structure of AS2MTA圖5 AS2MTA 工具結(jié)構(gòu)

ASCM 與AS2MTA 通過(guò)Java 實(shí)現(xiàn),工具的具體模塊與代碼規(guī)模見(jiàn)表8.

Table 8 Statistics of tool implementation表8 工具實(shí)現(xiàn)數(shù)據(jù)統(tǒng)計(jì)

工具的主要特點(diǎn)包括:

(1) 建模方面:ASCM 工具基于AADL 開(kāi)源建模工具Osate 進(jìn)行功能擴(kuò)展,集成了SDL 開(kāi)源建模工具OpenGEODE,提供了AADL-SDL 混合建模平臺(tái);擴(kuò)展了AADL-ASN.1 屬性集和AADL-SDL 屬性集,并集成到ASCM 工具中,支持ASN.1 屬性集與AADL 數(shù)據(jù)構(gòu)件到ASN.1 數(shù)據(jù)文件的自動(dòng)生成與同步,簡(jiǎn)化了ASN.1 數(shù)據(jù)模型的建模過(guò)程,并保證AADL 模型與SDL 模型交互數(shù)據(jù)的一致性.

(2) 代碼生成方面:AS2MTA 基于Ada 代碼生成工具AADL2Ada 進(jìn)行功能擴(kuò)展,集成了ASN.1 開(kāi)源編譯器Asn1Scc 與SDL 開(kāi)源建模工具OpenGEODE,支持AADL-SDL 混合模型到多任務(wù)Ada 代碼的生成.

(3) 系統(tǒng)應(yīng)用方面:與實(shí)際工業(yè)界合作,使用ASCM 工具對(duì)GNC 系統(tǒng)進(jìn)行了AADL-SDL 混合建模,并使用AADL-SDL 混合模型通過(guò)AS2MTA 工具生成對(duì)應(yīng)的多任務(wù)Ada 代碼.

6 案例分析與方法對(duì)比

本節(jié)將使用AADL-SDL 混合建模工具ASCM 和多任務(wù)Ada 代碼生成工具AS2MTA 對(duì)實(shí)際的工業(yè)界案例進(jìn)行AADL-SDL 混合建模與多任務(wù)Ada 代碼生成.并且,在仿真環(huán)境下對(duì)生成的多任務(wù)Ada 代碼進(jìn)行運(yùn)行測(cè)試,并與前期研究進(jìn)行對(duì)比分析.最后,結(jié)合對(duì)比分析結(jié)果對(duì)本文方法的有效性進(jìn)行分析評(píng)估.

6.1 姿態(tài)軌道控制系統(tǒng)AOCS

導(dǎo)航、制導(dǎo)與控制系統(tǒng)GNC(guidance navigation &control)主要負(fù)責(zé)航天器姿態(tài)和軌道確定與控制.GNC由導(dǎo)航傳感器(例如,導(dǎo)航相機(jī)、星敏傳感器、陀螺儀和加速度計(jì))、姿態(tài)軌道控制系統(tǒng)AOCS(attitude and orbit control system)和執(zhí)行器(例如,反作用飛輪、噴嘴和發(fā)動(dòng)機(jī))組成.其中,AOCS 主要負(fù)責(zé)執(zhí)行軌道確定、軌道控制、姿態(tài)確定和姿態(tài)控制等任務(wù).此外,通常需要在導(dǎo)航傳感器和AOCS 之間添加一個(gè)數(shù)據(jù)處理單元DPU(data processing unit),用來(lái)對(duì)導(dǎo)航傳感器發(fā)送的數(shù)據(jù)進(jìn)行預(yù)處理.圖6 所示為GNC 系統(tǒng)的簡(jiǎn)化框圖.

Fig.6 GNC system structure圖6 GNC 系統(tǒng)結(jié)構(gòu)

為了方便介紹本文所提出的方法,我們主要以AOCS 為例,詳細(xì)介紹AADL-SDL 混合建模方法和Ada 多任務(wù)代碼生成方法.AOCS 系統(tǒng)主要包括姿態(tài)確定、姿態(tài)控制、軌道計(jì)算和軌道控制等9 個(gè)模塊,總計(jì)124 個(gè)子模塊和21 種計(jì)算模式.

6.2 AADL-SDL混合建模

AADL-SDL 混合建模過(guò)程主要分為4 個(gè)部分.

(1) 基于SDL 對(duì)子系統(tǒng)的功能行為建模.

(2) 基于AADL-ASN.1 交互數(shù)據(jù)屬性集對(duì)系統(tǒng)中的交互數(shù)據(jù)進(jìn)行建模.

(3) 基于AADL 對(duì)系統(tǒng)體系結(jié)構(gòu)進(jìn)行建模.

(4) 基于AADL-SDL 混合建模屬性集將SDL 功能行為模型與對(duì)應(yīng)的AADL 構(gòu)件進(jìn)行集成.

6.2.1 基于SDL 的功能行為建模

以AOCS 系統(tǒng)中軌道計(jì)算模塊的軌道根數(shù)計(jì)算(Orbital_Elements_Calculation)為例,詳細(xì)介紹SDL 功能行為建模過(guò)程.軌道根數(shù)計(jì)算的輸入?yún)?shù)包括軌道傾角、軌道角速度、航天器當(dāng)前時(shí)鐘、地面注入時(shí)間、軌道遞推初始值等,其計(jì)算過(guò)程包括長(zhǎng)期項(xiàng)計(jì)算(Long_Term_Calculation)、短周期項(xiàng)計(jì)算(Short_Period_Term_Calculation)、平根數(shù)計(jì)算(Mean_Orbit_Elements_Calculation)和瞬根數(shù)計(jì)算(Instantaneous_Elements_Calculation)等.對(duì)應(yīng)的SDL 模型結(jié)構(gòu)如圖7 所示.

首先,使用ASN.1 標(biāo)準(zhǔn)對(duì)軌道根數(shù)計(jì)算過(guò)程的數(shù)據(jù)進(jìn)行建模,以軌道傾角i_0 為例,軌道傾角的數(shù)據(jù)類型為浮點(diǎn)數(shù),范圍為0~180 的閉區(qū)間.因此,定義范圍在0~180 之間的浮點(diǎn)數(shù)類型FLOAT_::=REAL(0..180),并使用該浮點(diǎn)數(shù)類型定義軌道傾角i_0:=FLOAT_.其次,使用SDL 信號(hào)(signal)將軌道傾角數(shù)據(jù)從SDL 系統(tǒng)傳遞到SDL功能塊中.軌道傾角的SDL 信號(hào)的定義為signal i_0(FLOAT_),參數(shù)的類型與軌道傾角的類型相同.然后,定義讀取軌道傾角并進(jìn)行相關(guān)數(shù)值計(jì)算的SDL 功能塊roq,并將signal i_0(FLOAT_)作為roq 功能塊的輸入信號(hào)之一.最后,在roq 功能塊內(nèi)定義roq 參數(shù)計(jì)算的SDL 進(jìn)程,并在SDL 進(jìn)程內(nèi)部定義具體計(jì)算行為.

6.6.2 基于AADL-ASN.1 交互數(shù)據(jù)屬性集的交互數(shù)據(jù)建模

在AADL-SDL 混合建模過(guò)程中,通過(guò)AADL-ASN.1 交互數(shù)據(jù)屬性集描述異構(gòu)模型間的交互數(shù)據(jù).本節(jié)以AOCS 控制系統(tǒng)中的軌道根數(shù)為例,詳細(xì)介紹AADL-SDL 混合模型中數(shù)據(jù)類型的建模過(guò)程.軌道根數(shù)主要包含軌道傾角(Orbital_Inclination)、升交點(diǎn)黃經(jīng)(Longitude_Of_The_Ascending_Node)、離心率(eccentricity)、近日點(diǎn)輻角(Argument_Of_Perihelion)、半長(zhǎng)軸(Semi_Major_Axis)和平近點(diǎn)角(Mean_Anomaly)這6 個(gè)必要參數(shù).其中,軌道傾角、升交點(diǎn)黃經(jīng)、近日點(diǎn)幅角和平點(diǎn)近角描述的數(shù)據(jù)使用ASN1_Real 進(jìn)行建模,其角度范圍為0~180的閉區(qū)間.以軌道傾角數(shù)據(jù)為例,對(duì)應(yīng)的AADL 數(shù)據(jù)構(gòu)件定義如下所示:

離心率對(duì)應(yīng)的數(shù)據(jù)構(gòu)件的數(shù)據(jù)類型為浮點(diǎn)數(shù),使用ASN1_Real 進(jìn)行建模,且離心率的范圍為0~1.因此,為屬性Asn1_Properties::Real_Value_Range 賦值為0.0..1.0.半長(zhǎng)軸對(duì)應(yīng)飛行器運(yùn)行軌道的半長(zhǎng)軸,數(shù)據(jù)類型也為浮點(diǎn)數(shù).離心率和半長(zhǎng)軸對(duì)應(yīng)的AADL 數(shù)據(jù)構(gòu)件定義如下:

軌道根數(shù)數(shù)據(jù)構(gòu)件(Orbital_Elements)的類型為包含6 個(gè)元素的無(wú)序集合,通過(guò)綁定屬性Asn1_Properties::Base_Type=>ASN1_Set 與Asn1_Properties::ASN1_Set 對(duì)Orbital_Elements 的內(nèi)部結(jié)構(gòu)進(jìn)行建模,對(duì)應(yīng)的AADL數(shù)據(jù)構(gòu)件定義如下:

6.2.3 基于AADL 的系統(tǒng)體系結(jié)構(gòu)建模

本節(jié)主要介紹AOCS 系統(tǒng)的AADL 體系結(jié)構(gòu)模型,如圖8 所示.

Fig.8 AADL architecture model of AOCS system圖8 AOCS 系統(tǒng)體系結(jié)構(gòu)模型

AOCS 系統(tǒng)的體系結(jié)構(gòu)模型包括AADL 系統(tǒng)構(gòu)件(AOCS_Init).在AOCS_Init 構(gòu)件中定義姿態(tài)確定子系統(tǒng)構(gòu)件(Pose_Check_Init)、姿態(tài)控制子系統(tǒng)構(gòu)件(Pose_Control_Init)、軌道計(jì)算子系統(tǒng)構(gòu)件(Orbit_Calculate_Init)和軌道控制子系統(tǒng)構(gòu)件(Orbit_Control_Init).Orbit_Calculate_Init 構(gòu)件中定義軌道根數(shù)計(jì)算對(duì)應(yīng)的AADL 線程構(gòu)件Orbital_Elements_Calculation;然后,使用AADL 數(shù)據(jù)構(gòu)件與AADL-ASN.1 屬性集擴(kuò)展對(duì)各個(gè)子系統(tǒng)間的交互數(shù)據(jù)進(jìn)行建模(見(jiàn)第4.2 節(jié));最后,使用AADL-SDL 屬性集擴(kuò)展將Orbital_Elements_Calculation與軌道根數(shù)計(jì)算過(guò)程的SDL 模型進(jìn)行關(guān)聯(lián)(見(jiàn)第4.3 節(jié)).

此外,AOCS 系統(tǒng)的各個(gè)子系統(tǒng)構(gòu)件中的不同功能模塊可采用不同計(jì)算模型表達(dá)功能行為,并通過(guò)擴(kuò)展屬性集的方式實(shí)現(xiàn)多種異構(gòu)構(gòu)件與AADL 體系結(jié)構(gòu)模型的集成.例如,針對(duì)具有較多數(shù)據(jù)流計(jì)算特征的構(gòu)件使用同步語(yǔ)言SIGNAL 建模(如,姿態(tài)控制子系統(tǒng)中的消除偏模塊[28,29]);針對(duì)具有較多控制流特征的構(gòu)件,可以使用AADL Behavior Annex 的狀態(tài)機(jī)進(jìn)行描述;對(duì)于部分構(gòu)件,可以重用已有的C/Ada 代碼描述;對(duì)于具有異步行為特征的構(gòu)件,可以使用SDL 進(jìn)行建模(如,軌道根數(shù)計(jì)算模塊).

6.2.4 AADL-SDL 模型集成

本節(jié)以AOCS 系統(tǒng)的軌道根數(shù)計(jì)算過(guò)程為例詳細(xì)闡述基于AADL-SDL 混合建模屬性集的AADL-SDL 模型集成過(guò)程.首先,通過(guò)需求文檔獲取軌道根數(shù)的計(jì)算過(guò)程的相關(guān)參數(shù)與具體的計(jì)算行為細(xì)節(jié);其次,以第4.3 節(jié)中的軌道根數(shù)數(shù)據(jù)構(gòu)件Orbital_Elements 作為軌道根數(shù)計(jì)算過(guò)程的輸入?yún)?shù),對(duì)航天器運(yùn)行過(guò)程中的軌道瞬根數(shù)、平根數(shù)等參數(shù)進(jìn)行周期性的迭代計(jì)算,平均執(zhí)行周期為1.5s.

其中,AADL 子程序構(gòu)件OE_Msg 用來(lái)描述軌道根數(shù)計(jì)算構(gòu)件與其他AADL 線程構(gòu)件間的數(shù)據(jù)交互.交互數(shù)據(jù)的類型為Orbital_Elements,屬性Source_Language=>SDL 和Element_Type=>signal 定義當(dāng)前subprogram 構(gòu)件對(duì)應(yīng)SDL 模型中的signal.OE_Msg 定義如下:

軌道根數(shù)計(jì)算過(guò)程對(duì)應(yīng)的AADL構(gòu)件Orbital_Elements_Calculation 其主要結(jié)構(gòu)如下所示.首先,子程序構(gòu)件OE_Msg 定義了Orbital_Elements_Calculation 的輸入輸出端口in_msg 和out_msg;其次,屬性Signal_Name 描述了對(duì)應(yīng)的SDL 行為模型的輸入輸出端口為OEC_In 與OEC_Out;然后,屬性dispatch_Protocols=>Periodic 和Dispatch_Period=>1500ms 描述了當(dāng)前線程為周期線程,周期大小為1 500ms.Orbital_Elements_Calculation 的詳細(xì)定義如下所示:

6.3 Ada多任務(wù)代碼生成

6.3.1 Ada 框架代碼和數(shù)據(jù)類型代碼的生成

首先,基于Ada 代碼生成工具AADL2Ada 生成對(duì)應(yīng)的Ada 代碼框架.然后,基于ASN.1 開(kāi)源編譯工具Asn1Scc 生成Ada 數(shù)據(jù)類型代碼.AOCS 系統(tǒng)對(duì)應(yīng)的代碼整體結(jié)構(gòu)如圖9 所示,其中,system_satellite_attitude_orbit_control_init_impl 為頂層系統(tǒng),包含功能函數(shù)庫(kù)(system_commonfunc_init)、主控系統(tǒng)(system_ctrl_process_init)、軌道計(jì)算(system_obtcalmain_init)、軌道控制(system_obtctrl_init)、姿態(tài)確定(system_poscheck_init)和姿態(tài)控制(system_posctrl_init)這6 個(gè)子系統(tǒng)和數(shù)據(jù)類型定義(dataview-uniq).其中,主控系統(tǒng)(system_ctrl_process_init)中還包含8 個(gè)子功能模塊.

Fig.9 Ada framework code for AOCS圖9 AOCS 系統(tǒng)Ada 框架代碼

6.3.2 Ada 運(yùn)行時(shí)代碼生成

本節(jié)結(jié)合第4.1.3 節(jié)給出的Ada 運(yùn)行時(shí)代碼的生成過(guò)程,以O(shè)rbital_Elements_Calculation 為例進(jìn)行AADLSDL 混合模型到多任務(wù)Ada 代碼的生成.軌道根的計(jì)算過(guò)程屬于周期執(zhí)行過(guò)程,因此,AS2MTA 選用第4.1.3 節(jié)中提到的Ada 代碼模板APTCT 進(jìn)行代碼生成工作,由于軌道根計(jì)算過(guò)程的執(zhí)行周期為1 500ms,因此,APTCT的參數(shù)設(shè)置可見(jiàn)表9.

Table 9 The parameters of Ada runtime code template in Orbital_Elements_Calculation表9 軌道根計(jì)算過(guò)程的Ada 運(yùn)行時(shí)代碼模板參數(shù)設(shè)置

通過(guò)Ada 代碼模板生成對(duì)應(yīng)的運(yùn)行時(shí)代碼,通過(guò)隊(duì)列模板生成各個(gè)任務(wù)間的交互代碼.圖10 展示了多個(gè)Ada 任務(wù)通過(guò)Ada 隊(duì)列代碼進(jìn)行任務(wù)間的交互過(guò)程,AADL 模型中包括軌道根數(shù)計(jì)算線程在內(nèi)一共n個(gè)線程構(gòu)件.以O(shè)rbital_Elements_Calculation 線程構(gòu)件與T2 線程構(gòu)件為例,Orbital_Elements_Calculation 構(gòu)件通過(guò)Ada周期任務(wù)代碼模板APTCT 生成對(duì)應(yīng)的Ada 周期任務(wù)代碼Orbital_Elements_Calculation_a.T2 構(gòu)件生成對(duì)應(yīng)Ada周期任務(wù)代碼T2_a.Orbital_Elements_Calculation 構(gòu)件與T2 構(gòu)件之間的交互數(shù)據(jù)OE_Msg 通過(guò)Ada 隊(duì)列代碼模板AQCT 生成Orbital_Elements_Calculation_a 與T2_a 進(jìn)行交互的隊(duì)列代碼OEC_2_T2_Queue.

Fig.10 Ada runtime code圖10 Ada 運(yùn)行時(shí)代碼

6.3.3 SDL 模型到多任務(wù)代碼生成

本節(jié)以第6.2.1 節(jié)軌道根數(shù)計(jì)算SDL 行為模型為例,詳細(xì)介紹SDL 行為模型到Ada 多任務(wù)代碼的生成過(guò)程.軌道根數(shù)計(jì)算SDL 行為模型分別對(duì)應(yīng)于編譯后的部分目標(biāo)Ada 代碼,見(jiàn)表10.

Table 10 Multi-tasking Ada code from SDL表10 SDL 多任務(wù)Ada 代碼

其中,Ada 過(guò)程Orbital_Elements_Calculation 根據(jù)SDL 模型中system 組件生成,其參數(shù)列表根據(jù)SDL 模型與環(huán)境交互方向分別使用關(guān)鍵字in 和out 進(jìn)行標(biāo)注.Orbital_Elements_Calculation 過(guò)程中包括25 個(gè)Ada task,分別根據(jù)源SDL 模型中的block 組件生成.對(duì)于不同塊之間的異步通信,根據(jù)輸入信號(hào)對(duì)應(yīng)的塊名聲明對(duì)應(yīng)的延遲隊(duì)列.對(duì)于塊中的具體功能,基于OpenGEODE 生成對(duì)應(yīng)的Ada 目標(biāo)代碼.以AQ 塊與U_塊為例,U_過(guò)程為U_task 的計(jì)算部分,由OpenGEODE 生成.此外,U_task 中還包括兩類特殊的Ada 過(guò)程:RI_U_和PI_AQ,其中,PI_U_負(fù)責(zé)從DP 塊對(duì)應(yīng)的延遲隊(duì)列中取數(shù)據(jù),而RI_AQ 負(fù)責(zé)將計(jì)算結(jié)果放入AQ 塊對(duì)應(yīng)的延遲隊(duì)列中.

6.4 AADL-SDL混合模型分析與評(píng)估

首先,使用SDL 對(duì)AOCS 系統(tǒng)的軟件功能模塊內(nèi)部行為進(jìn)行建模.SDL 模型的統(tǒng)計(jì)數(shù)據(jù)見(jiàn)表11.

Table 11 SDL model statistics of AOCS system表11 AOCS 系統(tǒng)SDL 模型統(tǒng)計(jì)

其次,使用限定自然語(yǔ)言生成AADL 工具RNL2AADL[36],通過(guò)自然語(yǔ)言需求模板對(duì)AOCS 系統(tǒng)自然需求文本中的軟件架構(gòu)信息進(jìn)行抽取,并通過(guò)抽取的軟件架構(gòu)信息生成AADL 系統(tǒng)體系結(jié)構(gòu)模型,體系結(jié)構(gòu)模型主要包括4 個(gè)主系統(tǒng)和309 個(gè)軟硬件構(gòu)件,其中主要包括1 個(gè)頂層系統(tǒng)構(gòu)件、4 個(gè)一級(jí)子系統(tǒng)構(gòu)件、125 個(gè)二級(jí)子系統(tǒng)構(gòu)件、72 個(gè)3 級(jí)子系統(tǒng)構(gòu)件、259 個(gè)子程序構(gòu)件、632 個(gè)線程構(gòu)件.除了描述系統(tǒng)結(jié)構(gòu)的構(gòu)件外,還包括148 個(gè)數(shù)據(jù)構(gòu)件,主要對(duì)整個(gè)系統(tǒng)中各個(gè)構(gòu)件之間進(jìn)行通信交互的數(shù)據(jù)報(bào)文建模;1 146 個(gè)數(shù)據(jù)訪問(wèn)連接;902 個(gè)外部過(guò)程訪問(wèn)連接.AADL 軟件體系結(jié)構(gòu)模型的統(tǒng)計(jì)數(shù)據(jù)見(jiàn)表12.

Table 12 The statistical data AADL model of AOCS system表12 AOCS 系統(tǒng)AADL 模型統(tǒng)計(jì)

最后,通過(guò)AADL-SDL 擴(kuò)展屬性集實(shí)現(xiàn)上述SDL 功能行為與AADL 體系結(jié)構(gòu)模型的集成.

在第2 節(jié)中,我們提出了AADL 及行為附件BA、同步語(yǔ)言Signal、SDL、Simulink、C、Ada 的多范式建??傮w框架,本文主要研究AADL 和SDL 混合建模方法.通過(guò)和工業(yè)界的合作與確認(rèn),這里選用適用范圍、生成代碼特征等指標(biāo)對(duì)AADL-SDL、AADL-BA[37]、AADL-Signal[28,29]這3 種混合建模方法進(jìn)行評(píng)價(jià),分析結(jié)果見(jiàn)表13.

Table 13 The comparison and evaluation of AADL-BA,AADL-Signal,AADL-SDL表13 AADL-BA、AADL-Signal、AADL-SDL 混合模型對(duì)比評(píng)估結(jié)果

如表13 所示,AADL-BA、AADL-Signal 與AADL-SDL 混合建模方法的對(duì)比分析結(jié)果如下.

(1) 適用范圍:在通過(guò)混合模型進(jìn)行代碼生成的過(guò)程中,AADL-BA 通過(guò)自動(dòng)機(jī)模型生成代碼,代碼生成過(guò)程采用的編程策略以系統(tǒng)的狀態(tài)變化為核心,生成代碼適用于需要進(jìn)行頻繁狀態(tài)切換的反應(yīng)式系統(tǒng).AADLSignal 通過(guò)數(shù)據(jù)流等式描述數(shù)值的計(jì)算過(guò)程,具有同步并發(fā)的描述語(yǔ)義,適用于對(duì)系統(tǒng)中數(shù)值計(jì)算的算法與同步調(diào)度算法進(jìn)行建模與代碼生成.如航天嵌入式系統(tǒng)中的軌道計(jì)算、姿態(tài)計(jì)算等相關(guān)算法.AADL-SDL 側(cè)重于描述系統(tǒng)實(shí)現(xiàn)過(guò)程的流程控制與異步行為,可以清晰地展示出系統(tǒng)不同功能模塊間的流程劃分,實(shí)現(xiàn)代碼的解耦,提升各部分代碼的復(fù)用性.

(2) 生成代碼特征:針對(duì)AADL-BA 混合建模,由于BA 將系統(tǒng)行為抽象為狀態(tài)與狀態(tài)遷移.生成代碼中引入了狀態(tài)機(jī)結(jié)構(gòu),適合對(duì)軟件行為中的狀態(tài)變換行為進(jìn)行建模.針對(duì)AADL-Signal 混合建模,Signal 采用數(shù)據(jù)流等式的方式進(jìn)行建模,模型抽象程度較高,適用于對(duì)軟件行為中數(shù)值計(jì)算相關(guān)的算法內(nèi)容進(jìn)行建模.針對(duì)AADLSDL 混合建模,SDL 支持對(duì)系統(tǒng)行為中的業(yè)務(wù)流程與異步控制進(jìn)行建模.可以準(zhǔn)確、清晰地描述出軟件行為中的流程控制行為.

對(duì)比分析結(jié)果,正是體現(xiàn)了安全關(guān)鍵異構(gòu)軟件系統(tǒng)需要進(jìn)行多范式建模的必要性.AADL-BA、AADLSignal 及AADL-SDL 混合建模方法能夠較完整地支持安全關(guān)鍵異構(gòu)軟件系統(tǒng)的建模要求.

6.5 生成代碼分析與評(píng)估

6.5.1 與AOCS 已有代碼對(duì)比分析

首先,針對(duì)AOCS 系統(tǒng)AADL-SDL 混合模型,基于AS2MTA 進(jìn)行多任務(wù)的Ada 代碼生成,并且,選取生成代碼規(guī)模和代碼運(yùn)行時(shí)間兩個(gè)指標(biāo)來(lái)對(duì)本文所提出的方法進(jìn)行評(píng)估.針對(duì)這兩個(gè)指標(biāo),我們分別選取AOCS 系統(tǒng)源代碼和AS2MTA 生成代碼在多核仿真環(huán)境下進(jìn)行實(shí)驗(yàn)結(jié)果統(tǒng)計(jì),其中,AOCS 系統(tǒng)源代碼的相關(guān)實(shí)驗(yàn)由實(shí)際工業(yè)界進(jìn)行,并為我們提供處理后實(shí)驗(yàn)結(jié)果數(shù)據(jù).實(shí)驗(yàn)具體結(jié)果見(jiàn)表14.

通過(guò)表14 中的數(shù)據(jù)可知,AS2MTA 生成的代碼規(guī)模比AOCS 系統(tǒng)源碼要大,主要原因包括:(1) 生成多任務(wù)運(yùn)行時(shí);(2) 本文的代碼生成方法還未包含編碼策略的優(yōu)化等過(guò)程.

Table 14 The test results of generated code (I)表14 生成代碼運(yùn)行測(cè)試結(jié)果(I)

AS2MTA 生成的代碼的平均執(zhí)行時(shí)間與AOCS 系統(tǒng)源碼的平均執(zhí)行時(shí)間的數(shù)據(jù)統(tǒng)計(jì)情況如圖10 所示.

Fig.11 Average code execution time圖11 代碼平均執(zhí)行時(shí)間統(tǒng)計(jì)

通過(guò)分析表14 和圖10,我們得出AS2MTA 生成的代碼的平均執(zhí)行時(shí)間與AOCS 系統(tǒng)源碼的平均執(zhí)行時(shí)間對(duì)比分析結(jié)果.相較于單核仿真環(huán)境下AS2MTA 的生成代碼,多核仿真環(huán)境下的生成代碼平均執(zhí)行時(shí)間有所提升.但是,與AOCS 系統(tǒng)源碼相比,在運(yùn)行代碼體量較大的情況下,AS2MTA 生成多任務(wù)代碼的運(yùn)行時(shí)間較短.但在運(yùn)行代碼體量較小的情況下,AOCS 系統(tǒng)源碼的執(zhí)行時(shí)間較短.造成這種現(xiàn)象的主要原因可能是,雖然并發(fā)運(yùn)行多任務(wù)代碼會(huì)提升運(yùn)行速率,但是創(chuàng)建多任務(wù)的過(guò)程會(huì)占用部分時(shí)間,在運(yùn)行代碼體量較小的情況下,創(chuàng)建多任務(wù)的時(shí)間占用了大部分的運(yùn)行時(shí)間,描述功能邏輯的代碼實(shí)際運(yùn)行時(shí)間只占用了運(yùn)行時(shí)間的一小部分,代碼的并行執(zhí)行對(duì)代碼運(yùn)行效率產(chǎn)生的提升效果無(wú)法彌補(bǔ)創(chuàng)建任務(wù)對(duì)代碼運(yùn)行效率產(chǎn)生的降低效果,導(dǎo)致多任務(wù)代碼的運(yùn)行效率低于AOCS 系統(tǒng)源代碼的運(yùn)行效率.在運(yùn)行代碼體量較大的情況下,描述功能邏輯的代碼實(shí)際運(yùn)行時(shí)間遠(yuǎn)大于任務(wù)創(chuàng)建時(shí)間,則創(chuàng)建任務(wù)對(duì)代碼運(yùn)行效率產(chǎn)生的影響就可以忽略不計(jì),并行代碼的運(yùn)行效率就會(huì)高于源代碼的運(yùn)行效率.未來(lái),我們將對(duì)AS2MTA 的生成代碼進(jìn)行優(yōu)化.

6.5.2 與AADL-BA、AADL-Signal 生成代碼對(duì)比分析

本節(jié)針對(duì)代碼規(guī)模和代碼運(yùn)行時(shí)間兩個(gè)指標(biāo),分別選取前期研究中 AADL-BA 混合模型生成代碼與AADL-Signal 混合模型生成代碼和AS2MTA 生成代碼在仿真環(huán)境下進(jìn)行實(shí)驗(yàn).實(shí)驗(yàn)具體結(jié)果見(jiàn)表15.

Table 15 The test results of generated code (II)表15 生成代碼運(yùn)行測(cè)試結(jié)果(II)

AADL-BA 生成代碼、AADL-Signal 生成代碼的平均執(zhí)行時(shí)間與AS2MTA 生成代碼的平均執(zhí)行時(shí)間的數(shù)據(jù)統(tǒng)計(jì)情況如圖11 所示.

Fig.12 Average code execution time圖12 代碼平均執(zhí)行時(shí)間統(tǒng)計(jì)

通過(guò)分析表15 和圖11,AS2MTA 生成的代碼的平均執(zhí)行時(shí)間與AADL-BA 和AADL-Signal 生成代碼的平均執(zhí)行時(shí)間對(duì)比分析結(jié)果如下.

1) 單核仿真環(huán)境下的平均執(zhí)行時(shí)間:AS2MTA 生成代碼相較于AADL-BA 與AADL-Signal 的生成代碼的平均執(zhí)行時(shí)間,是最短的.在單核仿真環(huán)境下運(yùn)行,多任務(wù)并發(fā)對(duì)代碼執(zhí)行效率的提升影響較低,影響代碼運(yùn)行效率的主要因素為代碼結(jié)構(gòu).AADL-BA 為所有生成代碼引入狀態(tài)機(jī)結(jié)構(gòu),對(duì)于功能行為中的狀態(tài)變換,通過(guò)狀態(tài)機(jī)代碼可以提升運(yùn)行效率,對(duì)于不適用狀態(tài)機(jī)的功能行為,則由于狀態(tài)機(jī)代碼的結(jié)構(gòu)復(fù)雜而降低了代碼的執(zhí)行效率,因此,AADL-BA 的平均執(zhí)行時(shí)間最長(zhǎng).AADL-Signal 側(cè)重于考慮數(shù)值計(jì)算行為中的并發(fā),運(yùn)行測(cè)試也只針對(duì)于數(shù)據(jù)計(jì)算的代碼實(shí)現(xiàn)過(guò)程,因此,相較于AADL-BA 代碼的平均執(zhí)行時(shí)間有所降低.AADL-SDL 側(cè)重于多個(gè)控制流程間的并發(fā),在單核仿真環(huán)境下,AADL-Signal 與AADL-SDL 生成代碼的平均執(zhí)行時(shí)間沒(méi)有明顯差距,AADL-SDL 相較于AADL-BA,由于代碼生成結(jié)構(gòu)的優(yōu)化,縮短了代碼的平均執(zhí)行時(shí)間.

2) 多核仿真環(huán)境下的平均執(zhí)行時(shí)間:相較于單核仿真環(huán)境,多核仿真環(huán)境下3 種建模方法的生成代碼運(yùn)行效率都有所提升.與前期研究相比,AS2MTA 生成代碼的平均執(zhí)行時(shí)間最短,運(yùn)行效率最高.并且,通過(guò)分析圖10可知,AADL-Signal 側(cè)重于數(shù)據(jù)計(jì)算過(guò)程的并發(fā)行為,姿態(tài)確定和軌道計(jì)算兩個(gè)模塊的主要內(nèi)容是航天器各種姿態(tài)參數(shù)與軌道參數(shù)的計(jì)算過(guò)程.因此,在姿態(tài)確定和軌道計(jì)算兩個(gè)模塊中,AADL-Signal 生成代碼的運(yùn)行效率較高,AS2MTA 生成代碼的運(yùn)行效率沒(méi)有明顯提升.但是,姿態(tài)控制與軌道控制模塊的主要職責(zé)是根據(jù)參數(shù)對(duì)航天器的姿態(tài)與軌道進(jìn)行調(diào)整,代碼結(jié)構(gòu)以流程控制為主,因此,相較于AADL-Signal,使用AS2MTA 生成代碼的執(zhí)行效率有明顯提升,代碼平均執(zhí)行時(shí)間大幅度縮短.

7 相關(guān)工作

本文的相關(guān)工作主要包括3 個(gè)方面:多范式建模、混合建模和基于模型的代碼生成.

7.1 多范式建模相關(guān)工作

Vangheluwe 在文獻(xiàn)[4]中介紹了多范式建模與仿真,并將多范式建模的研究方向分為3 個(gè)部分:(1) 多形式化建模,涉及到描述的不同形式化模型之間的耦合和轉(zhuǎn)換.(2) 模型抽象,涉及到不同抽象級(jí)別上模型之間的關(guān)系.(3) 元建模,描述模型的模型.

Mosterman 在文獻(xiàn)[5]中將Vangheluwe 描述的多范式建模方法的3 個(gè)研究方向抽象為多范式建模的3 個(gè)維度:多抽象、多形式化和元模型.并且,基于這3 個(gè)維度引入了領(lǐng)域獨(dú)立的多范式建??蚣?通過(guò)一個(gè)混合動(dòng)力系統(tǒng)的案例,描述了多范式建模方法的統(tǒng)一框架.

Morozov 將多范式建模方法應(yīng)用在信息物理系統(tǒng)CPS(cyber-physical systems)中[38],使用UML 定義了CPS系統(tǒng)的元模型,并使用汽車噴漆的案例概述了元模型的使用過(guò)程.

Blouin 提出了一種對(duì)嵌入式系統(tǒng)架構(gòu)模型進(jìn)行定量分析的多范式建模語(yǔ)言QAML(quantitative analysis modeling language)[39],QAML 通過(guò)利用AADL、SysML、MARTE、AUTOSAR 等多領(lǐng)域建模語(yǔ)言對(duì)嵌入式系統(tǒng)架構(gòu)模型進(jìn)行定量分析.

Blouin 和Borde 在文獻(xiàn)[40]中提出AADL 作為一種多范式建模語(yǔ)言,由于具有可以擴(kuò)充其他形式語(yǔ)義的特性,因此可以作為系統(tǒng)多范式建模方法的核心.同時(shí),介紹了ADL 在MPM4CPS 中的應(yīng)用,并使用一個(gè)機(jī)器人案例說(shuō)明AADL 多范式建模的具體用法,描述了自頂向下以AADL 架構(gòu)模型為中心組合使用SysML、MARTE和UML 等模型,從需求分析開(kāi)始,然后進(jìn)行系統(tǒng)設(shè)計(jì)、設(shè)計(jì)分析和驗(yàn)證,最后自動(dòng)生成代碼的設(shè)計(jì)流程.

SysML[7]作為一種針對(duì)系統(tǒng)工程領(lǐng)域的圖形化建模語(yǔ)言,側(cè)重于復(fù)雜系統(tǒng)的整體架構(gòu).適合在系統(tǒng)開(kāi)發(fā)生命周期的初期對(duì)系統(tǒng)進(jìn)行需求捕獲、邊界定義、邏輯架構(gòu)設(shè)計(jì)等,由于缺乏形式語(yǔ)義,在系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)階段的應(yīng)用較少.AADL 基于構(gòu)件對(duì)軟件體系結(jié)構(gòu)進(jìn)行建模,提供進(jìn)程、線程、子程序、處理器、外部設(shè)備等多種構(gòu)件,適合在系統(tǒng)開(kāi)發(fā)生命周期后面的階段進(jìn)行詳細(xì)的設(shè)計(jì)和具體實(shí)現(xiàn).本文提出的混合建模方法主要面向多任務(wù)Ada 代碼生成工作,需要對(duì)系統(tǒng)詳細(xì)設(shè)計(jì)以及實(shí)現(xiàn)細(xì)節(jié)進(jìn)行建模,因此,本文使用AADL 對(duì)系統(tǒng)體系結(jié)構(gòu)進(jìn)行建模.

7.2 混合建模以及代碼生成相關(guān)工作

多領(lǐng)域的模型集成作為一種多范式建模方法,不同領(lǐng)域建模語(yǔ)言之間的混合建模過(guò)程是多領(lǐng)域的模型集成的重要組成部分.AADL 主要通過(guò)擴(kuò)展附件和混合建模實(shí)現(xiàn)多領(lǐng)域的模型集成.

AADL 目前支持Behavior Annex[18]通過(guò)集成時(shí)間自動(dòng)機(jī)模型對(duì)軟件行為中的狀態(tài)控制進(jìn)行描述;BLESS Annex[41]則在Behavior Annex 的基礎(chǔ)上為自動(dòng)機(jī)添加BLESS Assertions,使其支持自動(dòng)化的推理證明.Error Model Annex[32]通過(guò)集成故障屬性、故障概率等故障模型對(duì)軟件行為中的失效事件進(jìn)行描述;Hybird Annex[19]通過(guò)集成Hybrid CSP 對(duì)系統(tǒng)物理層的連續(xù)行為進(jìn)行描述.

Zhan 提出了AADL 與Simulink/Stateflow 混合建模方法[20],相較于Hybrid Annex 對(duì)系統(tǒng)物理層連續(xù)行為的描述,Zhan 使用Simulink/Stateflow 描述AADL 系統(tǒng)體系結(jié)構(gòu)模型中物理層的連續(xù)行為,通過(guò)contract 對(duì)AADL物理層構(gòu)件進(jìn)行約束.

Ouni 使用AADL 與Capella 進(jìn)行混合建模[42],通過(guò)INGEQUIP 保持交互信息在不同模型間的一致,通過(guò)Capella 描述系統(tǒng)設(shè)計(jì)初期的功能需求、非功能需求以及平臺(tái)約束,并將Capella 模型集成到AADL 模型中,組合兩種模型進(jìn)行調(diào)度分析、行為驗(yàn)證、結(jié)構(gòu)驗(yàn)證等工作.

歐空局ESA 提出AADL、Simulink、SDL 的多范式建模方法TASTE[23-25],TASTE 通過(guò)AADL 部分子集描述系統(tǒng)體系結(jié)構(gòu),并通過(guò)TASTE 擴(kuò)展屬性集將AADL 系統(tǒng)體系結(jié)構(gòu)模型與Simulink、SDL 等行為模型進(jìn)行集成.通過(guò)集成代碼生成工具Ocarina[43]進(jìn)行基于AADL 模型的代碼生成.通過(guò)集成Simulink Coder、Qgen、OpenGEODE 等工具實(shí)現(xiàn)Simulink、SDL 等行為模型代碼的生成.TASTE 基于OpenGEODE 實(shí)現(xiàn)SDL 模型到Ada 代碼的生成,目前主要支持串行Ada 代碼自動(dòng)生成和集成.本文結(jié)合TASTE 的工作,使用分別編譯技術(shù)實(shí)現(xiàn)了SDL 行為模型到多任務(wù)Ada 代碼的自動(dòng)生成與調(diào)度,并且支持與AADL 模型生成Ada 代碼進(jìn)行集成.

Baouyaa 使用TASTE 工具集對(duì)火車控制系統(tǒng)進(jìn)行建模[44],使用AADL 描述系統(tǒng)體系結(jié)構(gòu),使用SDL 描述系統(tǒng)行為,并對(duì)鐵路系統(tǒng)的相關(guān)性質(zhì)進(jìn)行了驗(yàn)證.

在面向安全關(guān)鍵軟件的AADL 多范式建模的前期研究中[28,29],我們基于同步語(yǔ)言Signal 對(duì)AADL 語(yǔ)義進(jìn)行了擴(kuò)展,使用Signal 對(duì)AADL 模型中的并發(fā)行為進(jìn)行了描述,并支持AADL-Signal 混合模型到多任務(wù)代碼的生成.本文基于SDL 進(jìn)一步擴(kuò)展了AADL 語(yǔ)義,對(duì)軟件系統(tǒng)中的異步行為進(jìn)行了描述,并且實(shí)現(xiàn)了AADL-SDL到多任務(wù)Ada 代碼的生成.

8 總結(jié)與未來(lái)工作

本文提出一種AADL 和SDL 混合建模方法,支持以自底向上的方式對(duì)安全關(guān)鍵軟件系統(tǒng)進(jìn)行混合建模,并給出面向多核處理器平臺(tái)的代碼自動(dòng)生成方法.首先,提出AADL 與SDL 混合建模方法,包括AADL-ASN.1和AADL-SDL 擴(kuò)展屬性集方法.其中,AADL-ASN.1 擴(kuò)展屬性集主要用于描述混合模型中不同構(gòu)件間的數(shù)據(jù)類型,AADL-SDL 屬性集用于支持在AADL 體系結(jié)構(gòu)模型中集成SDL 模型對(duì)應(yīng)的功能行為.其次,提出面向多核處理器的AADL-SDL 混合模型到Ada 多任務(wù)代碼生成方法,包括框架代碼、數(shù)據(jù)類型代碼、運(yùn)行時(shí)代碼以及多任務(wù)功能代碼的自動(dòng)生成.然后,基于AADL 開(kāi)源建模工具Osate 實(shí)現(xiàn)了AADL-SDL 混合建模工具ASCM 和多任務(wù)Ada 代碼生成工具AS2MTA,并且使用實(shí)際工業(yè)案例對(duì)本文所提方法的有效性進(jìn)行了分析.

在未來(lái)的工作中,我們將進(jìn)一步開(kāi)展以下3 個(gè)方面的研究工作.

1) 工具擴(kuò)展方面:目前的代碼生成工作依賴于開(kāi)源SDL建模工具OpenGEODE,因此,AADL-SDL 混合模型中采用的SDL 標(biāo)準(zhǔn)與OpenGEODE 工具保持一致,SDL 標(biāo)準(zhǔn)目前已經(jīng)更新到SDL 2010,未來(lái)考慮開(kāi)發(fā)支持SDL 2010 標(biāo)準(zhǔn)的SDL 建模工具,并實(shí)現(xiàn)ASCM 和AS2MTA 到SDL 2010 的移植.

2) 組合驗(yàn)證方面:研究AADL-SDL 混合模型的形式化組合驗(yàn)證方法.由于混合模型中存在異步通信,因此需考慮與異步通信有關(guān)的形式化驗(yàn)證.

3) 生成代碼的智能優(yōu)化方面:面對(duì)復(fù)雜編程場(chǎng)景有時(shí)需要依靠編程人員的經(jīng)驗(yàn)靈活選擇編程策略,未來(lái)將研究基于人工智能的編程策略自動(dòng)優(yōu)化.

猜你喜歡
代碼生成數(shù)據(jù)類型多任務(wù)
詳談Java中的基本數(shù)據(jù)類型與引用數(shù)據(jù)類型
如何理解數(shù)據(jù)結(jié)構(gòu)中的抽象數(shù)據(jù)類型
Lustre語(yǔ)言可信代碼生成器研究進(jìn)展
基于中心化自動(dòng)加權(quán)多任務(wù)學(xué)習(xí)的早期輕度認(rèn)知障礙診斷
代碼生成技術(shù)在軟件開(kāi)發(fā)中的應(yīng)用
電子世界(2016年15期)2016-08-29 02:14:28
基于判別性局部聯(lián)合稀疏模型的多任務(wù)跟蹤
電測(cè)與儀表(2016年5期)2016-04-22 01:13:46
基于XML的代碼自動(dòng)生成工具
電子科技(2015年2期)2015-12-20 01:09:20
未知環(huán)境下基于粒子群優(yōu)化的多任務(wù)聯(lián)盟生成
基于關(guān)系數(shù)據(jù)模型代碼生成器的設(shè)計(jì)與實(shí)現(xiàn)
辽宁省| 衡山县| 肃北| 辽中县| 夏河县| 井研县| 饶河县| 娄底市| 柞水县| 凌源市| 宝山区| 正安县| 乐山市| 石阡县| SHOW| 磐石市| 宁津县| 内黄县| 茶陵县| 琼海市| 松阳县| 太和县| 乌海市| 台南县| 松潘县| 舞阳县| 兴和县| 娱乐| 沭阳县| 息烽县| 和林格尔县| 宁晋县| 武汉市| 乌苏市| 嫩江县| 雷波县| 皋兰县| 福建省| 大洼县| 北京市| 波密县|