全部学习汇总: GitHub - GreyZhang/hack_autosar: learning autosar documents, aha, very hard!

       继续学习AUTOSAR,看一下AUTOSAR的文档,开始一个新的章节。

883_AUTOSAR_TPS_GenericStructureTemplate30_评估求值的变体1_用例

       7.7 评估变体

       7.7.1 动机

       变体处理并没有以对变体发生位置的描述(即我们在本章前几节中描述的模式)的描述结束。 很多时候,这种描述意味着大量的变体,但实际上只使用了其中的一个子集。

     这可能是因为该软件旨在支持比某个特定 OEM 的选项范围更广的选项。 但由于供应商有多个 OEM 作为客户,他可能会设计软件以满足所有变体。 运送给 OEM 的产品可能仅包含其特定变体的工件,或者至少仅针对这些变体进行了认证。

       这些变化由系统常数值集描述。 因此,需要描述系统常数值的哪些组合是有效的。 这为原始设备制造商和供应商以标准化方式交换有关此主题的信息提供了基础。

883_AUTOSAR_TPS_GenericStructureTemplate30_评估求值的变体1_it技术_02

883_AUTOSAR_TPS_GenericStructureTemplate30_评估求值的变体1_解析器_03

       表 7.22 举例说明了我们有四个系统常数(涡轮增压、自动变速箱、大灯和天窗),它们可以假定为整数值。

       在此示例中,评估了五个变体并命名为 Basic、Economy、Senior、Sportive、Junior。

Basic、Economy、Senior、Sportive、Junior 被称为预定义变体。 每个预定义的变量都是系统常数值的组合。 换句话说,PredefinedVariant 是上表中的一列,代表所有评估的变体。

评估结果由 EvaluatedVariantSet 中的属性批准状态表示。 对应于上面的示例,粗体列可以由 EvaluatedVariantSet 表示,其中批准状态设置为“批准”,如表 7.23 所示。

       此外,让我们假设供应商能够提供所有五种组合(内部),但虚构的 OEM 只对购买经济型和高级型感兴趣,如表 7.22 中的粗体列所示。

       在这种情况下,在 OEM 和供应商之间交换的表将仅包含两列(预定义的变体)Economy 和 Senior。

       表 7.23 显示了 OEM 和供应商之间交换的表格。 该表也是第 7.7.5 节中 XML 示例的基础。

883_AUTOSAR_TPS_GenericStructureTemplate30_评估求值的变体1_解析器_04

       7.7.2.1 示例之外的信息

       评估变体的概念还有四个方面未在上述示例中显示:

       1. 评估变体可以指表中批准状态适用的特定组件(或其他元素).

       2. 预定义的变体不仅可以为系统常量定义值,还可以为 PostBuild 变体标准定义值。

       3. 表中的列——甚至子列——可以被其他表重复使用。 这是通过引用而不是聚合来实现表来完成的。 如果评估变体表的数据被重用,或者来自不同的来源,这两个功能都会很有帮助。

       4. 评估的变体可能具有进一步详细说明表格含义的批准状态。 评估的变体可能被“接受”,在这种情况下,该表包含已知有效的预定义变体,或者它可能被“拒绝”,在这种情况下,预定义变体已知不起作用。

       5. 一个 PredefinedVariant 可以包含其他 PredefinedVariants 与一个包含的变体关联。

883_AUTOSAR_TPS_GenericStructureTemplate30_评估求值的变体1_lua_05

       7.7.2.2 示例中涵盖的用例

       上面的示例涵盖以下用例:

       • 集成商可以使用评估变体表来检查某个非变体系统(即已解析变体的系统)是否基于 预定义的变体。

       • 系统设计人员可以导入预配置设置以构建特定变体。

       • 组件提供者可以使用此机制向组件用户提供一组有效的变体。 这不需要是整套有效的变体; 例如,用户可能仅有权查看(即获取有关)某个子集的信息。

883_AUTOSAR_TPS_GenericStructureTemplate30_评估求值的变体1_lua_06

       7.7.3 说明

       评估变体的目的

       EvaluatedVariantSet 提供了一种方法来描述特定产品变体及其相对于特定 CollectableElement 集的接受状态(接受/拒绝)。 这允许说明特定元素是否被接受/拒绝用于给定变体。

883_AUTOSAR_TPS_GenericStructureTemplate30_评估求值的变体1_解析器_07

883_AUTOSAR_TPS_GenericStructureTemplate30_评估求值的变体1_用例_08

       表 7.22 和 7.23 转换为图 7.13 如下:

       EvaluatedVariantSet

       整个表由类 EvaluatedVariantSet 表示。  EvaluatedVariantSet 是一个 ARElement,所以它有自己的 shortName,也就是表的名字。

       使用 EvaluatedVariantSet 为不同方面建立多重有效性

       可以有多个 EvaluatedVariantSet。 如果有几个这样的集合,每个集合都建立一个特定方面的有效性。 个别方面可以由 shortName 解决。

       例如,单元测试可能会使用它们自己专门的 EvaluatedVariantSet。单个集合可以由 shortName 寻址。

883_AUTOSAR_TPS_GenericStructureTemplate30_评估求值的变体1_autosar_09

       PredefinedVariant

       EvaluatedVariantSet 包含许多 PredefinedVariants。 每个 PredefinedVariant 及其包含的变体都是表中的一列。 列的名称是 PredefinedVariant 的 shortName。

       预定义变体的定义

       PredefinedVariant 将特定变体表示为由 SwSystemconstValue 和 PostBuildVariantCriterionValue 分别表示的变体选择器设置的给定组合。

       使用适用于 ECU 配置的 SwSystemconstantValueSets 的预定义变体的选择由ECUC 变化解析器完成(请参阅ECU 配置中的3.3.3 变化解析器描述)。

       [15] 中描述了使用 PostBuildVariantCriterionValueSets 处理 PredefinedVariants(参见 [SWS_Rte_06638])。

883_AUTOSAR_TPS_GenericStructureTemplate30_评估求值的变体1_用例_10

       SwSystemconstantValueSet

       PredefinedVariant 包含许多 SwSystemconstantValueSet 对象。 在简单的情况下,只有一个这样的对象,它代表列的条目。 更准确地说,PredefinedVariant 表示包含标题的列,而 SwSystemconstantValueSet 表示标题下方的所有内容。

       来自不同来源的 SwSystemConstantValueSets

       还可以将列的条目分布在多个 SwSystemconstantValueSet 对象上。 使用多个 SwSystemconstantValueSet 的原因是允许预定义的变体由来自不同来源的系统常量分配组成。

       为了保持图 7.22 中绘制的图片,每一列都由几个 SwSystemconstantValueSet 组成,它们的内容被连接起来。

       PredefinedVariants 需要一致

       如果一个 PredefinedVariant 加上它所包含的 Variants 引用了多个 SwSystemconstantValueSet,则特定 SwSystemconst 的 SwSystemconstValues 中的所有值属性都必须相同。

       通过约束 [constr_2519] 积极避免矛盾的值分配。

       这部分看了模板中变体评估或者求解部分的动机以及部分例子,在示例方面给出的描述并不完善,在接下来的学习中还需要进一步补充。