Autosar4.4:通用架构模板 - 元建模模式与模型转换(2/3)

元模型化模式是参数化的结构,当将其应用于实际参数时,会产生规则的,非参数化的结构。 结构只是由关联和聚合关联的元类的集合。 模式的好处在于,它们允许重复使用重复结构,而无需重复其定义。 本章介绍元建模模式的概念,以及它们在AUTOSAR元模型中的使用和表示法。 另一个优点是,保留了元模型的原始结构,并且不会因实现细节而模糊。

Tips:此章节运用泛型编程思想,不懂先去百度后再来看。

 

本章内容有

4:元模型中应用的模型转换

4.1:实施原始型

4.2:实施 Associations 关系作为 References关联(上)

 

 

 

 

4、元模型中应用的模型转换

模型转换模式机制在MetaModel中应用于

• 变体处理(第7章)

• 其他特定目的,例如参考资料

4.1实施《primitive》

本节说明了原语的实现,即使尚未将其(R4.0)实现为真正的模型转换。该方法在模式生成器中实现。

primitive的模型转换

元类“原始”转换为以下元素。

1.用“ _simple”后缀名的另一个primitive。

对于xml,此原语会在生成的模式中产生简单类型,并指定实现细节,例如模式和构面。 此元类用于标记为xml.attribute = true的属性,还用作标记为xml.roleElement = false,xml.roleWrapperElement = false,
xml.typeElement = false,xml.typeWrapperElement = false。

2.具有相同名称的元类。

与所有其他元类一样,此元类继承自《 atpObject》。 因此,除非使用xml.attribute = true进行标记,否则元模型中的UML属性最终将实现为该元类的聚合。

实现基元的模式

 

4.2 实施 Associations 关系作为 References关联

本节说明了关联的实现,即使尚未将其(R4.0)实现为真正的模型转换也是如此。

建立参考

元类之间的引用表示为关联。 引用的元类派生自Referrable,主要是可识别的。 因此,它们定义了一个shortName,在其名称空间内应该是唯一的。 因此,引用(元模型中的关联)由

1.通过指定区分大小写的shortName(绝对或相对)路径

2.引用的目标类型

3.如果是相对引用,则引用库的区分大小写的名称

名称空间层次结构是在元模型中通过以下方式的复合关联来定义的:

从Identifiable派生的类。 每个Identifiable是其直接或间接关联(复合关联)类的名称空间。

类型引用的表示

注意,对于用《 IsOfType》定型的关联,引用类的角色是 theRoleTref。

关联模型转换

关联被转换为具有属性dest的匿名元类的聚合。 在根据【基元模型转换】进行转换后,该元类从Ref继承。 因此,Ref提供了一个值,该值表示到所引用对象的shortName路径。 下图说明了等效模式。

实现引用的模式

 

4.2.1 绝对短名称路径

相对的短名称路径

相对参考路径的开头不是字符“ /”。 通过在相对shortName-path前面添加ReferenceBase的适当shortName-path,可以将相对参考路径转换为绝对路径。

识别相对引用的ReferenceBase

适当的ReferenceBase通过以下方式标识

•属性库。 这表示从引用中可见的第一个包含ARPackage(从引用到模型根的第一个祖先包)

其中referenceBase的shortLabel等于基数。 换句话说:随着程序包的嵌套,将自底向上搜索相应的referenceBase。

•或者,最里面的程序包具有一个referenceBase,默认情况下设置为“ true”。

命名参考库应可用

如果存在相对引用,则其中一个包含包的应具有referenceBase,且shortLabel等于引用的基数。

局部模型中的ReferenceBase

注意ReferenceBase是《 atpSplitable》。 因此,有必要在整个模型中搜索适当的ReferenceBase。 换句话说,应该在所有局部模型中搜索ReferenceBase。

下面展示了相对引用的最简单形式。 在这种情况下,包装内的相对引用应独立于包装名称。 请注意标注为xml注释的标注<!-1->

1. <!-1->:这是相对引用的基础。 请注意,isDefault表示它是默认值。

2. <!-2->:这是一个相对参考。 由于未指定base属性,因此使用<!-1->中指定的默认基数来解析引用。

<?xml version="1.0"?>
<AUTOSAR xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http:
//autosar.org/schema/r4.0" xsi:schemaLocation="http://autosar.org/schema
/r4.0 AUTOSAR_4-1-3.xsd">
<AR-PACKAGES>
<AR-PACKAGE>
<SHORT-NAME>MyComponent</SHORT-NAME>
<REFERENCE-BASES>
<!-- 1 -->
<REFERENCE-BASE>
<SHORT-LABEL>default</SHORT-LABEL>
<IS-DEFAULT>true</IS-DEFAULT>
<IS-GLOBAL>false</IS-GLOBAL>
<BASE-IS-THIS-PACKAGE>false</BASE-IS-THIS-PACKAGE>
<PACKAGE-REF DEST="AR-PACKAGE">/MyComponent</PACKAGE-REF>
</REFERENCE-BASE>
</REFERENCE-BASES>
<ELEMENTS>
<SENDER-RECEIVER-INTERFACE>
<SHORT-NAME>MyInterface</SHORT-NAME>
<DATA-ELEMENTS>
<VARIABLE-DATA-PROTOTYPE>
<SHORT-NAME>MyData</SHORT-NAME>
<CATEGORY>VALUE</CATEGORY>
</VARIABLE-DATA-PROTOTYPE>
</DATA-ELEMENTS>
</SENDER-RECEIVER-INTERFACE>
<APPLICATION-SW-COMPONENT-TYPE>
<SHORT-NAME>MyComponent</SHORT-NAME>
<PORTS>
<P-PORT-PROTOTYPE>
<SHORT-NAME>MyPort</SHORT-NAME>
<!-- 2 -->
<!-- /MyComponent/MyInterface -->
<PROVIDED-INTERFACE-TREF DEST="SENDER-RECEIVER-INTERFACE">
MyInterface</PROVIDED-INTERFACE-TREF>
</P-PORT-PROTOTYPE>
</PORTS>
</APPLICATION-SW-COMPONENT-TYPE>
</ELEMENTS>
</AR-PACKAGE>
</AR-PACKAGES>
</AUTOSAR>

下面说明了可以有多个参考库。 在这种情况下,除了前面的示例外,CompuMethods还提供了另一个基础,因为它们位于单独的程序包中。

1. <!-1.1->:这是相对引用的另一个基础。 请注意,缺少isDefault属性。 与指定为false相同。

2. <!-2.1->:这是一个相对参考。 属性base表示相对引用应使用具有shortLabel compum(在<!-1.1->中定义的)的引用。相应的绝对引用为/ CompuMethods / MyCompu。

<?xml version="1.0"?>
<AUTOSAR xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http:
//autosar.org/schema/r4.0" xsi:schemaLocation="http://autosar.org/schema
/r4.0 AUTOSAR_4-1-3.xsd">
<AR-PACKAGES>
<AR-PACKAGE>
<SHORT-NAME>MyComponent</SHORT-NAME>
<REFERENCE-BASES>
<!-- 1 -->
<REFERENCE-BASE>
<SHORT-LABEL>default</SHORT-LABEL>
<IS-DEFAULT>true</IS-DEFAULT>
<IS-GLOBAL>false</IS-GLOBAL>
<BASE-IS-THIS-PACKAGE>false</BASE-IS-THIS-PACKAGE>
<PACKAGE-REF DEST="AR-PACKAGE">/MyComponent</PACKAGE-REF>
</REFERENCE-BASE>
<REFERENCE-BASE>
<SHORT-LABEL>compum</SHORT-LABEL>
<IS-DEFAULT>false</IS-DEFAULT>
<IS-GLOBAL>false</IS-GLOBAL>
<BASE-IS-THIS-PACKAGE>false</BASE-IS-THIS-PACKAGE>
<!-- 1.1 -->
<PACKAGE-REF DEST="AR-PACKAGE">/CompuMethods</PACKAGE-REF>
</REFERENCE-BASE>
</REFERENCE-BASES>
<ELEMENTS>
<SENDER-RECEIVER-INTERFACE>
<SHORT-NAME>MyInterface</SHORT-NAME>
<DATA-ELEMENTS>
<VARIABLE-DATA-PROTOTYPE>
<SHORT-NAME>MyData</SHORT-NAME>
<CATEGORY>VALUE</CATEGORY>
<SW-DATA-DEF-PROPS>
<SW-DATA-DEF-PROPS-VARIANTS>
<SW-DATA-DEF-PROPS-CONDITIONAL>
<!-- 2.1 -->
<!-- /CompuMethods/MyCompu -->
<COMPU-METHOD-REF DEST="COMPU-METHOD" BASE="compum">
MyCompu</COMPU-METHOD-REF>
</SW-DATA-DEF-PROPS-CONDITIONAL>
</SW-DATA-DEF-PROPS-VARIANTS>
</SW-DATA-DEF-PROPS>
</VARIABLE-DATA-PROTOTYPE>
</DATA-ELEMENTS>
</SENDER-RECEIVER-INTERFACE>
<APPLICATION-SW-COMPONENT-TYPE>
<SHORT-NAME>MyComponent</SHORT-NAME>
<PORTS>
<P-PORT-PROTOTYPE>
<SHORT-NAME>MyPort</SHORT-NAME>
<!-- 2 -->
<!-- /MyComponent/MyInterface -->
<PROVIDED-INTERFACE-TREF DEST="SENDER-RECEIVER-INTERFACE">
MyInterface</PROVIDED-INTERFACE-TREF>
</P-PORT-PROTOTYPE>
</PORTS>
</APPLICATION-SW-COMPONENT-TYPE>
</ELEMENTS>
</AR-PACKAGE>
<AR-PACKAGE>
<SHORT-NAME>CompuMethods</SHORT-NAME>
<ELEMENTS>
<COMPU-METHOD>
<SHORT-NAME>MyCompu</SHORT-NAME>
<CATEGORY>RATFUNC</CATEGORY>
</COMPU-METHOD>
</ELEMENTS>
</AR-PACKAGE>
</AR-PACKAGES>
</AUTOSAR>

 

 

 

 

 

 

 

热门文章

暂无图片
编程学习 ·

Nginx系列(7):Nginx高并发初探

目录1、场景设置 — NGINX进程模型二、为什么框架如此重要?三、NGINX是如何运作的呢?四、NGINX内部工作进程五、NGINX是一个真正的大师六、更新配置文件升级NGINX七、结语原文出处:https://www.cnblogs.com/dz11/p/10215089.htmlNGINX 在网络应用中表现超群,在于其独特的设…
暂无图片
编程学习 ·

GPS卫星位置计算(卫星位置计算小程序)

目录一、准备以及结果图二、数据三、计算四、全部代码附:一、准备以及结果图软件:eclipse(2020-6版本)带有WindowBuilder插件编程语言:Java结果图:二、数据t0e星历的基准时间单位:秒a_sqrt轨道半长轴的平方根单位:米e1轨道离心率单位:无量纲i0倾角(在 t0e时)单位:r…
暂无图片
编程学习 ·

Web自动化测试:webdriver所有定位方式详解

在之前章节,我们已接触了webdriver中的8种基础定位方法,但是当我们在pycharm中打出:driver.find时,代码提示中其实是有18个被选项的,这里我们来讲讲剩余这10种定位方法都是什么,以及它们之间存在的关系。 首先有两个万能定位方法: find_element()寻找符合条件的第一个元…
暂无图片
编程学习 ·

Less 基础

1. 维护CSS的弊端 CSS是一门非程序式语言,没有变量、函数、SCOPE(作用域)等概念。CSS需要书写大量看似没有逻辑的代码,CSS冗余度是比较高的。 不方便维护及扩展,不利于复用。 CSS没有很好的计算能力 非前端开发工程师来讲,往往会因为缺少CSS编写经验而很难写出组织良好且易…
暂无图片
编程学习 ·

MapReduce原理及编程

文章目录一.关于MapReduce(一)什么是MapReduce?(二) MapReduce的设计思想(三) MapReduce特点(四)MapReduce实现WordCount(五)MapReduce执行过程(六)Key&Value类型二.MapReduce编程模型(一)InputFormat接口(二)Mapper类(三)Combiner类(四)Partitioner类(五)Reducer类(六)Ou…
暂无图片
编程学习 ·

一文详解 Ansible 的自动化运维

一、Ansible 概述 Ansible 是近年来越来越火的一款开源运维自动化工具,通过Ansible可以实现运维自动化,提高运维工程师的工作效率,减少人为失误。 Ansible 通过本身集成的非常丰富的模块可以实现各种管理任务,其自带模块超过上千个。更为重要的是,它操作非常简单,即使小白…
暂无图片
编程学习 ·

软件测试的基本流程

软件测试的基本流程 1. 测试需求分析阶段阅读需求 理解需求 主要就是对业务的学习 分析需求点 参与需求评审会议2. 测试计划阶段主要任务就是编写测试计划 参考软件需求规格说明书 项目总体计划,内容包括测试范围(来自需求文档),进度安排,人力物力的分配,整体测试策略的制…
暂无图片
编程学习 ·

[算法]最长公共前缀

题目编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 “”。示例输入: [“flower”,“flow”,“flight”] 输出: “fl”输入: [“dog”,“racecar”,“car”] 输出: “” 解释: 输入不存在公共前缀。这是一道简单题,没什么说的 class Solut…
暂无图片
编程学习 ·

随笔 弹窗 二维码生成及图片下载

一、qrcode-vue模块该模块是用来动态生成二维码的vue模块插件,<qrcode-vue></qrcode-vue>的底层其实是一个<canvas></canvas>标签。要想使用qrcode.vue插件,需要用vue的脚手架安装这个插件安装指令npm install qrcode --save-dev,在这里我举一个例子…
暂无图片
编程学习 ·

通讯录管理系统一般包括通讯录结点信息的插入、查询、删除、更新以及通信录信息的输出等功能。而通讯录的信息一般包括编号、姓名、性别、电话以及地址等项。本题主要考查用链式结构来实现通讯录管理系统(链表)

通讯录管理 题目要求: 通讯录管理系统一般包括通讯录结点信息的插入、查询、删除、更新以及通信录信息的输出等功能。而通讯录的信息一般包括编号、姓名、性别、电话以及地址等项。本题主要考查用链式结构来实现通讯录管理系统(链表的操作)。 需求分析: 将通讯录设置为6个模…
暂无图片
编程学习 ·

企业人力资源管理项目SSH+EXTJS+MySQL整合开发源码分享

企业人力资源管理项目,是SSH+EXT+MySQL+MD5...... 功能有:会话过滤、MD5加密、文件上传、权限设置、报表统计......运行环境jdk7tomcat7mysqlIntelliJ IDEA 项目技术(必填)springstrutshibernate 项目截图运行截图关注点赞之后,私信关键字【源码】即可免费获取~
暂无图片
编程学习 ·

在centos7中使用rpm安装Mysql

在centos7中使用rpm安装Mysql 安装环境centos7-64 软件版本:MySQL-5.7.10 下载所需安装包 1、我的另一条博客可直接下载压缩包 https://download.csdn.net/download/Linhan389/12565015 2、或者去清华大学镜像站下载所用的包 https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/…
暂无图片
编程学习 ·

数据库导出到excel解决科学计数法问题

用Navicat等工具导出数据到excel的时候,身份证等超过11位的数字会自动转换成科学计数法,末尾数字变成“0000”。如何解决?解决方式:给超过11位的数字末尾添加 \t查询的时候,给相关字段添加 \tSELECT name,CONCAT(idcard,\t) from lm_reg然后再将查询结果导出到excel。如…
暂无图片
编程学习 ·

牛客习题总结21

借助别人的图……如果序列有序或者基本有序,则直接插入或者冒泡最简单无向图的顶点个数为n,则该图最多有 n(n-1)/2 条边; 有相图的顶点个数为n,则该图最多有n(n-1)条边。
暂无图片
编程学习 ·

OSPF路由协议详情和实验!带大家手把手理解OSPF的协议!还有超详细的OSPF三台路由器的实验!

文章目录前言:一、OSPF的基本概念和工作过程1、OSPF路由协议概述1.1、自治系统(AS)1.2、内部网关协议(IGP)1.3、外部网关协议(IGP)1.4、OSPF是链路状态路由协议2、OSPF工作过程2.1、建立邻居列表2.2、链路状态数据库2.3、形成路由表3、OSPF基本概念3.1、OPSF区域3.2、Ro…
暂无图片
编程学习 ·

兔(图)解之初识贪心算法

嗯,好想她呀....加油生活。 希望她好好的....剪绳子 给你一根长度为 n 的绳子,请把绳子剪成 m 段(m、n 都是整数,n>1 并且 m>1),每段绳子的长度记为 k[0],k[1],...,k[m]。请问 k[0]xk[1]x...xk[m]可能的最大乘积是多少?例如,当绳子的长度是 8 时,我们把它剪成 …
暂无图片
编程学习 ·

Oracle数据库编程中求最近200天的每周一

select distinct trunc(trunc(sysdate)-level,IW) my_datefrom dualwhere trunc() >=trunc(sysdate)-200connect by level<=200区间分割判断某个数在前十、中十、后十trunc((x-1)/10)*10+1 and trunc((x-1)/10)*10+1 0