999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于AndroMDA的實時系統代碼生成技術研究

2010-09-02 06:23:54苑春春孔祥營凌云鋒
指揮控制與仿真 2010年6期

苑春春,孔祥營,凌云鋒

(中國船舶重工集團公司江蘇自動化研究所,江蘇 連云港 222006)

目前,實時系統廣泛應用于工業、國防、交通、能源、醫療衛生以及日常生活等領域,并發揮著極其重要的作用。但由于硬件、性能等約束,實時系統軟件的開發通常要比非實時系統軟件的開發困難許多[1]。代碼生成技術是一項利用計算機程序來產生其他程序的技術,應用此技術可有效提高軟件開發的質量和效率[2]。因此,將代碼生成技術應用到實時系統軟件的開發中是一件有必要且很有意義的工作。

LACATRE[3-4]是一種用于實時多任務應用的圖形化軟件設計工具,它以圖形化方式支持軟件的設計和代碼生成。該工具可支持任務、中斷及信號量等對象,并生成相應的代碼,具有直觀和操作簡便的優點。但由于其抽象層次較低,代碼生成效率并不高。MDA[5-6]也是利用圖形化的開發工具對軟件進行開發。它以UML為工具進行圖形化建模,并將模型區分為描述系統業務功能的PIM和描述系統在特定技術平臺上實現的PSM,通過PIM到PSM的轉換和PSM到代碼的轉換,完成軟件系統的開發過程。MDA對于提高軟件的生產效率、可移植性、可復用性、可維護性等方面,都產生積極地影響,然而目前并沒有面向實時系統的MDA工具。本文基于開源軟件AndroMDA,以VxWorks操作系統[7-8]為平臺,研究和設計了實時系統的PIM到PSM、PSM到代碼的轉換規則和實現算法。最后通過實際效果驗證,該技術能有效提高實時系統軟件開發的效率和質量。

1 AndroMDA簡介

AndroMDA[9-10]是遵循MDA規范的一個開源的開發工具。AndroMDA導入由建模工具生成的以XMI文件形式表示的PIM,將其實例化為語法抽象樹;然后對實例化后的PIM進行遍歷。在此過程中,AndroMDA生成相應的Metafacade對象,通過該對象將PIM轉換為相應的PSM;再通過模板引擎及相應的模板文件,將PSM轉換成代碼。

AndroMDA由Cartridge、Metafacade、Repository、Template Engines和Translation Libraries等組件組成。其中,Cartridge是AndroMDA模型轉換過程中的核心組件,它的功能是提取加了擴展機制或滿足特定推斷條件的UML元素并進行處理;Metafacade從模板中獲取模型的API,簡化模板的工作;Repository是負責存儲PIM的主要組件;Template Engines是負責代碼生成的組件;Translation Libraries將OCL轉換成為特定平臺的代碼,實現代碼的約束和查詢。

現在AndroMDA主要用于生成J2EE平臺上的代碼,通過修改和擴展AndroMDA的組件,可設計出生成其他平臺代碼的工具。

2 實時系統模型轉換規則研究

模型轉換規則研究包括分析平臺技術,設計其PSM元模型,以及設計PIM到PSM和PSM到代碼的轉換規則[9]。本文主要研究類圖及狀態圖這兩種UML圖的轉換規則,其中類圖實現任務、中斷和通信的靜態結構,狀態圖實現任務或中斷的動態行為。

2.1 PSM元模型

PSM元模型描述PSM的語義,它代表了PSM所屬平臺的核心概念和關鍵技術。實時系統的核心概念包括有可編程對象和可配置對象[3]??删幊虒ο笫菓贸绦蛑挟a生動作的實體,并體現了信息轉換的過程。在VxWorks平臺中,可編程對象有任務(Task)、信號(Signal)、中斷服務程序(ISR)和看門狗(Watchdog Timer)等。可配置對象用于可編程對象之間的通信和同步。在 VxWorks平臺中,可配置對象有信號量(Semaphore)、消息(Message)、消息隊列(Message Queue)、和管道(Pipe)等。

根據上述概念,本文給出VxWorks平臺的PSM元模型如圖1所示。

圖1 VxWorks的PSM元模型

2.2 PIM到PSM的轉換規則

在 AndroMDA中,PIM到 PSM的轉換是由Metafacade類來實現的。PIM與PSM之間的轉換可以看作是對PIM的Metafacade類的操作,這些操作的返回結果是一個 PSM 的元對象,操作的算法則是 PIM到PSM的轉換規則。本文設計的PIM到PSM的轉換規則如下:

1)PIM中實現任務的類對應著PSM中的一個任務,此類的狀態機對應任務的具體實現過程。

2)PIM中實現中斷的類對應著PSM中的一個中斷(中斷處理程序調用、看門狗程序調用、信號中斷調用等),此類的狀態機對應中斷的具體實現過程。

3)PIM中實現通信的類對應著PSM中的一個通信(二進制信號量、互斥信號量、計數器信號量、消息隊列、管道等)。

4)如果PIM狀態機中遷移的觸發事件是并發事件,此遷移對應一個并發任務調用。

5)如果PIM狀態機中遷移的觸發事件是中斷事件,根據中斷事件所屬類的類型,此遷移分別對應著中斷處理程序調用、看門狗程序調用、信號中斷調用等中斷的調用。

6)如果PIM狀態機中遷移的觸發事件是通信事件,根據通信事件所屬類的類型,此遷移分別對應著二進制信號量、互斥信號量、計數器信號量、消息隊列、管道等通信的調用。

根據上述模型轉換規則,可以實現如圖2所示的Metafacade類模型。

在AndroMDA中,通過在PIM元模型上添加擴展機制(UML profile),解決轉換過程中信息不明確的情況[9]。由于擴展機制一般是根據相關平臺的特征設計的,所以擴展后的PIM在一定程度上會帶有與PSM所屬平臺相關的信息,降低 PIM 的平臺無關性。但PIM與PSM的概念本就是相對的,并沒有絕對的平臺無關[6],所以將PIM保持在一個相對較大程度的平臺無關即可。由此本文提出設計擴展機制的一個基本原則:通過領域分析,將擴展機制設計為與領域平臺保持一定相關,而與此領域內具體實現技術平臺保持無關,通過這種方式保持PIM較大程度的平臺無關性。

圖2 Metafacade類模型

本文設計的擴展機制如表1、表2所示。可以看出,這些擴展機制都不是VxWorks平臺所特有的,而是所有實時系統都具有的特征,它們同樣可以應用于其他的實時系統平臺。所以這些擴展機制雖然與實時系統平臺相關,但與VxWorks平臺仍保持較大程度的平臺無關,符合本文提出的設計原則。

表1 本文設計的構造型擴展機制

2.3 PSM到代碼的轉換規則

PSM到代碼的轉換主要由Cartridge組件負責。Cartridge組件對PSM進行分析,并通過相應的模板文件將PSM轉換為代碼文件。

本文主要針對狀態圖提出轉換規則。狀態圖由狀態和狀態間的遷移組成,在轉換過程中,狀態圖中的狀態轉換為任務或中斷的過程或執行點;狀態之間的遷移轉換為任務或中斷對其他實時對象的調用語句;任務或中斷的循環、條件等控制語句則是在對狀態圖結構的有限遍歷分析得出的。

表2 本文設計的標簽值擴展機制

2.3.1 狀態轉換規則

狀態圖中的狀態可分為偽狀態、簡單狀態和復合狀態。

偽狀態又可分為初始狀態、終止狀態、選擇狀態和歷史狀態等。初始狀態表示程序開始運行;終止狀態表示程序執行結束,轉換為刪除語句或結束語句;選擇狀態表示程序的條件控制語句,結合遷移中的監護條件,實現程序的選擇語句;歷史狀態表示先前被激活的狀態,轉換為任務恢復語句。

簡單狀態轉換為程序的執行點,可通過狀態的動作來說明此段程序的具體執行語句。

復合狀態中的或狀態代表了一組順序執行的子狀態,轉換為程序中相應的順序執行語句。復合狀態中的與狀態代表了多個并發執行的子狀態,結合遷移中的并發事件,轉換為程序中對多個并發任務的任務激活語句。

2.3.2 遷移轉換規則

狀態間的遷移由源狀態、觸發事件、監護條件、動作和目標狀態組成。

由前文可知,本文設計的觸發事件有四種:并發事件、中斷事件、接收事件和發送事件。并發事件表示對并發任務的調用,轉換為任務調用語句;中斷事件表示對中斷事件的響應,根據中斷事件的類型,轉換為中斷服務程序、信號或看門狗的中斷調用語句;接收/發送事件表示對通信的接收/發送,根據通信事件的類型,轉換為信號量、消息或管道的調用語句;遷移的動作是遷移中所需執行的計算處理過程,轉換為對事件調用語句,調用語句的具體實現在遷移事件的動作列表中表明。

監護條件結合源狀態和目標狀態,轉換為循環或條件控制語句。

2.3.3 控制語句轉換規則

狀態圖中的選擇狀態、監護條件以及遷移的流出方向,一起決定了程序的控制語句。由于控制語句本身的復雜性,控制語句的轉換規則較為復雜,為方便對狀態圖的控制算法的分析。首先定義以下術語:

1)路徑:狀態圖中任何狀態的序列及狀態間的遷移稱為路徑。

2)循環路徑:起始于狀態S,經過狀態間的遷移又返回到狀態S的路徑稱為循環路徑。

3)循環起始狀態:對狀態圖從初始狀態進行深度優先搜索時,在循環路徑中搜索到的第一個狀態稱為這個循環路徑中的循環起始狀態。

4)循環終止狀態:這個狀態處于循環路徑中,且其目標狀態是此循環路徑的循環起始狀態。這個狀態稱為循環終止狀態。

5)完整路徑:從初始狀態到終止狀態或到循環終止狀態的路徑稱為完整路徑。

本文設計的狀態圖控制算法的主要轉換規則如下:

1)如果狀態 S是初始狀態,則表示狀態圖的分析開始。

2)對所有循環路徑,如果狀態 S是這個循環路徑的循環起始狀態,有以下轉換規則:

a)在循環路徑上的流出遷移和流入遷移均無監護條件,則轉換為 forever語句,循環路徑上轉換為forever語句的循環體。

b)在循環路徑上的流出遷移無監護條件,但流入遷移有監護條件,則轉換為do-while語句。語句的循環體為其循環路徑,循環條件為此監護條件。

c)在循環路徑上的流入遷移無監護條件,但流出遷移有監護條件,則轉換為while語句,語句的循環體為其循環路徑,循環條件為此監護條件。

d)在循環路徑上的流出遷移和流入遷移均有監護條件,則在轉換規則c)的基礎上,在循環體內最后加上do{}while語句,while的條件是(!監護條件)。

3)如果狀態 S不是循環起始狀態或循環終止狀態,有以下轉換規則:

a)流出遷移有監護條件,則轉換為if語句,語句的選擇體為這條路徑,條件為此監護條件。

b)狀態S有多個流出遷移,觸發事件相同,監護條件不同,則轉換為switch-case語句形式,case中的條件為相應流出遷移上的監護條件。

4)如果狀態 S是鏈接狀態,則將兩個監護條件合并為判定式的與關系。

5)如果狀態圖上所有完整路徑都被分析過,表示此狀態圖的分析完成。

3 原型實現及驗證

3.1 實現算法

為了實現代碼的生成,需要對每個狀態圖進行兩次遍歷。第一次遍歷是找出狀態圖中所有的完整路徑,并當這些路徑中含有循環路徑時,記錄下此循環路徑的循環起始狀態和循環終止狀態。第二次遍歷是在第一次遍歷的基礎上,對每一個路徑結合第一次遍歷的結果進行分析,并按照相應的轉換規則生成代碼。兩次遍歷的具體算法如圖3所示。

假設一個狀態圖中有k條完整路徑,m個狀態,n個遷移。易知,第一次遍歷所需的時間復雜性是O(km),空間復雜性也為 O(km)。假設按照轉換規則生成代碼的時間O(1),則第二次遍歷所需的時間復雜性也為O(km)。所以上述算法的時間復雜性和空間復雜性均為O(km)。又因為在狀態圖中,除終止狀態外,每一個狀態至少引出一條流出遷移。如果每一條流出遷移,表示此狀態引出一條路徑。所以當(1)狀態圖中有終止狀態時,k=n+1-m+1=n-m+2;(2)狀態圖中無終止狀態時,k=n-m+1。由此可推出,算法的時間復雜性和空間復雜性均為O(nm)。

圖3 兩次遍歷的算法活動圖

3.2 應用效果分析

本文根據上述轉換規則及實現算法,已實現AndroMDA的實時系統代碼生成工具RT-AndroMDA的原型。利用代碼生成工具生成的實時系統軟件,其正確性和時效性等性能一方面與軟件開發人員的設計有關,另一方面也與代碼生成工具對軟件開發人員建模的支持能力及模板的完整度有關。后者也是評價一個代碼生成工具有效性的重要標準。模板由代碼生成工具的設計者編寫,這些模板除編寫模板的語言外并無太大差別,它們經過修改,都能生成一樣的代碼。而各種代碼生成工具對于建模的支持能力差別較大。LACATRE僅支持流程圖式的建模,不能對算法流程外的其他軟件特性進行建模。而且它也不支持模型的嵌套開發,使得建立的模型較為復雜。另外,它僅覆蓋軟件生命周期的設計和編碼兩個階段,抽象層次較低。而RT-AndroMDA利用UML等技術克服了上述缺陷,它支持軟件開發人員通過用例圖、類圖、狀態圖等 UML圖對軟件的各種特性進行建模。同時它支持模型的嵌套開發,有效的降低了建模的復雜性。另外由于PIM的平臺無關性,也使其抽象性得到提高,支持軟件生命周期從分析到測試的各個階段,有利于模型的移植和復用。

在實際應用中,本文利用RT-AndroMDA實現了共8777行代碼的一個實時系統軟件,其中自動生成代碼約 6500行,約占總代碼量的 74%。為進一步考察此工具的效果,本文結合以往的經驗數據,對傳統方法、LACATRE方法和本文設計的方法進行對比。結果如表3所示。

表3 實際應用效果比較

由表3可知,使用RT-AndroMDA在進行軟件開發時所需的工作量減少了47%,缺陷率也減少60%。這說明RT-AndroMDA對實時系統的軟件的開發效率和質量都由提高。不過也可看到,雖然工具生成約74%的代碼,但是工作效率和質量并沒有提高這么多。其主要原因是:軟件開發人員在建模過程中要比純手工編碼時的建模過程需要關注更多的細節,所以導致建模過程時間較長,也較易有疏漏。另外開發人員也需一定時間熟悉此工具。

4 結束語

本文研究了基于開源軟件 AndroMDA的實時系統代碼生成技術,分析并設計了實時系統PIM到PSM及PSM到代碼的轉換規則和實現算法。通過應用這些轉換規則和實現算法,本文已初步實現了類圖及狀態圖到實時系統代碼的轉換生成。經過應用效果分析可知,AndroMDA對實時系統軟件的開發效率和質量都有較大提高。下一步的工作是進一步完善轉換規則和實現算法,并研究其他UML圖如順序圖的模型轉換,以更好的實現實時系統的代碼生成。

[1]Bruce Powel Douglass.Real Time UML:Advances in The UML for Real-Time Systems[M].Third Edition.USA,Addison-Wesley, February 20,2004.

[2]Jack Herrington.Code Generation in Action[M].USA,Manning, 2003.

[3]Schwarz J.J., Skubich J.J., Szwed P., Maranzana M.Real Time Multitasking Design with Graphical Tool[C].First IEEE Workshop on Real Time Applications,New-York,USA, May 1993.

[4]劉曉燕,字天文,張云生,等.UML-RT到一個實時多任務執行模型的轉換[J].計算機科學,2007,34(7):275~278.

[5]OMGMDA guide version 1.0.1.http://www.omg.org/mda/.

[6]Anneke Kleppe, etc.解析MDA[M].鮑志云譯.北京:人民郵電出版社,2004.

[7]Wind River.VxWorks Programmer’s Guide 5.4[M].Wind River System Inc,May 1999.

[8]孔祥營,柏桂枝.嵌入式實時操作系統VxWorks及其開發環境Tornado[M].北京:中國電力出版社,2001.

[9]droMDA.andromda-docs-3.3http://www.andromda.org/.

[10]蔡斌輝.AndroMDA模型轉換組件開發方法的研究與應用[D].合肥工業大學碩士學位論文,2006.

主站蜘蛛池模板: 日本在线免费网站| 国产视频欧美| 久久精品女人天堂aaa| 国产探花在线视频| 国产三级成人| 日韩在线成年视频人网站观看| 欧美午夜网| 国产精品.com| 色综合网址| 亚洲男人的天堂久久香蕉| 久久99国产乱子伦精品免| 亚洲中文字幕日产无码2021| 香蕉精品在线| 国产色网站| 国产裸舞福利在线视频合集| 亚洲经典在线中文字幕| 福利在线不卡| 久久亚洲精少妇毛片午夜无码 | 99精品一区二区免费视频| 日韩人妻少妇一区二区| 国产一区二区福利| 国产精品一区在线观看你懂的| 激情综合五月网| 欧美成人午夜视频| 欧美黄色网站在线看| 伊大人香蕉久久网欧美| 91午夜福利在线观看| 日本AⅤ精品一区二区三区日| 91香蕉国产亚洲一二三区| 精品国产Ⅴ无码大片在线观看81| 国产精品yjizz视频网一二区| 亚洲AV无码一区二区三区牲色| 久久久久久久97| 成·人免费午夜无码视频在线观看| 国产黄视频网站| 国产成人av一区二区三区| 怡春院欧美一区二区三区免费| 在线观看无码a∨| 2021精品国产自在现线看| 久久中文字幕av不卡一区二区| 不卡无码网| 最新无码专区超级碰碰碰| 九九热免费在线视频| 韩日午夜在线资源一区二区| 久久久久久久久18禁秘| 色婷婷色丁香| www精品久久| 日韩欧美中文字幕一本| 第一页亚洲| 久久黄色一级视频| 91精品啪在线观看国产| 国产视频 第一页| 97国产精品视频自在拍| 日韩在线中文| 黄色不卡视频| 国产美女视频黄a视频全免费网站| 欧美成一级| 亚洲欧美自拍一区| 免费观看欧美性一级| 国产色偷丝袜婷婷无码麻豆制服| 狠狠色狠狠色综合久久第一次| 毛片免费试看| 国产精品9| 先锋资源久久| 精品成人免费自拍视频| 色哟哟色院91精品网站| 国产精品视频导航| 国产呦精品一区二区三区下载| 国产男女免费完整版视频| 国产99在线观看| www.亚洲一区二区三区| 亚洲V日韩V无码一区二区| 欧美在线国产| 色综合五月婷婷| 日韩免费毛片| 18禁黄无遮挡免费动漫网站| 九色综合伊人久久富二代| 91年精品国产福利线观看久久 | 亚洲中文精品人人永久免费| 99久久精品久久久久久婷婷| 99久久无色码中文字幕| 亚洲日韩第九十九页|