嚴(yán)永嘉,晏 華,鄧堯文
(電子科技大學(xué)計算機科學(xué)與工程學(xué)院,四川成都611731)
為了有效管理日趨復(fù)雜的汽車電子系統(tǒng)并最大限度地降低開發(fā)和維護成本,多家整車廠商和汽車電子供應(yīng)商聯(lián)合推出了AUTOSAR標(biāo)準(zhǔn),由于它的設(shè)計思想是將硬件和軟件的開發(fā)進(jìn)行分離,使得汽車軟件的開發(fā)具有更高的靈活性、更低的成本和更短的開發(fā)周期[1,2]。
經(jīng)過這十年的發(fā)展,各工具供應(yīng)商陸續(xù)推出了支持AUTOSAR標(biāo)準(zhǔn)的設(shè)計工具,如美國明導(dǎo)科技發(fā)布的車載軟件開發(fā)工具Volcano Vehicle Systems Architect和IBM公司的Rational Systems Developer,它們都能進(jìn)行AUTOSAR系統(tǒng)建模,具有基于AUTOSAR的配置和代碼生成功能。另外在美國MathWorks公司開發(fā)的Matlab/Simulink中既支持單個構(gòu)件的設(shè)計,也支持多個構(gòu)件連接組成一個系統(tǒng)。反觀國內(nèi)的整車廠商,由于涉足汽車電子領(lǐng)域較晚,不僅要花高昂的費用從國外的廠商購買工具,還需要聘請國外的工程師來國內(nèi)進(jìn)行培訓(xùn)和指導(dǎo)。
為了發(fā)展本土的汽車電子行業(yè),在國家的支持下,國內(nèi)的高校和基礎(chǔ)軟件公司也開始進(jìn)行AUTOSAR的相關(guān)研究和工具開發(fā)。本文正是參照AUTOSAR標(biāo)準(zhǔn),采用GEF技術(shù)并結(jié)合Artop平臺,開發(fā)了面向虛擬功能總線的圖形化組件設(shè)計工具,它以圖形的方式直觀地顯示組件之間的關(guān)系,以列表的形式展示組件的配置信息,并能生成符合AUTOSAR規(guī)范的描述文件。
GEF是Eclipse的一個開源項目,它基于MVC(model-view-control)架構(gòu)[3],為模型提供了圖形化的編輯環(huán)境。在Eclipse平臺中,GEF框架常常用來創(chuàng)建圖形編輯器和大綱視圖,它是構(gòu)成Eclipse應(yīng)用中圖形界面的重要部分。
MVC架構(gòu)是GEF的基礎(chǔ),MVC架構(gòu)中的模型、視圖、控制器概念分別對應(yīng)GEF中的Model、Figure和Edit-Part。GEF中模型通常是用戶創(chuàng)建的在圖形編輯器中顯示的對象,它擁有自己的結(jié)構(gòu)和屬性。EditPart Viewer是GEF中定義的視圖,它不僅是模型對應(yīng)的圖形元素的容器,還要提供編輯和工具提示等功能[4]??刂破魇荕VC架構(gòu)的核心組成部分,它將模型和視圖聯(lián)系在一起[5],不僅要監(jiān)聽模型的變化,還要把用戶請求的操作結(jié)果反映到視圖上。GEF中的EditPart負(fù)責(zé)管理Model與Figure映射的方式以及Figure在收到請求時所產(chǎn)生的行為。
AUTOSAR是由全球汽車制造商、部件供應(yīng)商及軟硬件和電子工業(yè)等企業(yè)共同制定的標(biāo)準(zhǔn)[6]。該標(biāo)準(zhǔn)支持基于構(gòu)件的汽車電子應(yīng)用程序的開發(fā),其基本思想為:應(yīng)用軟件通過在虛擬功能總線上連接預(yù)制的可信的構(gòu)件組裝而成,構(gòu)件在運行時通過端口進(jìn)行交互[7]。
為了實現(xiàn)可重用的目標(biāo),AUTOSAR軟件的開發(fā)是與底層硬件獨立的,這個獨立性由虛擬功能總線(virtual function bus,VFB)實現(xiàn)。VFB意味著一種虛擬的硬件和一種獨立的系統(tǒng)集成,它模擬了真實的通信總線,并通過已定義好的接口進(jìn)行通信。下面對VFB中的用到的幾種組件模型進(jìn)行簡單的介紹。
構(gòu)建系統(tǒng)最重要的元素就是構(gòu)件,它是電子控制單元上完成某一功能的最小代碼集合。一個構(gòu)件有預(yù)先定義好的端口,并通過這些端口和其他構(gòu)件進(jìn)行通信。構(gòu)件集合在本質(zhì)上也是構(gòu)件的一種,它不具有原子性,在構(gòu)件集合中可以包含其他構(gòu)件或者構(gòu)件集合[8]。它自身可以配置端口來進(jìn)行通信,但它沒有具體的實現(xiàn)代碼和內(nèi)部行為。端口是一個構(gòu)件和其他構(gòu)件的交互點。一個構(gòu)件的端口只能是供型端口或者需型端口[9],而端口的類型由則由它所配置的接口決定。在接口中定義了提供或者需求這個接口的端口所要傳輸?shù)臄?shù)據(jù)或者可以完成的操作,構(gòu)件的每個端口都要和一個接口進(jìn)行關(guān)聯(lián)。在設(shè)計AUTOSAR系統(tǒng)的時候,端口之間的通信需要連接器來完成。連接器存在于軟件構(gòu)件的外部,并且不能單獨存在。它需要連接到兩個端口上,而且這兩個端口必須由同一個接口實例化而來。
虛擬功能總線,如圖1所示。
圖1 虛擬功能總線
Artop(AUTOSAR tool platform)是AUTOSAR組織的核心成員為了推動采用該標(biāo)準(zhǔn)的工具鏈的發(fā)展而推出的開放性平臺[10]。它基于Eclipse技術(shù)構(gòu)建而成,為不同的工具供應(yīng)商開發(fā)的設(shè)計工具實現(xiàn)了公共的基礎(chǔ)功能,這樣就避免了供應(yīng)商在非競爭性的基礎(chǔ)平臺上進(jìn)行重復(fù)開發(fā),為AUTOSAR軟件開發(fā)的各階段提供了很好的測試平臺。
本文研究的圖形化組件設(shè)計工具基于Eclipse開發(fā),包含3個主要的功能模塊:圖形編輯模塊、資源管理模塊和屬性配置模塊。圖形編輯模塊負(fù)責(zé)組件模型的顯示。資源管理模塊用于統(tǒng)一組織、顯示和保存VFB組件。屬性配置模塊有兩個功能,一是負(fù)責(zé)組件的屬性信息的顯示和修改,二是配置構(gòu)件的內(nèi)部行為。圖2展示了工具的整體架構(gòu)。
圖2 系統(tǒng)架構(gòu)設(shè)計框架
在圖形化組件設(shè)計工具中,圖形編輯器負(fù)責(zé)模型的顯示工作。其中模型要和標(biāo)準(zhǔn)中定義的VFB組件模型一一對應(yīng),構(gòu)件、構(gòu)件集合、端口、接口都可以采用GEF中的矩形模型來表示,而連接器可以使用連接模型來表示。其中矩形模型之間是父子兄弟的關(guān)系,連接模型則是起點和終點的關(guān)系。由于汽車系統(tǒng)的設(shè)計是以構(gòu)件和構(gòu)件集合為基礎(chǔ)進(jìn)行開發(fā)的,并且構(gòu)件集合不具有構(gòu)件的原子性,所以需要設(shè)計兩個編輯器來完成對這兩種組件的編輯功能。
圖形編輯器是嚴(yán)格按照Eclipse的MVC模式來設(shè)計的,它分為五個子模塊,分別是控制器模塊、策略模塊、命令模塊、模型模塊和圖形模塊??刂破髂K將視圖和圖形模型進(jìn)行綁定;策略模塊提供各控制器的操作方法約束;命令模塊提供用戶界面和控制器的交互機制;模型模塊定義了編輯器所需的圖形模型;圖形模塊顯示模型的繪制形式。它們之間的關(guān)系如圖3所示。
圖3 圖形編輯器子模塊的關(guān)系
組件模型通過繼承Property AwareObject類(項目中自定義的模型基類)來實現(xiàn)。圖形編輯視圖的實現(xiàn)需要繼承GEF的org.eclipse.gef.ui.parts.ScrollingGraphical Viewer。而圖形編輯所支持的鼠標(biāo)操作等繪圖命令通過繼承org.eclipse.gef.editparts.AbstractEditPart,并通過實現(xiàn)org.eclipse.gef.EditPart,org.eclipse.core.runtime.IAdaptable,org.eclipse.gef.RequestConstants等接口來完成。
項目管理器(project manager,PM)是用于統(tǒng)一組織、顯示和保存VFB組件的視圖,它的主要功能分為以下3個部分:①提供VFB項目文件的樹形結(jié)構(gòu)化解析,組織各個組件;②將配置信息序列化存儲到VFB項目文件(項目中自定義的vad文件)中,并將vad文件和符合AUTOSAR標(biāo)準(zhǔn)的xml(arxml)文件進(jìn)行信息同步;③提供拖放(drag and drop,Dnd)支持,為編輯器提供設(shè)計幫助。
PM的實現(xiàn)遵循Eclipse Common Navigator Framework(CNF)規(guī)范,視圖由org.eclipse.ui.navigator.CommonNavigator類作為主框架進(jìn)行顯示,擴展了org.eclipse.ui.navigator.viewer插件的ActionBinding、ContentBinding、Viewer和Drag Assistant這4個子項,以綁定各種不同類型元素的顯示和操作。而顯示、操作功能的具體實現(xiàn)由插件org.eclipse.ui.navigator.navigatorContent提供。
PM需要對組件進(jìn)行管理,為此專門定義了一種PM模型,它在PM中顯示為樹狀結(jié)構(gòu)的子節(jié)點,并和圖形模型進(jìn)行綁定。新建項目之后,在管理器視圖的樹形節(jié)點中會有兩個一級節(jié)點,分別顯示vad文件和arxml文件,在vad節(jié)點下有一個Package節(jié)點,用戶新建的組件都將顯示在這個Package節(jié)點之下。PM的節(jié)點組織如圖4所示。
圖4 PM節(jié)點組織
其中Package、Application Software Component和Composition這3種組件可以在PM中直接創(chuàng)建,其他類型的組件需要在圖形編輯器中進(jìn)行創(chuàng)建。
組件設(shè)計工具在編輯器中創(chuàng)建的是GEF模型,在資源管理器中創(chuàng)建的是PM模型,而需要輸出的目標(biāo)文件是arxml文件,這就需要通過Artop工具平臺提供的函數(shù)生成AUTOSAR模型。
這3種模型是相互獨立的,為了達(dá)到模型之間數(shù)據(jù)同步的目的(如當(dāng)在PM中刪除一個構(gòu)件時,編輯器對應(yīng)的GEF模型和arxml文件中對應(yīng)的AUTOSAR模型都要同時刪除),需要將這3種模型進(jìn)行綁定。
在這3種模型中,PM模型是核心,它負(fù)責(zé)將另外兩種模型串聯(lián)起來。在創(chuàng)建一個PM模型的時候,會在構(gòu)造函數(shù)中調(diào)用Artop中提供的Autosar3x Factory類創(chuàng)建對應(yīng)的AUTOSAR模型,然后將PM模型中的ARObject變量賦值成該AUTOSAR模型完成綁定操作。此時PM模型對應(yīng)的GEF模型還沒有生成,而是在打開組件對應(yīng)的編輯器時才進(jìn)行創(chuàng)建和綁定的工作。這時會把GEF模型賦值為PM模型中的一個可序列化(Serializable)變量,在完成綁定操作的同時,也可以在保存時對GEF模型進(jìn)行序列化操作,將模型的所有屬性(包括位置、大小、顏色等)保存在vad文件中。
本文在2.2小節(jié)中提到,只有Package、Application Software Component和Composition這3種組件可以在PM中直接創(chuàng)建,所以在新建Port或Interface等組件時,會在生成GEF模型的同時去創(chuàng)建對應(yīng)的PM模型,之后的綁定過程已在上一段進(jìn)行了描述,這里就不再贅述。
每一個AUTOSAR組件都有自身的屬性,包括名字、時間戳、UUID等。每一個構(gòu)件都有一個內(nèi)部行為,內(nèi)部行為用來描述包含它的構(gòu)件采用的通信機制。
組件屬性顯示模塊支持構(gòu)件、構(gòu)件集合、端口、接口等組件的基本屬性顯示及編輯功能,內(nèi)部行為配置模塊支持以列表的形式編輯構(gòu)件的內(nèi)部行為。
為了實現(xiàn)組件屬性顯示模塊,首先需要通過Eclipse插件開發(fā)中的org.eclipse.ui.views擴展點來實現(xiàn)各組件基本屬性列表的框架。Eclipse中屬性視圖PropertySheet的實現(xiàn)涉及到3個接口:IPropertySourceProvider、IProperty-Source、IPropertyDescriptor。而模型對象如果要和PropertySheet進(jìn)行交互,則必須實現(xiàn)IPropertySource接口。E-clipse能夠自動地通過IPropertySourceProvider取得實現(xiàn)了IPropertySource的模型對象,并讓屬性視圖對其進(jìn)行調(diào)用。PM模型實現(xiàn)了IPropertySource接口,這樣屬性視圖就和資源管理器的樹狀結(jié)構(gòu)進(jìn)行了綁定。而在2.3節(jié)中提到PM模型和GEF模型也進(jìn)行了綁定,所以GEF模型可以通過PM模型間接綁定到屬性視圖上。完成以上的工作,屬性視圖就能顯示組件的屬性項和屬性值了。
內(nèi)部行為的編輯框架是使用基于Eclipse的SWT/JFace技術(shù)來實現(xiàn)的,通過這個編輯框架,用戶可以用列表的形式方便地創(chuàng)建和更改內(nèi)部行為包含的內(nèi)容。該框架是一個多選項頁的編輯頁面,為了實現(xiàn)多選項頁,它繼承了SWT提供的基類——FormEditor,并重載基類的addpages()方法來添加選項頁的具體內(nèi)容。由于編輯頁面的內(nèi)容很多,在部分選項頁內(nèi)還需要加入子頁面(SectionPage)。它們的關(guān)系如圖5所示。
圖6展示了構(gòu)件實例的效果,圖7展示了構(gòu)件集合實例的效果,圖8展示了內(nèi)部行為配置頁面的效果,圖9展示了資源管理器的效果。
圖5 編輯頁面組成關(guān)系
圖6 構(gòu)件實例效果
圖7 構(gòu)件集合實例效果
結(jié)合Artop平臺來實現(xiàn)面向虛擬功能總線的圖形化組件設(shè)計工具,使其具有較好的通用性和擴展性,在AUTOSAR標(biāo)準(zhǔn)不斷修訂和完善的前提下能夠快速、便捷地對工具進(jìn)行修改,可重用性高。
但是本工具僅僅是一個原型系統(tǒng),并沒有包含AUTOSAR標(biāo)準(zhǔn)中的所有組件,為了使該工具具有更廣的應(yīng)用范圍,下一步可以將組件類型進(jìn)行完善,并和硬件拓?fù)湓O(shè)計工具、網(wǎng)絡(luò)映射工具、ECU配置工具等進(jìn)行集成,形成按照AUTOSAR流程進(jìn)行軟件系統(tǒng)開發(fā)的一整套的工具鏈。
圖8 內(nèi)部行為配置頁面效果
圖9 資源管理器效果
[1]YIN Xiaofeng,LIU Wudong.AUTOSAR-A new standard of software development for automotive electronics systems[J].Journal of Xihua University(Natural Science),2010,29(2):102-10(in Chinese).[陰曉峰,劉武東.汽車電子系統(tǒng)軟件開發(fā)新標(biāo)準(zhǔn)AUTOSAR[J].西華大學(xué)學(xué)報(自然科學(xué)版),2010,29(2):102-104.]
[2]FENG Jiangbo,LIU Yajun.Code generation technology with Matlab/Simulink compliant with AUTOSAR[J].Journal of Jiamusi University(Natural Science),2011,29(6):833-837(in Chinese).[馮江波,劉亞軍.與AUTOSAR兼容的Matlab/Simulink自動代碼生成技術(shù)[J].佳木斯大學(xué)學(xué)報(自然科學(xué)版),2011,29(6):833-837.]
[3]ZHANG Peng,JIANG Hao,XU Li.Study notes for Eclipse plug-in development[M].Beijing:Electronic Industry Press,2008:528-537(in Chinese).[張鵬,姜昊,許力.Eclipse插件開發(fā)學(xué)習(xí)筆記[M].北京:電子工業(yè)出版社,2008:528-537.]
[4]LIU Xubin,WANG Liang,YAN Youpeng.Application studies on command pattern of Eclipse GEF[J].Computer Technology and Develepment,2010,20(8):100-103(in Chinese).[劉緒斌,王良,閆有朋.Eclipse GEF框架中命令模式的應(yīng)用研究[J].計算機技術(shù)與發(fā)展,2010,20(8):100-103.]
[5]HOU Ruichun,HU Qingxia,DING Xiangqian,et al.Design and implementation of business model graphics editor based on GEF[J].Modern Electronics Technique,2012,35(20):31-34(in Chinese).[侯瑞春,胡青霞,丁香乾,等.基于GEF的業(yè)務(wù)模式圖形編輯器的設(shè)計與實現(xiàn)[J].現(xiàn)代電子技術(shù),2012,35(20):31-34.]
[6]GAO Huanji.Embedded software development for vehicle electronic control system based on AUTOSAR[J].Auto Electric Parts,2010(5):11-14(in Chinese).[高煥吉.基于AUTOSAR的汽車電子控制系統(tǒng)嵌入式軟件開發(fā)[J].汽車電器,2010(5):11-14.]
[7]AUTOSAR GbR.AUTOSAR technical overview[S].AUTOSAR,2008:17-18.
[8]AUTOSAR Gb R.AUTOSAR SWS VFB[S].AUTOSAR,2008:12-29.
[9]XU Xinpeng,WANG Xiang,LU Jianghua,et al.Application component configuration based on AUTOSAR methodology[J].Computer Engineering,2010,36(18):240-242(in Chinese).[徐鑫朋,王翔,陸建華,等.基于AUTOSAR方法論的應(yīng)用組件配置[J].計算機工程,2010,36(18):240-242.]
[10]WANG Jinbo.SmartSAR SWA-design and implementation of software architecture based on Artop[D].Hangzhou:Zhejiang University,2012(in Chinese).[汪金波.SmartSAR SWA-基于Artop的汽車電子軟件架構(gòu)工具的設(shè)計與實現(xiàn)[D].杭州:浙江大學(xué),2012.]