1. AUTOSAR简介
AUTOSAR,全称为Automotive Open System
Architecture,即汽车开放系统架构,它是由全球各家汽车制造商、零部件供应商以及各种研究、服务机构共同参与的一种汽车电子系统的合作开发框架,并建立了一个开放的汽车控制器(ECU)标准软件架构。
AUTOSAR 层次框架把软件分为三层:基础层,中间层和应用层,如下图所示:
应用层:面向用户的功能需求提供应用组件。
中间层:提供支持应用组件的服务和通信机制。
基础层(BSW):封装各种驱动为基础服务。
AUTOSAR为基础层和中间层定义了功能和相关的接口,并为应用层组件提供的接口规范和运行的环境支持,如下是AUTOSAR软件架构定义的接口规范:
基于AUTOSAR架构,可以让系统设计和软件的开发过程更易于分工协作,如下是AUTOSAR希望达到的工作流程:
整车企业定义系统架构,把系统划分为子系统和组件,定义子系统和应用组件的功能和接口。
中间层屏蔽掉底层驱动的差异,应用组件的接口主要关注功能,和RTE的映射可以通过配置完成。
底层技术厂家按照BSW的规范提供BSW,平台厂家通过RTE规范提供VFS的实现。
这样上层应用厂家就可以只关注系统功能定义和应用组件设计,然后把应用组件之间的通信通过RTE的配置对接到BSW,实现应用和驱动的隔离,能够快速的构建应用。
如下是基于AUTOSAR的软件开发过程
在基于AUTOSAR的系统设计和软件开发过程中,模型起到非常重要的作用。
在建模的基础上,为了支持不同整车厂和零部件厂商的工作交接,并支持从设计面向开发的代码生成。AUTOSAR还定义了对
能够描述模型、组件、接口标准描述ARXML,这样就需要在工作中能把模型转化为ARXM L文件,如下图所示:
2. EA对 AUTOSAR建模的支持
AUTOSAR的实现需要的支持:
建模
仿真
生成ARXML
生成对接BSW和RTE的实现代码。
目前EA可以支持:
建模
仿真
生成ARXML
如下是建模方面需要支持的组件和接口类型:
说明如下:
- 软件按照应用功能划分为软件组件(SWC)
- 每个软件组件都有内部的运行体(Runnable)实现功能
- 软件组件之间的通信Port,分为2种类型:
- sender和Receiver(发送者和接收者,支持异步通信)
- client和server(客户端作为调用者,请求服务端的服务,主要支持同步调用)
这些通信port 分别需要相应的数据类型和函数提供实现支持。
作为汽车电子行业主流的建模工具,EA提供系统工程建模语言Sys
ML和软件工程建模语言UML支持,并提供了面向AUTOSAR软件架构的建模扩展,具体的模型框架和ARXML生成的支持是由
LiberLiber AUTOSAR Engineering 插件完成的,下面我们就介绍一下这个AUTOSAR插件。
3. AUTOSAR Engineering概览
AUTOSAR Engineering是EA的AUTOSAR插件,支持:
AUTOSAR 数据类型定义
AUTOSAR数据建模
AUTOSAR组件和端口建模
AUTOSAR行为建模
AUTOSAR逻辑架构建模
生成AUTOSAR 组件为ARXML文件
导入ARXML文件为AUTOSAR组件
如下是一个AUTOSAR Engineering的模型样例:
这个模型样例有什么呢?
各个包的内容说明如下:
包 |
内容 |
Global Model
Library |
全局模型库,包含:autosar
数据类型,端口类型定义和 视图定义。 |
Autosar DataTypes |
AUTOSAR的数据类型定义。 |
Port type Definitions |
端口类型定义,用于组件之间的通信接口建模。包括
数量类型和计量单位。 |
Viewpoint Definitions |
视点定义,提供各种模型视点:需求视点、架构视点、结构视点、行为视点。 |
各个包的内容说明如下:
包 |
内容 |
System Model |
系统模型,以座椅控制为例。 |
Requirements |
客户提出的需求。 |
Behavioral Elements |
行为元素,例如用例模型。 |
Structure Elements |
本系统的各种模型视点:需求视点、架构视点、结构分解视点、组件分配视点,行为视点,行为分配视点。 |
4. AUTOSAR Engineering模型解析
4.1 数据类型建模(Data Type Modeling)
使用 LieberLieber AUTOSAR Engineer可以为AUTOSAR模型定义不同的数据类型,这些数据类型可以被导出到ARXML
文件,支持如下的数据类型:
- 通用基本类型 (Generic Base Type)
- 数据类型(Data Type)
- 值(Value)
- 数组(Array)
- 数据结构(Data Structure)
- 端口类型定义(Port Type Definition)
一般而言,这些数据类型定义被存储在EA模型的 全局库里,对于组件接口,它也可以和AUTOSAR组件一起存储这些元素(也就是在一个结构元素的文件夹
里面,作为一个抽象层次的包的结构的一部分),读者可以快速浏览示例模型,了解如何组织这样的模型。
4.1.1 通用基本类型(Generic Base Types)
通用基本类型(Generic Base Type)用于定义基本的原始数据类型 ,例如: int,doubule
等。在ARXML中,它被生成到一个 SW-BASE-TYPE XML结构中。
例如:
4.1.2 数据类型(Data Types)
AUTOSAR的数据类型 通常被用于 指定 数值、数组和结构体,数据类型元素有一个组标签值用来定义附加的属性,在EA中,可以打开标签值窗口来访问标签值。
数值(Value)
数值(Value)采用AUTOSAR Data Type元素建模,然后设置
Category Tagged Value为"Value"。下面的图显示了一个数值的定义,数值"UInt8"
has an AUTOSAR-Usage 依赖 对 一个AUTOSAR base type来指定,这个值基于"uint8"
SW-BASE-TYPE。如下是图例:
数组(Arrays)
Arrays的建模通过把一个AUTOSAR Data Type的
Category Tagged Value 设置为 "Array"来完成,为了指定array元素有哪些数据类型,一个
AUTOSAR Data Type元素实例被嵌入到Data Type元素,Array 的大小通过嵌入的数据元素的Multiplicity属性设置被指定,下面的例子显示一个大小为8个Uint8类型元素的array,
如下是图例:
数据结构(Data Structures)
Data Structures 通过把AUTOSAR Data Type 元素的 Category
Tagged Value 设置为 "Structure"来建模,Structure元素被建模为AUTOSAR
Data元素(创建 AUTOSAR Data类型元素的实例)。
如下是图例:
说明:一个Structure元素内部可以包括多个value 元素。
如下是Structure元素的Category Tagged Value设置属性框:
4.1.3 端口类型定义(Port Type Definition)
port类型定义建模为interface元素(在AUTOSAR
Data Modeling toolbox 被提供),对于每一个AUTOSAR的Port 类型,一个对应的interface
元素被定义,不是所有的可能的port 类型都可以导出为ARXML文件,如下的图显示如何使用 AUTOSAR
Engineer定义一个 Sender-Receiver 和一个Client-Server port类型。
对于Client-Server-Interfaces使用EA功能定义Operation.
对于Sender-Receiver-Interfaces定义数据元素 然后创建Part- Association连接(具有黑色菱形)来指定数据元素是Sender-Receiver-Interface的组成部分。
如下是示例:
Interface定义1:
Interface定义2:
4.2 VFB-模型(VFB-Models)
为了创建一个具有组件的VFB模型 ,Component被建模为AUTOSAR Component Classifier的实例。
1. 使用toolbox或者从Project Browser拖动一个AUTOSAR Component
Classifier 到一个AUTOSAR Diagram 上,然后选择 Create/Paste
as Instance (AUTOSAR Component)。
2. 在属性框上设置Component的name。
3. 使用 Component的Characteristic tagged 值设置Component的特征。这里你可以选择2个不同的component
type (被AUTOSAR VFB规范定义的)。
在你的Component创建后,继续添加 Interface.
如果没有有效的Component Classifier ,使用
AUTOSAR Type Definition Diagram定义 Data Type。
4.2.1 添加接口(Adding Interfaces)
为了添加一个interface到一个component,需要使用不同的AUTOSAR Port元素(这些元素在
LieberLieber AUTOSAR Engineer toolbox 中可以找到)。在port的选项中设置name
和type(property type)。设置在一个Port的 Tagged Value中可以设置方向和一个port
是否是一个service Port :
添加链接(Adding Connections)
为了连接2个Port,使用 AUTOSAR Flow Connection连接器。你也可以使用EA的Quick
Linker连接2个port 或者在一步中创建一个新的port和一个connection(通过创建一个connector
在 一个已经存在的port 和一个component)。LieberLieber AUTOSAR Engineer
将通过自动的设置name 、port type 和 新的port的方向帮助你。
Port方向的定义(Port Direction Determination)
为了能够正确的设置port的方向,你必须添加一个 UML
Compose 或者一个 SysML Part Association 连接(具有黑色的菱形 ) 来定义你的组件的层次结构。这些将定义“这个component
是另一个元素的sub-element ” 并且工具能够设置正确的方向。如下的图显示了一个组件的从此定义的例子(分解视图)。
结果(Result)
如下的图显示了一个具有Component、interface连接(架构视图)的AUTOSAR
Diagram,在图中,“显示元素 Stereotype”的选项没有生效。
4.2.2 行为模型(Behavior Modeling)
AUTOSAR 组件的行为 被建模在一个AUTOSAR 行为图上。在创建了一个AUTOSAR 组件后,可以添加一个AUTOSAR
行为元素 作为容器用于行为建模。
1. 添加一个AUTOSAR 行为元素到你的AUTOSAR 图上。
2. 重命名元素。
3. 添加一个Part Association 连接从行为元素 到AUTOSAR组件元素来表示:行为元素是组建的一部分。
4. 在EA的行为元素上下文菜单选择 : New Diagram -> Add Diagram...,你可以添加一个AUTOSAR行为子图。
5. 在AUTOSAR的行为图上,使用Runnable和Inter-Runnable-Variables等元素建模内部行为,
Behavior -支持多个实例化
每个AUTOSAR行为元素有一个标签值 用于设置 是否元素可以备实例化多次。
Runnable-可以被并发调用
如果一个Runnable可以并发调用,你可以使用提供的标签值去设置这个特性。如果一个Runnable可以被并发调用,在顶部右上角的箭头符号会被蓝色填充,否则它不会被蓝色填充。
4.3 图的类型
AUTOSAR Engineer 提供三种不同的图的类型:
AUTOSAR Type Definition Diagram(AUTOSAR类型定义图)
AUTOSAR Diagram(AUTOSAR图)
AUTOSAR Behavior Diagram(AUTOSAR行为图)
4.3.1 创建一个AUTOSAR 工程图(Autosar
Engineer diagram)
为了创建AUTOSAR 工程图,使用EA添加一个新的图。在新的图的对话框里,选择LieberLieber
Autosar Engineer technology然后选择图的类型。
4.3.2 AUTOSAR类型定义图(AUTOSAR Type
Definition Diagram)
AUTOSAR Type Definiton Diagram (ardd) 被用于定义data和interface类型。这类似于在能够创建instance前创建class。当你必须定义interface和data类型的时候使用这种图。
如下是示例:
当你打开一个AUTOSAR Type Definition
Diagram , AUTOSAR Data Modeling 工具箱自动打开。这个工具箱包含所有必须的元素和连接用于定义AUTOSAR数据和接口类型。
4.3.3 AUTOSAR 图(AUTOSAR Diagram)
所有的结构化VFB-模型 被建模为AUTOSAR Diagram。当你想要创建具有port 和内部连接的AUTOSAR
组件的结构化的VFB model 图的时候,使用这种图。
如下是图示:
当你打开一个AUTOSAR Diagram的时候,AUTOSAR
Component 和port 工具箱 自动打开。这个工具箱包含了所有必须的元素和连接来定义具有port
和内部连接的AUTOSAR Component。
4.3.4 AUTOSAR 行为图(AUTOSAR Behavior
Diagram)
AUTOSAR 行为图(arbeh)被用于建模AUTOSAR Component的行为。通常,这个图显示Runnable、
Inter-Runnable-Variables 和Triggers。
如下是示例:
当你打开一个AUTOSAR Behavior Diagram的时候,AUTOSAR
Behavior 工具箱自动打开,这个工具箱包含了所有必须的元素、连接用于定义AUTOSAR 组件的内部行为。
5. 在EA中如何建立AUTOSAR模型
5.1 EA对AUTOSAR建模支持的特性(Feature)
EA支持如下的AUTOSAR建模特性:
通过一个 UML2的扩展支持 AUTOSAR VFB 4 建模语言 (component types,interfaces, runables, ...) 。
支持Port类型定义的用户建模,可以在一个新的连接port上设置:自动命名、类型和方向。
快速linker支持。
在一个模型库中可以进行UML和SysML混合建模。
可以集成到一个AUTOSAR工具链的ARXML导出功能。
5.1.1 EA的LieberLieber AUTOSAR
Engineer工具箱
LieberLieber AUTOSAR Engineer提供三个工具箱:
AUTOSAR Data Modeling 工具箱
AUTOSAR Components and Ports 工具箱
AUTOSAR Behavior 工具箱
这些工具箱包含创建AUTOSAR模型的元素和连接。
5.1.2 AUTOSAR Data Modeling工具箱
AUTOSAR Data Modeling 包含用于创建AUTOSAR的data 和interface
的元素。
|
名字 |
用法 |
|
AUTOSAR Base Type |
Create AUTOSAR base types (e.g. uint8, uint16
etc.). Elements of that kind are generated to
a SW-BASE-TYPE element in ARXML. |
AUTOSAR
Client Server Interface |
Defines
a Client-Server Interface. Such a Client-Server-Interface
is used as the Port-Type for a Client-Server-Port. |
AUTOSAR
Compu Method |
Defines
an AUTOSAT Compu Method. |
AUTOSAR
Data Element |
The
AUTOSAR Data Element is an instance (Property)
of an AUTOSAR Data Type. You can use this element
to model internal data attributes of AUTOSAR Data
Elements. |
AUTOSAR
Data Type |
AUTOSAR
Data Type elements are used to define AUTOSAR
data types like Values, Arrays, Structures or
Type References. You can set the type with the
element tagged values. |
AUTOSAR
Mode Switch Interface |
Defines
a Mode-Switch-Interface. This interface type is
used for a Mode Switch Port. |
AUTOSAR
NV Data Interface |
Defines
a Non-Volatile-Data-Interface. This interface
type is used for a NV Data Port. |
AUTOSAR
Parameter Interface |
Defines
a Parameter-Interface. This interface type is
used for a Parameter Port. |
AUTOSAR
Sender Receiver Interface |
Defines
a Sender-Receiver-Interface. This interface type
is used for a Sender Receiver Port. |
AUTOSAR
Trigger Interface |
Defines
a Trigger-Interface. This interface type is used
for a Trigger Port. |
Part
Association |
This
connector is used to define a is-part-of relation
between interface types and data elements, resp.
Data Types. |
QuantityKind |
Defines
a quantity kind, resp. a physical dimension according
to the SysML-standard. |
Unit |
Defines
a physical unit according to the SysML-standard. |
AUTOSAR
Usage |
This
connector is used to express dependencies between
data type element. Have a look into the section
about Data Type Modeling for details when to use
this conector. |
5.1.3 AUTOSAR Components and
Ports 工具箱
AUTOSAR Components and Ports 工具箱包含建模具有port和内部连接的AUTOSAR组件的元素。你可以设置port方向,并通过标签来标记一个port为一个service
port。
|
名字 |
用法 |
|
AUTOSAR Component |
Defines AUTOSAR Components. The component type
is set by a tagged value. |
AUTOSAR
Client Server Port |
Defines
a Client-Server-Port for a component. |
AUTOSAR
Sender Receiver Port |
Defines
a Sender-Receiver-Port for a component. |
AUTOSAR
Mode Switch Port |
Defines
a Mode-Switch-Port for a component. |
AUTOSAR
NV Data Port |
Defines
a Non-Volatile-Data-Port for a component. |
AUTOSAR
Parameter Port |
Defines
a Parameter-Port for a component. |
AUTOSAR
Trigger Port |
Defines
a Trigger-Port for a component. |
AUTOSAR
Flow Connection |
Use
this connector to connect two connected ports. |
5.1.4 AUTOSAR Behavior 工具箱
包含建模AUTOSAR组件内部行为的元素,例如:Runnables和Inter-Runnable-Variable。并不是所有的元素都导出到ARXML文件。
|
名字 |
用法 |
|
AUTOSAR Artifact |
Defines artifacts like .h and .c files in an enar
autosar model. |
AUTOSAR
Behavior |
Container
used in a AUTOSAR component to contain all behavior
elements. This element is based on the structured
Activity and you can use the EA-functionality
of the Composite Diagram to enable a double-click
navigation to the sub-diagram. |
AUTOSAR
Control Flow |
Connects
AUTOSAR Events to AUTOSAR Runnables. |
AUTOSAR
Data Element |
Currently
unused and reserved for future extensions |
AUTOSAR
Dependency |
Connector
used to express dependencies to other model elements. |
AUTOSAR
Event |
Defines
AUTOSAR element events (e.g. time events to start
a runnable) |
AUTOSAR
Inter Runnable Variable |
Defines
Inter-Runnable-Variables. |
AUTOSAR
Object Flow |
This
connection is used to connect Runnables and Inter
Runnable Variables or Component Ports and AUTOSAR
Runnable Ports. |
AUTOSAR
Runnable |
Use
this elements to define Runnables as part of the
Component Behavior. |
AUTOSAR
Runnable Port |
The
Runnable Ports define an interface of a Runnable.
They are connected by an AUTOSAR Object Flow connector
with a AUTOSAR Component port. |
AUTOSAR
Software Component Implementation |
This
element is used to represent a SW Component Implementation. |
AUTOSAR
Initialization |
This
connector is used to specify complex data type
initializations. |
5.2 如何把AUTOSAR模型导出ARXML文件
从一个AUTOSAR Engineer模型可以创建一个AUTOSAR ARXML文件,以便给其他的AUTOSAR工具使用。这有三种类型的ARXML导出形式:
选择多个Component组件导出为一个ARXML文件。
导出一个没有数据类型的Component到ARXML文件。
导出一个具有所有引用的数据类型的Component到ARXML文件。
如下是在EA中的AUTOSAR Enginee 菜单导出ARXML的界面截图:
5.2.1 选择多个Component组件导出为一个ARXML文件
1. 扩展菜单 LieberLieber AUTOSAR Engineer Export selected
components to ARXML
2. 选择要导出的Component
3. 选择的组件及其所有的引用将被导出为 ARXML
文件。
5.2.2 导出一个没有数据类型的Component到ARXML文件
导出只有一个组件(没有数据类型)到ARXML的操作方法:
在项目浏览器中选择AUTOSAR Component
1. 上下文菜单(从选择的元素)选择:Extensions → LieberLieber AUTOSAR
Engineer → Export to ARXML with all Referenced Elements
5.2.3 导出一个具有所有引用的数据类型的Component到ARXML文件
导出一个component (有所有引用数据类型)到具的ARXML文件的操作方法如下:
1. 在 项目浏览器选择AUTOSAR component元素。
2. 选择要导出的元素,选择【上下文菜单: Extensions → LieberLieber AUTOSAR
Engineer → Export to ARXML】。
如下是基于AUTOSAR模型生成的arxml文件
如果您希望了解更多信息:
下载 pdf版:
AUTOSAR 建模和ARXML文件生成(基于EA)
本文使用的建模工具为EA,可以下载试用版http://tool.uml.com.cn/ToolsEA/download.asp
作者简介:
俎涛,火龙果软件工程创始人,2001年创立了火龙果软件工程,2004年创立了IBM Rational用户组。1998年,曾作为骨干参与国家重点研究课题《面向特定领域基于组件的软件复用》,有幸比较深入的学习和使用的UML进行领域建模、提炼可复用组件和架构。在后来的研发项目中,一直采用模型进行分析设计,积累了一些心得和经验。20年来一直专注于MBSE,熟悉
UML、Sys ML、ArchiMate、BPMN、UPDM、DataModel等建模语言和规范,在以往的经历中,最大的感触是汇聚了很多精英人才的软件工程和系统工程领域居然几十年都是一种凌乱迷蒙的状态,从自己的经历所得,觉得清晰的模型,才是拨开工程迷雾的关键所在,所以不断研究和应用各种建模技术,并从自己的工程实践中提炼经验,形成对于自己可持续的方法论,例如《MBSE
从方法到实践指南》 《基于模型的三维研发管理》 《基于模型的需求管理》 《模型驱动的架构设计》
《基于模型的质量管理》 《基于模型的人员能力管理》 《iProcess过程改进方法》,目前正在作为产品经理和架构师,进行MBSE(基于模型的系统工程)平台的研发,希望建立要给基于模型的工程解决方案,后续会不断写些文章,希望能给同行一些借鉴。 |
后记
希望您读了此文后有所受益。
如果您有经验乐于分享,欢迎投稿给我们。
如果您对我们的培训、咨询和工具感兴趣:
|