严永嘉,晏 华,邓尧文
(电子科技大学计算机科学与工程学院,四川成都611731)
为了有效管理日趋复杂的汽车电子系统并最大限度地降低开发和维护成本,多家整车厂商和汽车电子供应商联合推出了AUTOSAR标准,由于它的设计思想是将硬件和软件的开发进行分离,使得汽车软件的开发具有更高的灵活性、更低的成本和更短的开发周期[1,2]。
经过这十年的发展,各工具供应商陆续推出了支持AUTOSAR标准的设计工具,如美国明导科技发布的车载软件开发工具Volcano Vehicle Systems Architect和IBM公司的Rational Systems Developer,它们都能进行AUTOSAR系统建模,具有基于AUTOSAR的配置和代码生成功能。另外在美国MathWorks公司开发的Matlab/Simulink中既支持单个构件的设计,也支持多个构件连接组成一个系统。反观国内的整车厂商,由于涉足汽车电子领域较晚,不仅要花高昂的费用从国外的厂商购买工具,还需要聘请国外的工程师来国内进行培训和指导。
为了发展本土的汽车电子行业,在国家的支持下,国内的高校和基础软件公司也开始进行AUTOSAR的相关研究和工具开发。本文正是参照AUTOSAR标准,采用GEF技术并结合Artop平台,开发了面向虚拟功能总线的图形化组件设计工具,它以图形的方式直观地显示组件之间的关系,以列表的形式展示组件的配置信息,并能生成符合AUTOSAR规范的描述文件。
GEF是Eclipse的一个开源项目,它基于MVC(model-view-control)架构[3],为模型提供了图形化的编辑环境。在Eclipse平台中,GEF框架常常用来创建图形编辑器和大纲视图,它是构成Eclipse应用中图形界面的重要部分。
MVC架构是GEF的基础,MVC架构中的模型、视图、控制器概念分别对应GEF中的Model、Figure和Edit-Part。GEF中模型通常是用户创建的在图形编辑器中显示的对象,它拥有自己的结构和属性。EditPart Viewer是GEF中定义的视图,它不仅是模型对应的图形元素的容器,还要提供编辑和工具提示等功能[4]。控制器是MVC架构的核心组成部分,它将模型和视图联系在一起[5],不仅要监听模型的变化,还要把用户请求的操作结果反映到视图上。GEF中的EditPart负责管理Model与Figure映射的方式以及Figure在收到请求时所产生的行为。
AUTOSAR是由全球汽车制造商、部件供应商及软硬件和电子工业等企业共同制定的标准[6]。该标准支持基于构件的汽车电子应用程序的开发,其基本思想为:应用软件通过在虚拟功能总线上连接预制的可信的构件组装而成,构件在运行时通过端口进行交互[7]。
为了实现可重用的目标,AUTOSAR软件的开发是与底层硬件独立的,这个独立性由虚拟功能总线(virtual function bus,VFB)实现。VFB意味着一种虚拟的硬件和一种独立的系统集成,它模拟了真实的通信总线,并通过已定义好的接口进行通信。下面对VFB中的用到的几种组件模型进行简单的介绍。
构建系统最重要的元素就是构件,它是电子控制单元上完成某一功能的最小代码集合。一个构件有预先定义好的端口,并通过这些端口和其他构件进行通信。构件集合在本质上也是构件的一种,它不具有原子性,在构件集合中可以包含其他构件或者构件集合[8]。它自身可以配置端口来进行通信,但它没有具体的实现代码和内部行为。端口是一个构件和其他构件的交互点。一个构件的端口只能是供型端口或者需型端口[9],而端口的类型由则由它所配置的接口决定。在接口中定义了提供或者需求这个接口的端口所要传输的数据或者可以完成的操作,构件的每个端口都要和一个接口进行关联。在设计AUTOSAR系统的时候,端口之间的通信需要连接器来完成。连接器存在于软件构件的外部,并且不能单独存在。它需要连接到两个端口上,而且这两个端口必须由同一个接口实例化而来。
虚拟功能总线,如图1所示。
图1 虚拟功能总线
Artop(AUTOSAR tool platform)是AUTOSAR组织的核心成员为了推动采用该标准的工具链的发展而推出的开放性平台[10]。它基于Eclipse技术构建而成,为不同的工具供应商开发的设计工具实现了公共的基础功能,这样就避免了供应商在非竞争性的基础平台上进行重复开发,为AUTOSAR软件开发的各阶段提供了很好的测试平台。
本文研究的图形化组件设计工具基于Eclipse开发,包含3个主要的功能模块:图形编辑模块、资源管理模块和属性配置模块。图形编辑模块负责组件模型的显示。资源管理模块用于统一组织、显示和保存VFB组件。属性配置模块有两个功能,一是负责组件的属性信息的显示和修改,二是配置构件的内部行为。图2展示了工具的整体架构。
图2 系统架构设计框架
在图形化组件设计工具中,图形编辑器负责模型的显示工作。其中模型要和标准中定义的VFB组件模型一一对应,构件、构件集合、端口、接口都可以采用GEF中的矩形模型来表示,而连接器可以使用连接模型来表示。其中矩形模型之间是父子兄弟的关系,连接模型则是起点和终点的关系。由于汽车系统的设计是以构件和构件集合为基础进行开发的,并且构件集合不具有构件的原子性,所以需要设计两个编辑器来完成对这两种组件的编辑功能。
图形编辑器是严格按照Eclipse的MVC模式来设计的,它分为五个子模块,分别是控制器模块、策略模块、命令模块、模型模块和图形模块。控制器模块将视图和图形模型进行绑定;策略模块提供各控制器的操作方法约束;命令模块提供用户界面和控制器的交互机制;模型模块定义了编辑器所需的图形模型;图形模块显示模型的绘制形式。它们之间的关系如图3所示。
图3 图形编辑器子模块的关系
组件模型通过继承Property AwareObject类(项目中自定义的模型基类)来实现。图形编辑视图的实现需要继承GEF的org.eclipse.gef.ui.parts.ScrollingGraphical Viewer。而图形编辑所支持的鼠标操作等绘图命令通过继承org.eclipse.gef.editparts.AbstractEditPart,并通过实现org.eclipse.gef.EditPart,org.eclipse.core.runtime.IAdaptable,org.eclipse.gef.RequestConstants等接口来完成。
项目管理器(project manager,PM)是用于统一组织、显示和保存VFB组件的视图,它的主要功能分为以下3个部分:①提供VFB项目文件的树形结构化解析,组织各个组件;②将配置信息序列化存储到VFB项目文件(项目中自定义的vad文件)中,并将vad文件和符合AUTOSAR标准的xml(arxml)文件进行信息同步;③提供拖放(drag and drop,Dnd)支持,为编辑器提供设计帮助。
PM的实现遵循Eclipse Common Navigator Framework(CNF)规范,视图由org.eclipse.ui.navigator.CommonNavigator类作为主框架进行显示,扩展了org.eclipse.ui.navigator.viewer插件的ActionBinding、ContentBinding、Viewer和Drag Assistant这4个子项,以绑定各种不同类型元素的显示和操作。而显示、操作功能的具体实现由插件org.eclipse.ui.navigator.navigatorContent提供。
PM需要对组件进行管理,为此专门定义了一种PM模型,它在PM中显示为树状结构的子节点,并和图形模型进行绑定。新建项目之后,在管理器视图的树形节点中会有两个一级节点,分别显示vad文件和arxml文件,在vad节点下有一个Package节点,用户新建的组件都将显示在这个Package节点之下。PM的节点组织如图4所示。
图4 PM节点组织
其中Package、Application Software Component和Composition这3种组件可以在PM中直接创建,其他类型的组件需要在图形编辑器中进行创建。
组件设计工具在编辑器中创建的是GEF模型,在资源管理器中创建的是PM模型,而需要输出的目标文件是arxml文件,这就需要通过Artop工具平台提供的函数生成AUTOSAR模型。
这3种模型是相互独立的,为了达到模型之间数据同步的目的(如当在PM中删除一个构件时,编辑器对应的GEF模型和arxml文件中对应的AUTOSAR模型都要同时删除),需要将这3种模型进行绑定。
在这3种模型中,PM模型是核心,它负责将另外两种模型串联起来。在创建一个PM模型的时候,会在构造函数中调用Artop中提供的Autosar3x Factory类创建对应的AUTOSAR模型,然后将PM模型中的ARObject变量赋值成该AUTOSAR模型完成绑定操作。此时PM模型对应的GEF模型还没有生成,而是在打开组件对应的编辑器时才进行创建和绑定的工作。这时会把GEF模型赋值为PM模型中的一个可序列化(Serializable)变量,在完成绑定操作的同时,也可以在保存时对GEF模型进行序列化操作,将模型的所有属性(包括位置、大小、颜色等)保存在vad文件中。
本文在2.2小节中提到,只有Package、Application Software Component和Composition这3种组件可以在PM中直接创建,所以在新建Port或Interface等组件时,会在生成GEF模型的同时去创建对应的PM模型,之后的绑定过程已在上一段进行了描述,这里就不再赘述。
每一个AUTOSAR组件都有自身的属性,包括名字、时间戳、UUID等。每一个构件都有一个内部行为,内部行为用来描述包含它的构件采用的通信机制。
组件属性显示模块支持构件、构件集合、端口、接口等组件的基本属性显示及编辑功能,内部行为配置模块支持以列表的形式编辑构件的内部行为。
为了实现组件属性显示模块,首先需要通过Eclipse插件开发中的org.eclipse.ui.views扩展点来实现各组件基本属性列表的框架。Eclipse中属性视图PropertySheet的实现涉及到3个接口:IPropertySourceProvider、IProperty-Source、IPropertyDescriptor。而模型对象如果要和PropertySheet进行交互,则必须实现IPropertySource接口。E-clipse能够自动地通过IPropertySourceProvider取得实现了IPropertySource的模型对象,并让属性视图对其进行调用。PM模型实现了IPropertySource接口,这样属性视图就和资源管理器的树状结构进行了绑定。而在2.3节中提到PM模型和GEF模型也进行了绑定,所以GEF模型可以通过PM模型间接绑定到属性视图上。完成以上的工作,属性视图就能显示组件的属性项和属性值了。
内部行为的编辑框架是使用基于Eclipse的SWT/JFace技术来实现的,通过这个编辑框架,用户可以用列表的形式方便地创建和更改内部行为包含的内容。该框架是一个多选项页的编辑页面,为了实现多选项页,它继承了SWT提供的基类——FormEditor,并重载基类的addpages()方法来添加选项页的具体内容。由于编辑页面的内容很多,在部分选项页内还需要加入子页面(SectionPage)。它们的关系如图5所示。
图6展示了构件实例的效果,图7展示了构件集合实例的效果,图8展示了内部行为配置页面的效果,图9展示了资源管理器的效果。
图5 编辑页面组成关系
图6 构件实例效果
图7 构件集合实例效果
结合Artop平台来实现面向虚拟功能总线的图形化组件设计工具,使其具有较好的通用性和扩展性,在AUTOSAR标准不断修订和完善的前提下能够快速、便捷地对工具进行修改,可重用性高。
但是本工具仅仅是一个原型系统,并没有包含AUTOSAR标准中的所有组件,为了使该工具具有更广的应用范围,下一步可以将组件类型进行完善,并和硬件拓扑设计工具、网络映射工具、ECU配置工具等进行集成,形成按照AUTOSAR流程进行软件系统开发的一整套的工具链。
图8 内部行为配置页面效果
图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).[阴晓峰,刘武东.汽车电子系统软件开发新标准AUTOSAR[J].西华大学学报(自然科学版),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自动代码生成技术[J].佳木斯大学学报(自然科学版),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插件开发学习笔记[M].北京:电子工业出版社,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框架中命令模式的应用研究[J].计算机技术与发展,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的业务模式图形编辑器的设计与实现[J].现代电子技术,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的汽车电子控制系统嵌入式软件开发[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方法论的应用组件配置[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的汽车电子软件架构工具的设计与实现[D].杭州:浙江大学,2012.]