元模型化模式是参数化的结构,当将其应用于实际参数时,会产生规则的,非参数化的结构。 结构只是由关联和聚合关联的元类的集合。 模式的好处在于,它们允许重复使用重复结构,而无需重复其定义。 本章介绍元建模模式的概念,以及它们在AUTOSAR元模型中的使用和表示法。 另一个优点是,保留了元模型的原始结构,并且不会因实现细节而模糊。
Tips:此章节运用泛型编程思想,不懂先去百度后再来看。
本章内容有
1:概述
2:模式应用的表示法
3:模式规格
简要介绍了该方法。 从而以AUTOSAR中的变量处理为例。
注意,在此上下文中,“模型”是一个概念实体,无论其表示形式如何。 从这个意义上说,XML,C和PDF等被视为“模型”的表示。 术语“模型”涉及与AUTOSAR相关的内容,而不是物理实体。
1. 纯元模型
AUTOSAR主要定义一个表示通用方法的元模型,该模型不带注释和转换(例如,不支持变体).
2. 带注释的元模型
然后使用原型和UML标签对纯元模型进行注释,以描述预期的转换(例如atpVariation和UML标签(vh.latestBindingTime))。
请注意,最终只有注释的元模型是手动维护的,并且是AUTOSAR deliveryables.c的一部分。
3. 扩展元模型
模型转换将带注释的元模型转换为扩展的元模型,然后将其用于生成模式。
扩展的元模型与注释的元模型不同,因此它添加了更多元素,这些元素提供了完整描述例如一个变化点。它还引入了其他约束,例如支持变化点。
这些附加元素是通过将模式应用于已注释的元模型中的那些已注释的位置而生成的。作为变化点。
为了说明这一点,请考虑下图中的模式VHUnboundedAggregationPattern。
它显示了一个由四个类以及它们之间的一些聚合组成的参数化结构。 图中大括号({})之间的参数为:
•WholeClass,这是一个类。
•PartClass,它是一个聚合类。
•partRole,它是聚合类的角色。
•vh.latestBindingTime,它是枚举类型BindingTimeEnum的值。
模式示例(VHUnboundedAggregationPattern)
现在可以将此模式应用于实际参数,以产生非参数化结构。 例如,通过分配实际参数
•WholeClass = SwComponentTypes
•PartClass = PortPrototype
•partRole =Port
•vh.latestBindingTime = systemDesignTime
我们得到下图中的结构。 通过将相同的图案应用于不同的参数,可以获得许多不同的结构。
模式应用结果示例
已经抽象为模式的重复结构通常具有定义明确的语义,这些语义根据参数所扮演的角色来解释。 这种语义通常会为模式的应用提供直观的注释,这当然是特定于当前模式的。
下图显示了在组件类型和端口上应用VHUnboundedAggregationPattern的符号。 该表示法在充当WholeClass和PartClass的类之间使用聚合箭头,并用《 atpVariation》构造型装饰。 这种表示法表明,SwComponentTypes类可以在角色端口中“聚合”类PortPrototype,同时允许进行变化。 该图是模式应用程序的一种表示法,它导致上图的结果
模式应用符号示例
所有与变体相关的模式都使用类似的符号。 特定模式及其符号在下面进行描述。 这种表示法的主要好处是,它类似于无变化的聚合。 这样就可以在常规的无变化设计的“顶部”指定变化,而不必干预概念设计本身。 但是,请务必记住,由“ atpVariation”修饰的聚合箭头(例如上图中的箭头)不是真实的聚合:它们是模式应用的一种表示法(其结果包括真实的聚合)。
转换模式的规范
模式的规范包括:
•模式名称
•参数清单
•参数化的结构
•模式应用程序的符号
以上元素都是通过下图所示的无界聚合模式指定的。