(1.陜西工業(yè)職業(yè)技術(shù)學(xué)院 咸陽 712000)(2.中航工業(yè)西安飛行自動控制研究所 西安 710075)
安全關(guān)鍵系統(tǒng)的模型驅(qū)動開發(fā)過程中,怎樣提高模型對實時嵌入式系統(tǒng)非功能需求的表達能力,怎樣在早期設(shè)計過程中對系統(tǒng)進行分析與驗證,怎樣正確的生成代碼一直是研究熱點。體系結(jié)構(gòu)分析與設(shè)計語言AADL 是在這種背景下產(chǎn)生的,能夠描述ERTS的非功能屬性,支持靜態(tài)、動態(tài)結(jié)構(gòu)的協(xié)同建模,支持軟件、硬件的協(xié)同建模,并且可以針對特定領(lǐng)域進行擴展。而AADL 具有語法簡單、功能強大、可擴展的優(yōu)點,使基于AADL 的模型驅(qū)動過程得到了學(xué)術(shù)界和工業(yè)界的廣泛研究和應(yīng)用。
AADL 是嵌入式實時系統(tǒng)領(lǐng)域的體系結(jié)構(gòu)設(shè)計與分析標(biāo)準(zhǔn)[1],而MDD 正在成為主流的開發(fā)過程。提出AADL與MDD 結(jié)合,能夠使AADL 得到更廣泛的使用。MDD 定義了三個層次的抽象:平臺獨立模型(platform independent model,簡稱PIM)、平臺特定模型(platform specific model,簡稱PSM)以及應(yīng)用代碼。PIM 是模型驅(qū)動設(shè)計的初始抽象模型,是設(shè)計過程中最為重要的環(huán)節(jié)之一。因此,AADL建模方法的研究主要涉及AADL PIM 的構(gòu)造。我們歸納為三類:
由于UML,SysML,xUML (executable UML)[2],HOOD 等描述語言已經(jīng)廣泛應(yīng)用于需求的描述,因此結(jié)合這些描述語言的優(yōu)勢是必要的,從需求模型到AADL 模型的轉(zhuǎn)換就成為重要的研究內(nèi)容。Feiler 提出將xUML 和AADL 集成到統(tǒng)一的模型驅(qū)動開發(fā)過程,通過一些經(jīng)驗規(guī)則來完成需求模型到AADL 模型的轉(zhuǎn)換[4],其中xUML 對UML 增加了更精確的執(zhí)行語義。
因為AADL 能夠同時描述系統(tǒng)的軟、硬件體系結(jié)構(gòu),兩者映射即可構(gòu)成PSM 模型。同時,也可以采用AADL 單獨建立系統(tǒng)的軟件體系結(jié)構(gòu)模型,作為AADL PIM 模型。
基于AADL UML Profile Annex,將AADL 原型(stereotype)標(biāo)注在UML 模型上,作為AADL PIM 模型。如構(gòu)件用UML 類圖表示,并標(biāo)注AADL 構(gòu)件類型。
模型轉(zhuǎn)換是MDD 的核心,同時也是AADL 模型驗證與分析的重要基礎(chǔ)。根據(jù)嵌入式實時系統(tǒng)的需求,給出了基于AADL 的模型驅(qū)動開發(fā)過程[6]:
1)獲得AADL PIM 模型,如基于AADL UML Profile Annex,將AADL 原型(stereotype)標(biāo)注在UML 模型上,作為AADL PIM;
2)利用功能轉(zhuǎn)換規(guī)則,轉(zhuǎn)換成AADL PSM;
3)利用非功能轉(zhuǎn)換規(guī)則,將PSM 轉(zhuǎn)換成AADL 分析模型,進行可調(diào)度、性能等分析;
4)基于正確的AADL 模型轉(zhuǎn)成可執(zhí)行代碼。
自動代碼生成主要研究從AADL 模型到可執(zhí)行代碼的生成規(guī)則、方法和工具。其優(yōu)點在于減少由手動編程所帶來的錯誤,保證系統(tǒng)質(zhì)量屬性以及降低系統(tǒng)開發(fā)時間[7]。目前基于AADL 模型可以生成的程序語言有Ada,C,C++,Java-RTSJ(real time specification for Java)等。同時針對分布式嵌入式實時系統(tǒng),可以生成實時中間件及其上的分布式應(yīng)用代碼。本文將基于AADL 模型的代碼生成歸納為以下幾類[8]:
1)基于AADL 各類軟件構(gòu)件,生成對應(yīng)的源代碼。如線程構(gòu)件到C 代碼的轉(zhuǎn)換。STOOD 工具支持AADL 到C,C++,Ada代碼生成以及HTML,RTF,MIF 等文檔的生成,還支持Ada,C 代碼到AADL 描述的逆向工程。
2)生成符合不同領(lǐng)域標(biāo)準(zhǔn)的應(yīng)用代碼,例如生成符合汽車電子控制系統(tǒng)標(biāo)準(zhǔn)AutoSAR、鐵路控制系統(tǒng)標(biāo)準(zhǔn)EN-50128 的C代碼。
3)實時中間件及其上的分布式應(yīng)用代碼生成。Ocarina工具支持從AADL 模型生成運行在PolyORB,Poly-ORB-HI(PolyORB-high integrity)中間件之上的Ada 分布式應(yīng)用代碼,同時支持生成POSIX 和RTEMS 平臺上的C代碼,其中PolyORB是一個通用中間件,目標(biāo)是為不同分布式應(yīng)用提供統(tǒng)一的解決方案。
4)基于AADL 的設(shè)備構(gòu)件,研究設(shè)備驅(qū)動代碼的生成技術(shù)。
為了增強建模工具和驗證工具Cheddar之間的互操作性,引入了AADL的四種經(jīng)典通信設(shè)計模式:同步數(shù)據(jù)流模式、互斥模式、黑板模式和排隊緩沖模式。下面對比較常用的幾個經(jīng)典通信設(shè)計模式[5]進行概述:
在同步數(shù)據(jù)流模式中,線程在dispatch時讀取輸入端口的數(shù)據(jù)、在complete時向輸出端口寫數(shù)據(jù)。此模式不需要共享的data構(gòu)件,processor構(gòu)件需要指定固定優(yōu)先級調(diào)度策略(如Rate Monotonic等)。這種模式只能用靜態(tài)調(diào)度策略,每個線程總是在固定的時間讀數(shù)據(jù)、執(zhí)行、寫數(shù)據(jù)(即使在不需要的情況下),因此顯得不靈活。但這種模式的分析卻非常簡單,可以進行處理器利用率(processor utilization factor)分析和最壞響應(yīng)時間(WCRT)分析等。
互斥模式考慮了異步通信的情形,在此模式中,線程通過優(yōu)先級繼承協(xié)議(priority inheritance protocols)異步訪問共享的data構(gòu)件。這種模式可以進行死鎖驗證和WCRT等,但計算WCRT 前需要先計算等待時間,這是很重要的。
典型操作系統(tǒng)有很多同步設(shè)計模式,如信號量、讀者寫者、生產(chǎn)者消費者等等。對于編程語言也有專用的同步設(shè)計模式,如黑板設(shè)計模式。黑板設(shè)計模式是讀者寫者模式的實現(xiàn),同一時刻只能有一個writer更新數(shù)據(jù),但可以有多個readers讀取數(shù)據(jù)。這種模式下,在任何時刻只有最后寫入的消息可用。
排隊緩沖模式使得在任何時刻,所有的寫入數(shù)據(jù)都可用,AADL通過事件數(shù)據(jù)端口或共享data構(gòu)件實現(xiàn)。假設(shè)buffer消息的處理協(xié)議是FIFO[9]。這種模式需要進行可調(diào)度性分析,此外,還需要分析內(nèi)存使用情況,以確保當(dāng)生產(chǎn)者速率大于消費者速率時不會丟失數(shù)據(jù)。
在對飛行管理系統(tǒng)AADL建模時,我們采用自主研制的高可靠實時操作系統(tǒng)FCOS作為其基礎(chǔ)運行環(huán)境,該操作系統(tǒng)是一款比較成熟的專用操作系統(tǒng),目前已經(jīng)成功應(yīng)用于我們研制的無人飛機、導(dǎo)彈系統(tǒng)中。
飛行管理系統(tǒng)(Flight Management System)是飛機重要的子系統(tǒng),能夠協(xié)助飛行員完成從起飛到著陸的各項任務(wù),管理、監(jiān)視和自動操縱飛機實現(xiàn)全航程的自動飛行。FMS集導(dǎo)航、制導(dǎo)、控制及座艙顯示于一體,其主要功能可分為飛行規(guī)劃、導(dǎo)航、性能優(yōu)化、制導(dǎo)及信息顯示。
飛行管理系統(tǒng)建模中主要使用周期任務(wù)來完成,而周期任務(wù)集τ的數(shù)學(xué)模型[3]由四元組τi={φi,Ti,Ci,Di}表示,其中φi為初始請求時間,Ci為任務(wù)執(zhí)行時間,Di為相對死線,Ti為任務(wù)周期。本文中論述的FMS系統(tǒng)各任務(wù)φi=0,Di=Ti。因此任務(wù)模型將簡化為τi={Ci,Di}。
從飛行管理系統(tǒng)功能劃分可以規(guī)劃飛行管理系統(tǒng)有導(dǎo)航傳感器處理線程、綜合導(dǎo)航線程、制導(dǎo)線程、飛行規(guī)劃線程、飛機性能優(yōu)化線程和控制顯示線程等六個處理線程。其模型[12]為TNav=(15,50),TⅠnt=(40,100),TGui=(30,50),TFli=(30,200),TAir=(100,500),THan=(1,50),單位為ms。為了避免共享數(shù)據(jù)區(qū)的生產(chǎn)者-消費者問題,任務(wù)之間通信采用共享數(shù)據(jù)區(qū),采用單工方式還是進行雙工通信,則取決于共享數(shù)據(jù)區(qū)的數(shù)目。
該飛行管理系統(tǒng)六個線程的AADL 建模實現(xiàn)如下程序所示:
以上線程的運行處理器平臺的AADL建模如下:
[1]http://www.ntsb.gov/aviationquery
[2]Gerard S,F(xiàn)eiler PH,Rolland JF,F(xiàn)ilali M,Reiser MO,Delanote D,Berbers Y,Pautet L,Perseil I.UML &AADL 2007 Grand challenge.ACM SIGBED Review,2007,4(4):1-17.
[3]Fuentes L,Sánchez P.Towards executable aspect-oriented UML models.In Proceedings of the 10th Int’l Workshop on Aspect-Oriented Modeling.New York:ACM Press,2007:28-34.
[4]Delanote D,van Baelen S,Joosen W,Berbers Y.Using AADL in model driven development.In Proceedings of the Int’l Conf.on Engineering Complex Computer Systems. Washington:IEEE Computer Society Press,2007:1-10.
[5]Feiler PH,de Niz D,Raistrick C,Lewis BA.From PIMs to PSMs.In Proceedings of the 12th IEEE Int’l Conf.on Engineering Complex Computer Systems.Washington:IEEE Computer Society Press,2007:365-370.
[6]Svetinovic D.Architecture-Level requirements specification.In:Proceedings of the 2nd Int’l Software Requirements to Architectures Workshop,2003:14-19.
[7]SAE Aerospace.SAE AS5506:Architecture Analysis and Design Language(AADL).SAE Int'l,2004.
[8]Gogul Balakrishnan,Thomas Reps.Analyzing Memory Accesses in x86Executables.In Proceedings of CC'04,2004:5-23
[9]F.Singhoff,L.Nana,J.Legrand.Implementing an AADL performance analyzer.In Proceedings of the Conference on Data Systems in Aerospace,DASIA’06.2006.
[10]張莉,姜浩.領(lǐng)域本體半自動化建模工具的設(shè)計與實現(xiàn)[J].計算機與數(shù)字工程,2009(9).
[11]張斌,劉祥,張琦.艦船電子系統(tǒng)并行工程質(zhì)量管理模型的研究與應(yīng)用[J].計算機與數(shù)字工程,2010(2).
[12]F.Nemer,H.Cass′e.Papabench:A free real-time benchmark.In Workshop on Worst-Case Execution Time Analysis,WCET’06,2006:1-6.