(1.陜西工業(yè)職業(yè)技術(shù)學(xué)院 咸陽(yáng) 712000)(2.中航工業(yè)西安飛行自動(dòng)控制研究所 西安 710075)
安全關(guān)鍵系統(tǒng)的模型驅(qū)動(dòng)開發(fā)過(guò)程中,怎樣提高模型對(duì)實(shí)時(shí)嵌入式系統(tǒng)非功能需求的表達(dá)能力,怎樣在早期設(shè)計(jì)過(guò)程中對(duì)系統(tǒng)進(jìn)行分析與驗(yàn)證,怎樣正確的生成代碼一直是研究熱點(diǎn)。體系結(jié)構(gòu)分析與設(shè)計(jì)語(yǔ)言AADL 是在這種背景下產(chǎn)生的,能夠描述ERTS的非功能屬性,支持靜態(tài)、動(dòng)態(tài)結(jié)構(gòu)的協(xié)同建模,支持軟件、硬件的協(xié)同建模,并且可以針對(duì)特定領(lǐng)域進(jìn)行擴(kuò)展。而AADL 具有語(yǔ)法簡(jiǎn)單、功能強(qiáng)大、可擴(kuò)展的優(yōu)點(diǎn),使基于AADL 的模型驅(qū)動(dòng)過(guò)程得到了學(xué)術(shù)界和工業(yè)界的廣泛研究和應(yīng)用。
AADL 是嵌入式實(shí)時(shí)系統(tǒng)領(lǐng)域的體系結(jié)構(gòu)設(shè)計(jì)與分析標(biāo)準(zhǔn)[1],而MDD 正在成為主流的開發(fā)過(guò)程。提出AADL與MDD 結(jié)合,能夠使AADL 得到更廣泛的使用。MDD 定義了三個(gè)層次的抽象:平臺(tái)獨(dú)立模型(platform independent model,簡(jiǎn)稱PIM)、平臺(tái)特定模型(platform specific model,簡(jiǎn)稱PSM)以及應(yīng)用代碼。PIM 是模型驅(qū)動(dòng)設(shè)計(jì)的初始抽象模型,是設(shè)計(jì)過(guò)程中最為重要的環(huán)節(jié)之一。因此,AADL建模方法的研究主要涉及AADL PIM 的構(gòu)造。我們歸納為三類:
由于UML,SysML,xUML (executable UML)[2],HOOD 等描述語(yǔ)言已經(jīng)廣泛應(yīng)用于需求的描述,因此結(jié)合這些描述語(yǔ)言的優(yōu)勢(shì)是必要的,從需求模型到AADL 模型的轉(zhuǎn)換就成為重要的研究?jī)?nèi)容。Feiler 提出將xUML 和AADL 集成到統(tǒng)一的模型驅(qū)動(dòng)開發(fā)過(guò)程,通過(guò)一些經(jīng)驗(yàn)規(guī)則來(lái)完成需求模型到AADL 模型的轉(zhuǎn)換[4],其中xUML 對(duì)UML 增加了更精確的執(zhí)行語(yǔ)義。
因?yàn)锳ADL 能夠同時(shí)描述系統(tǒng)的軟、硬件體系結(jié)構(gòu),兩者映射即可構(gòu)成PSM 模型。同時(shí),也可以采用AADL 單獨(dú)建立系統(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 的核心,同時(shí)也是AADL 模型驗(yàn)證與分析的重要基礎(chǔ)。根據(jù)嵌入式實(shí)時(shí)系統(tǒng)的需求,給出了基于AADL 的模型驅(qū)動(dòng)開發(fā)過(guò)程[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 分析模型,進(jìn)行可調(diào)度、性能等分析;
4)基于正確的AADL 模型轉(zhuǎn)成可執(zhí)行代碼。
自動(dòng)代碼生成主要研究從AADL 模型到可執(zhí)行代碼的生成規(guī)則、方法和工具。其優(yōu)點(diǎn)在于減少由手動(dòng)編程所帶來(lái)的錯(cuò)誤,保證系統(tǒng)質(zhì)量屬性以及降低系統(tǒng)開發(fā)時(shí)間[7]。目前基于AADL 模型可以生成的程序語(yǔ)言有Ada,C,C++,Java-RTSJ(real time specification for Java)等。同時(shí)針對(duì)分布式嵌入式實(shí)時(shí)系統(tǒng),可以生成實(shí)時(shí)中間件及其上的分布式應(yīng)用代碼。本文將基于AADL 模型的代碼生成歸納為以下幾類[8]:
1)基于AADL 各類軟件構(gòu)件,生成對(duì)應(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)實(shí)時(shí)中間件及其上的分布式應(yīng)用代碼生成。Ocarina工具支持從AADL 模型生成運(yùn)行在PolyORB,Poly-ORB-HI(PolyORB-high integrity)中間件之上的Ada 分布式應(yīng)用代碼,同時(shí)支持生成POSIX 和RTEMS 平臺(tái)上的C代碼,其中PolyORB是一個(gè)通用中間件,目標(biāo)是為不同分布式應(yīng)用提供統(tǒng)一的解決方案。
4)基于AADL 的設(shè)備構(gòu)件,研究設(shè)備驅(qū)動(dòng)代碼的生成技術(shù)。
為了增強(qiáng)建模工具和驗(yàn)證工具Cheddar之間的互操作性,引入了AADL的四種經(jīng)典通信設(shè)計(jì)模式:同步數(shù)據(jù)流模式、互斥模式、黑板模式和排隊(duì)緩沖模式。下面對(duì)比較常用的幾個(gè)經(jīng)典通信設(shè)計(jì)模式[5]進(jìn)行概述:
在同步數(shù)據(jù)流模式中,線程在dispatch時(shí)讀取輸入端口的數(shù)據(jù)、在complete時(shí)向輸出端口寫數(shù)據(jù)。此模式不需要共享的data構(gòu)件,processor構(gòu)件需要指定固定優(yōu)先級(jí)調(diào)度策略(如Rate Monotonic等)。這種模式只能用靜態(tài)調(diào)度策略,每個(gè)線程總是在固定的時(shí)間讀數(shù)據(jù)、執(zhí)行、寫數(shù)據(jù)(即使在不需要的情況下),因此顯得不靈活。但這種模式的分析卻非常簡(jiǎn)單,可以進(jìn)行處理器利用率(processor utilization factor)分析和最壞響應(yīng)時(shí)間(WCRT)分析等。
互斥模式考慮了異步通信的情形,在此模式中,線程通過(guò)優(yōu)先級(jí)繼承協(xié)議(priority inheritance protocols)異步訪問(wèn)共享的data構(gòu)件。這種模式可以進(jìn)行死鎖驗(yàn)證和WCRT等,但計(jì)算WCRT 前需要先計(jì)算等待時(shí)間,這是很重要的。
典型操作系統(tǒng)有很多同步設(shè)計(jì)模式,如信號(hào)量、讀者寫者、生產(chǎn)者消費(fèi)者等等。對(duì)于編程語(yǔ)言也有專用的同步設(shè)計(jì)模式,如黑板設(shè)計(jì)模式。黑板設(shè)計(jì)模式是讀者寫者模式的實(shí)現(xiàn),同一時(shí)刻只能有一個(gè)writer更新數(shù)據(jù),但可以有多個(gè)readers讀取數(shù)據(jù)。這種模式下,在任何時(shí)刻只有最后寫入的消息可用。
排隊(duì)緩沖模式使得在任何時(shí)刻,所有的寫入數(shù)據(jù)都可用,AADL通過(guò)事件數(shù)據(jù)端口或共享data構(gòu)件實(shí)現(xiàn)。假設(shè)buffer消息的處理協(xié)議是FIFO[9]。這種模式需要進(jìn)行可調(diào)度性分析,此外,還需要分析內(nèi)存使用情況,以確保當(dāng)生產(chǎn)者速率大于消費(fèi)者速率時(shí)不會(huì)丟失數(shù)據(jù)。
在對(duì)飛行管理系統(tǒng)AADL建模時(shí),我們采用自主研制的高可靠實(shí)時(shí)操作系統(tǒng)FCOS作為其基礎(chǔ)運(yùn)行環(huán)境,該操作系統(tǒng)是一款比較成熟的專用操作系統(tǒng),目前已經(jīng)成功應(yīng)用于我們研制的無(wú)人飛機(jī)、導(dǎo)彈系統(tǒng)中。
飛行管理系統(tǒng)(Flight Management System)是飛機(jī)重要的子系統(tǒng),能夠協(xié)助飛行員完成從起飛到著陸的各項(xiàng)任務(wù),管理、監(jiān)視和自動(dòng)操縱飛機(jī)實(shí)現(xiàn)全航程的自動(dòng)飛行。FMS集導(dǎo)航、制導(dǎo)、控制及座艙顯示于一體,其主要功能可分為飛行規(guī)劃、導(dǎo)航、性能優(yōu)化、制導(dǎo)及信息顯示。
飛行管理系統(tǒng)建模中主要使用周期任務(wù)來(lái)完成,而周期任務(wù)集τ的數(shù)學(xué)模型[3]由四元組τi={φi,Ti,Ci,Di}表示,其中φi為初始請(qǐng)求時(shí)間,Ci為任務(wù)執(zhí)行時(shí)間,Di為相對(duì)死線,Ti為任務(wù)周期。本文中論述的FMS系統(tǒng)各任務(wù)φi=0,Di=Ti。因此任務(wù)模型將簡(jiǎn)化為τi={Ci,Di}。
從飛行管理系統(tǒng)功能劃分可以規(guī)劃飛行管理系統(tǒng)有導(dǎo)航傳感器處理線程、綜合導(dǎo)航線程、制導(dǎo)線程、飛行規(guī)劃線程、飛機(jī)性能優(yōu)化線程和控制顯示線程等六個(gè)處理線程。其模型[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)者-消費(fèi)者問(wèn)題,任務(wù)之間通信采用共享數(shù)據(jù)區(qū),采用單工方式還是進(jìn)行雙工通信,則取決于共享數(shù)據(jù)區(qū)的數(shù)目。
該飛行管理系統(tǒng)六個(gè)線程的AADL 建模實(shí)現(xiàn)如下程序所示:
以上線程的運(yùn)行處理器平臺(tái)的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)域本體半自動(dòng)化建模工具的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)與數(shù)字工程,2009(9).
[11]張斌,劉祥,張琦.艦船電子系統(tǒng)并行工程質(zhì)量管理模型的研究與應(yīng)用[J].計(jì)算機(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.