全部学习汇总: GitHub - GreyZhang/hack_autosar: learning autosar documents, aha, very hard!
继续学习AUTOSAR,看一下官方的文档。

6 元建模模式和模型转换
元建模模式是一种参数化结构,当应用于实际参数时,会产生规则的非参数化结构。 结构只是由关联和聚合相关的元类的集合。 模式的好处是它们允许重复使用重复结构而无需重复它们的定义。 本章描述元建模模式的概念以及它们在 AUTOSAR 元模型中的使用和符号。 另一个优点是元模型的原始结构得以保留,不会因实现细节而变得模糊。

图 6.1 显示了该方法的快速概览。 因此,它以 AUTOSAR1 中的变体处理为例:

纯元模型
AUTOSAR 主要定义了一个元模型,表示没有注释和转换(例如,不支持变体)的通用方法。

带注释的元模型
接下来使用构造型和 UML 标记对纯元模型进行注释以描述预期的转换(例如 atpVariation 和 UML 标记(vh.latestBindingTime)。
请注意,最终只有带注释的元模型是手动维护的,并且是 AUTOSAR 可交付成果的一部分。

扩展的元模型
模型转换将带注释的元模型转换为扩展的元模型,然后用于生成模式。
扩展元模型与带注释的元模型不同,它添加了更多元素,这些元素提供了完整描述所需的所有信息,例如一个变体点。 它还引入了额外的约束,例如来支持变体点。
这些附加元素是通过将模式应用于带注释的元模型中注释的那些位置而生成的,例如 作为变体点。

为了说明,请考虑图 6.2 中的模式 VHUnboundedAggregationPattern。
它显示了一个由四个类和它们之间的一些聚合组成的参数化结构。 图中大括号 ({}) 之间显示的参数是:
• WholeClass,它是一个类。
• PartClass,这是一个聚合类。
• partRole,它是聚合类的角色。
• vh.latestBindingTime,它是枚举类型BindingTimeEnum 的值。

现在可以将此模式应用于实际参数以产生非参数化结构。 例如,通过分配实际参数
• WholeClass = SwComponentTypes
• PartClass = PortPrototype
• partRole = port
• vh.latestBindingTime = systemDesignTime
我们得到图 6.3 中的结构。 通过将相同的模式应用于不同的参数,可以获得许多不同的结构。


6.1 模式应用的表示法
抽象为模式的循环结构通常具有根据参数所扮演的角色来解释的明确语义。这种语义通常会为模式的应用提供一种直观的符号,这当然是特定于手动的模式的。
图 6.4 显示了在组件类型和端口上应用 VHUnboundedAggregationPattern 的符号。 该符号在扮演 WholeClass 和 PartClass 角色的类之间使用聚合箭头,用 atpVariation 构造型修饰。这种表示法表明类 SwComponentTypes “语义聚合”了角色端口中的类 PortPrototype,同时允许变化。 该图是模式应用的一种表示法,导致图 6.3 中的结果。

所有与变体相关的模式都使用类似的符号。 下面描述了特定的模式及其符号。 这种符号的一个主要好处是它类似于无变化聚合。 这使得可以在常规、无变化设计的“顶部”指定变化,而不是干预概念设计本身。 然而,重要的是要记住,由 atpVariation 修饰的聚合箭头(例如图 6.4 中的那个)不是真正的聚合:它们是模式应用的一种表示法(其结果包括真正的聚合)。

6.2 模式规格
转换模式的规范
模式的规范包括:
• 模式的名称
• 参数列表
• 参数化结构
• 模式应用的符号
对于无界聚合模式,上述元素都通过单个图表指定,如图 6.5 所示。


6.3 元模型中应用的模型转换
元模型中应用模型转换模式机制用于:
• 变体处理(第 7 章)
• 其他特定目的,例如参考(第 6.3 章)


6.3.1 实现原语
本节说明了原语的实现,即使它还没有 (R4.0) 实现为真正的模型转换。
原语的模型转换
原语的元类被转换为以下元素。
1. 另一个由“_simple”增强的同名原语。 对于 xml,此原语会在生成的模式中生成一个简单类型,并指定实现细节,例如模式和方面。 此元类用于标记为 xml.attribute=true 的属性,但也用作标记为 xml.roleElement=false、xml.roleWrapperElement=false、xml.typeElement=false、xml.typeWrapperElement=false 的属性的原始类型。
2.同名的元类。 与所有其他元类一样,这个元类继承自 atpObject(参见第 6.3.3 章)。 因此,元模型中的 UML 属性最终被实现为这个元类的聚合,除非用 xml.attribute=true 标记。
这部分主要看了模式应用的表示方法,以及模式的详细说明,同时引入了模型转换在元模型中的应用。后者暂且只看了一个题目的引出以及一些当前软件架构中没有做明确规定的说明。
 
 
                     
            
        













 
                    

 
                 
                    