# AUTOSAR 特性模型交换格式 | 项目 | 内容 | |------|------| | 文档标题 | AUTOSAR Feature Model Exchange Format(AUTOSAR 特性模型交换格式) | | 文档所有者 | AUTOSAR | | 文档责任方 | AUTOSAR | | 文档标识号 | 606 | | 文档状态 | Final(最终版) | | 所属 AUTOSAR 标准 | Classic Platform(经典平台) | | 所属标准发布版本 | 4.4.0 | ## 文档变更历史 | 日期 | 发布版本 | 变更人 | 变更描述 | |------|----------|--------|----------| | 2018-10-31 | 4.4.0 | AUTOSAR Release Management | 文字编辑修改 | | 2017-12-08 | 4.3.1 | AUTOSAR Release Management | 文字编辑修改 | | 2016-11-30 | 4.3.0 | AUTOSAR Release Management | 文字编辑修改 | | 2015-07-31 | 4.2.2 | AUTOSAR Release Management | 文字编辑修改 | | 2014-10-31 | 4.2.1 | AUTOSAR Release Management | 新增 [TPS_FMDT_00064] | | 2013-10-31 | 4.1.2 | AUTOSAR Release Management | 文字编辑修改 | | 2013-03-15 | 4.1.1 | AUTOSAR Administration | 初始发布 | ## 目录 - 1 引言与功能概述 - 1.1 AUTOSAR 中的变体处理 - 1.2 特性模型的应用场景 - 1.3 特性模型示例 - 1.4 概述 - 1.5 文档约定 - [TPS_FMDT_00064] 生命周期的使用 - 1.6 需求追踪 - 2 术语 - [TPS_FMDT_00002] Feature(特性)定义 - [TPS_FMDT_00003] Feature Selection(特性选择)定义 - [TPS_FMDT_00004] Feature Model(特性模型)定义 - [TPS_FMDT_00005] Product Model(产品模型)定义 - [TPS_FMDT_00006] Product Line Model(产品线模型)定义 - [TPS_FMDT_00007] Product(产品)定义 - [TPS_FMDT_00008] Product Line(产品线)定义 - 2.1 图论术语 - 3 概述 - 3.1 特性模型 - 3.2 特性选择 - 3.3 特性映射 - 4 特性模型 - 4.1 类 FMFeatureModel - 4.1.1 引用 feature - 4.1.2 引用 root - 4.2 类 FMFeature - 4.2.1 特性名称与文档 - 4.2.2 预期绑定时间 - 4.3 特性属性 - 4.4 类 FMFeatureDecomposition - 4.4.1 约束与术语 - 4.4.2 特性分解的类别 - 4.4.3 属性 min 和 max - 4.4.4 特性模型的层次分解 - 4.4.5 为何对 FMFeature 使用引用而非聚合 - 4.5 类 FMFeatureRestriction - 4.5.1 FMFeatureRestriction 的标识与文档化 - 4.5.2 示例 - 4.6 类 FMFeatureRelation - 4.6.1 属性 category - 4.6.2 FMFeatureRelation 的标识与文档化 - 4.6.3 预定义关系 - 4.7 层次结构、限制与关系 - 5 特性选择 - 5.1 示例 - 5.2 类 FMFeatureSelection - 5.2.1 引用 feature - 5.2.2 属性 state - 5.2.3 FMAttributeValue - 5.2.4 选定绑定时间 - 5.3 类 FMFeatureSelectionSet - 5.3.1 术语与约束 - 5.3.2 关系 include - 5.4 state 与 include - 5.5 有效的特性选择 - 6 特性映射 - 6.1 示例 - 6.2 概述 - 6.3 类 FMFeatureMap - 6.4 类 FMFeatureMapElement - 6.5 与 PredefinedVariant 的关系 - 6.6 它是如何工作的 - 6.7 哪些变化点受特定 FMFeature 影响 - 7 通用概念 - 7.1 特性模型上下文中的特殊数据 - 7.2 使用 Feature 的公式 - 7.2.1 FMFormulaByFeaturesAndAttributes - 7.2.2 FMConditionByFeaturesAndAttributes - 7.2.3 FMFormulaByFeaturesAndSwSystemconsts - 7.2.4 FMConditionByFeaturesAndSwSystemconsts - 7.2.5 求值使用 Feature 和 Attribute 的表达式 - A 术语表 - B 引用的类表 - C 约束历史 ## 1 引言与功能概述 ### 1.1 AUTOSAR 中的变体处理 AUTOSAR 第 4 版增加了对变体处理(Variant Handling)的支持,相对于第 3 版的元模型,引入了两个新方面。 首先,在 AUTOSAR 模型中引入了变化点(Variation Point)。带有变化点的 AUTOSAR 模型描述了一组具有共同结构但在某些位置存在差异的 AUTOSAR 模型。通过对变化点进行绑定(即保留部分变体、丢弃其他变体),可以从这种模型中生成一个无变体的 AUTOSAR 模型。 其次,AUTOSAR 定义了一些手段来表达什么样的内容构成一个特定的变体,例如在 "economy" 变体中选择了哪些变化点,以及在 "luxury" 变体中选择了哪些变化点。这一点非常必要,因为带有变化点的 AUTOSAR 模型可能描述极其大量的变体,但实际使用的只是其中一小部分。 AUTOSAR 中的变体处理在通用结构模板 [1] 的变体处理章节中进行了描述。 ### 1.2 特性模型的应用场景 总结上一节的内容,AUTOSAR 变化点旨在交换有关 AUTOSAR 模型中哪里发生变体的信息,并说明相关的变体是什么。然而,这个概念尚未涵盖两个方面: - 变化点在相对较低的层级上表达。例如,"economy" 和 "luxury" 变体通常由大量变化点组成,但这些变化点协同工作的事实并未在模型中显式可见。 - 变化点之间存在依赖关系。例如,"economy" 和 "luxury" 变体是互斥的,但这种关系同样未在模型中显式可见。对于非 PostBuild 变化点,可以通过适当扩展条件使用的公式语言来实现这一点,尽管这将难以维护,并且会将两个独立的概念(变化点与特性建模)纠缠在一起。然而,对于 PostBuild 变化点,这种扩展方法将无法工作,因为这类变化点只使用简单的条件。 本文件中介绍的 Feature Model Exchange Format 涵盖了这些附加方面。 ### 1.3 特性模型示例 特性模型的示例如图 1.1 所示。 (参见原文 Figure 1.1: A sample Feature Model) 图 1.1 展示了一个示例特性模型。 ### 1.4 概述 1. **特性位于"问题域"。** 它们甚至独立于实现或产品架构。它们比位于"解决方案域"的变化点更加抽象。特性表达的是成品的共有和可变的特征,而不是为模型中的各个位置进行标注。特性模型为带有变体的 AUTOSAR 模型提供了高层视图。 2. **特性模型描述各个特性之间的依赖关系。** 依赖关系的示例包括特性的层次结构、表达可替代性的特性以及需要或禁止其他特性的特性。 3. **可以通过选择一组特性来描述单个产品。** 当然,这样的选择必须遵循特性模型中声明的依赖关系。从特性到变化点的映射(更准确地说,特性将映射到系统常量的值,而系统常量的值又控制变化点)指定了哪些变化点受到该选择的影响。 4. **Feature Model Exchange Format** 在不同特性建模工具之间提供了一种高效的特性模型交换方式。 5. **特性模型在 AUTOSAR 中是可选的。** 这意味着特性模型是一种扩展;仍然可以开发和使用不包含特性模型的 AUTOSAR 模型。 ### 1.5 文档约定 技术术语采用等宽字体排版,例如 PortPrototype。作为一般规则,技术术语的复数形式是在单数形式后添加 "s" 构成,例如 PortPrototypes。通过这种方式,本文档与 AUTOSAR XML 模式中使用的术语保持一致。 本文档包含以文本形式表达的约束,这些约束通过唯一的数字约束 ID、标题以及以字符 d 开头、以字符 c 结尾的约束正文与正文其余部分相区分。 这些约束的目的是以文字方式约束 AUTOSAR 元模型的解释,以便能够检测元模型实例(即 M1 层级)中标准化行为实现的违规情况。 鼓励 AUTOSAR 工具制造商将与 M1 建模问题相对应的约束的数字 ID 作为工具发出的诊断消息的一部分添加。 本文档中介绍的类的属性以类表的形式列出。它们采用如下形式,以顶层元素 AUTOSAR 为例: **类** AUTOSAR **包** M2::AUTOSARTemplates::AutosarTopLevelStructure **说明** AUTOSAR 描述的根元素,也是相应 XML 文档中的根元素。 标签:xml.globalElement=true **基类** ARObject **属性** 类型 基数 种类 说明 adminData AdminData 0..1 aggr 这表示 Autosar 文件的管理数据。 标签:xml.sequenceOffset=10 arPackage ARPackage * aggr 这是 AUTOSAR 模型中的顶层包。 原型:atpSplitable; atpVariation 标签:atp.Splitkey=shortName, variationPoint.shortLabel vh.latestBindingTime=blueprintDerivationTime xml.sequenceOffset=30 fileInfoComment FileInfoComment 0..1 aggr 这表示在 AUTOSAR 文件中提供结构化注释的可能性。 原型:atpStructuredComment 标签:xml.roleElement=true xml.sequenceOffset=-10 xml.typeElement=false introduction DocumentationBlock 0..1 aggr 这表示对 Autosar 文件的介绍。例如,它旨在表示免责声明和法律声明。 标签:xml.sequenceOffset=20 **表 1.1: AUTOSAR** 表中的前几行含义如下: - **Class(类)**:UML 模型中定义的类名。 - **Package(包)**:定义该类的 UML 包。这仅用于帮助在整体元模型中定位该类。 - **Note(说明)**:建模者为该类提供的注释(类注释)。类的原型和 UML 标签也在这里说明。 - **Base Classes(基类)**:如果适用,列出直接基类。 表头含义如下: - **Attribute(属性)**:类的属性名称。请注意,AUTOSAR 不区分类属性和拥有的关联端。 - **Type(类型)**:类属性的类型。 - **Mul.(基数)**:属性的指定基数,即与该属性关联的给定数据类型的实例数。 - **Kind(种类)**:指定该属性是在类中聚合(aggr 聚合),还是类中的 UML 属性(attr 基本属性),或仅由其引用(ref 引用)。实例引用也在此字段中以 iref 指示。 - **Note(说明)**:建模者为该类属性(角色注释)提供的注释。类的原型和 UML 标签也在此说明。 请注意,以字母而非数字开头的章节表示文档的附录。附录的目的是支持对文档特定方面的解释,并不代表标准的绑定约定。 [TPS_STDT_00053] 中规定的义务表达的口头形式应用于指明需求,请参阅标准化模板 [2] 的"可追溯性支持"章节。 AUTOSAR 文档中需求表示遵循 [TPS_STDT_00078] 中指定的表格,请参阅标准化模板 [2] 的"可追溯性支持"章节。 #### [TPS_FMDT_00064] 生命周期的使用 ⌈d⌋ FeatureModelExchangeFormat 中的生命周期通过使用通用结构模板 [1] 中描述的生命周期支持来描述。⌈c⌋ (RS_FMDT_00012) ### 1.6 需求追踪 下表引用了 [3] 中指定的需求,并链接到这些需求的实现。 | 需求 | 描述 | 由以下项满足 | |------|------|--------------| | [RS_FMDT_00001] | 支持产品线 | [TPS_FMDT_00004] [TPS_FMDT_00005] [TPS_FMDT_00006] [TPS_FMDT_00007] [TPS_FMDT_00008] [TPS_FMDT_00033] [TPS_FMDT_00043] | | [RS_FMDT_00002] | 特性 | [TPS_FMDT_00002] [TPS_FMDT_00024] [TPS_FMDT_00035] [TPS_FMDT_00036] [TPS_FMDT_00042] [TPS_FMDT_00054] [TPS_FMDT_00055] [TPS_FMDT_00056] | | [RS_FMDT_00003] | 特性选择 | [TPS_FMDT_00003] [TPS_FMDT_00009] [TPS_FMDT_00030] [TPS_FMDT_00032] [TPS_FMDT_00058] [TPS_FMDT_00059] [TPS_FMDT_00060] | | [RS_FMDT_00004] | 特性应具有名称 | [TPS_FMDT_00039] [TPS_FMDT_00040] [TPS_FMDT_00052] [TPS_FMDT_00061] [TPS_FMDT_00062] [TPS_FMDT_00063] | | [RS_FMDT_00005] | 特性分解 | [TPS_FMDT_00014] [TPS_FMDT_00030] [TPS_FMDT_00034] [TPS_FMDT_00036] [TPS_FMDT_00041] | | [RS_FMDT_00006] | 子特性的特征 | [TPS_FMDT_00015] [TPS_FMDT_00016] [TPS_FMDT_00017] [TPS_FMDT_00018] [TPS_FMDT_00046] | | [RS_FMDT_00007] | 特性多重性 | [TPS_FMDT_00012] | | [RS_FMDT_00008] | 特性之间的关系 | [TPS_FMDT_00019] [TPS_FMDT_00020] [TPS_FMDT_00021] [TPS_FMDT_00023] [TPS_FMDT_00030] [TPS_FMDT_00044] [TPS_FMDT_00045] [TPS_FMDT_00048] [TPS_FMDT_00049] [TPS_FMDT_00050] [TPS_FMDT_00057] | | [RS_FMDT_00009] | 特性的属性 | [TPS_FMDT_00051] [TPS_FMDT_00053] | | [RS_FMDT_00010] | 与 AUTOSAR 变体处理集成 | [TPS_FMDT_00025] [TPS_FMDT_00037] [TPS_FMDT_00038] [TPS_FMDT_00048] [TPS_FMDT_00049] [TPS_FMDT_00050] [TPS_FMDT_00057] | | [RS_FMDT_00011] | 特性模型应可拆分 | [TPS_FMDT_00047] | | [RS_FMDT_00012] | 特性模型的分布式维护 | [TPS_FMDT_00033] [TPS_FMDT_00064] | | [RS_FMDT_00013] | 集成到 AUTOSAR 方法论中 | [TPS_FMDT_00033] | | [RS_FMDT_00014] | 特性模型是可选的 | [TPS_FMDT_00001] [TPS_FMDT_00013] | | [RS_FMDT_00015] | 特性可指定绑定时间 | [TPS_FMDT_00054] | | [RS_FMDT_00016] | 特性选择可指定绑定时间 | [TPS_FMDT_00055] | **表 1.2: 需求追踪** ## 2 术语 (参见原文 Figure 2.1: Overview of Feature Model Terminology) 图 2.1 展示了用于特性建模的术语概览。我们定义了七个特定于 Feature Model Exchange Format 的术语,即 Feature、Feature Selection、Feature Model、Product Model、Product Line Model、Product 和 Product Line: - **[TPS_FMDT_00002] Feature(特性)定义 ⌈d⌋** Feature 描述了产品的一个基本特征。Feature 通常用于区分相似产品 — 在我们的上下文中,特性用于区分产品线中的各个产品。⌈c⌋ (RS_FMDT_00002) - **[TPS_FMDT_00003] Feature Selection(特性选择)定义 ⌈d⌋** Feature Selection 是描述特定产品的一组 Feature。 Feature Selection 始终与 Feature Model 配对使用。Feature Model 中定义的所有依赖关系和关系都应被遵守。⌈c⌋ (RS_FMDT_00003) - **[TPS_FMDT_00004] Feature Model(特性模型)定义 ⌈d⌋** Feature Model 描述了产品线的可用 Feature 及其相互关系/相互依赖关系。换言之,Feature Model 在问题域中描述了 Product Line Model。 例如,一辆车可以配备汽油发动机或柴油发动机,因此 Feature Gasoline 和 Diesel 是可替代的。汽车的七座配置可能需要空调,因此 Feature Seven Seats 需要 Feature Air Conditioning。 Feature Model 通常与 Product Line Model 配对使用。⌈c⌋ (RS_FMDT_00001) - **[TPS_FMDT_00005] Product Model(产品模型)定义 ⌈d⌋** Product Model 描述一个产品。Product Model 不再包含变化点(PostBuild 变化点除外)。它通过对变化点进行"绑定"从 Product Line Model 派生而来。 在 AUTOSAR 中,Product Model 是描述特定 Product 的 M1 工件集合。 除 PostBuild 变化点外,Product Model 符合通用结构模板 [1] 变体处理章节中定义的纯元模型。⌈c⌋ (RS_FMDT_00001) - **[TPS_FMDT_00006] Product Line Model(产品线模型)定义 ⌈d⌋** Product Line Model 与 Product Model 类似,但包含所有绑定时间的变化点。通过保留某些变体并丢弃其他变体(即绑定)来从 Product Line Model 创建 Product Model。Product Model 中仍然允许的变化点仅为 PostBuild 变化点。 在特性建模的上下文中,此选择过程由 Feature Selection 引导(更准确地说,变体选择过程(绑定)由 variant selectors (SwSystemconst) 控制,而 variant selectors 的值又可以从 Feature selection 派生而来)。 在 AUTOSAR 中,Product Line Model 是描述具有共同特征的一组 Product Model 的 M1 工件集合。Product Line Model 是通用结构模板 [1] 变体处理章节中定义的扩展元模型的实例。⌈c⌋ (RS_FMDT_00001) - **[TPS_FMDT_00007] Product(产品)定义 ⌈d⌋** Product 是某种类型过程的产出物,例如在一台或多台 ECU 上运行的软件。 在 AUTOSAR 中,Product 是 M0 工件的集合。在我们的术语中,它由 M1 层级上的 Product Model 描述。⌈c⌋ (RS_FMDT_00001) - **[TPS_FMDT_00008] Product Line(产品线)定义 ⌈d⌋** Product Line 是一组相关 Product 的集合。Product Line 通常由一组具有某些共同方面的 Product 和若干区分各个 Product 的方面组成。 在我们的术语中,Product Line 由 Product Line Model 描述,而 Product Line Model 又由 Feature Model 描述。⌈c⌋ (RS_FMDT_00001) **关于术语的说明** 在本节中,我们定义了几个在 AUTOSAR 或其他场合已具有含义的术语。这一点对于 Feature 和 Product 尤为准确。更简洁的定义可能是 AUTOSAR Featuremodel Feature 或 AUTOSAR Featuremodel Product。 然而,易于看出的是,这种用词选择将显著影响本文档的可读性。Feature 等术语已经在特性建模的文献中使用了一段时间,因此使用不同的术语对于熟悉该领域的人来说是毫无帮助的。 因此,尽管与现有 AUTOSAR 术语存在重叠,我们决定沿用已建立的术语。由于这些术语仅在特性建模的上下文中使用,因此应始终能够清楚地理解所指的是哪个定义。 ### 2.1 图论术语 在本文档中,我们偶尔会使用图论中的概念来为约束提供形式化描述。以下小节定义了这些术语。 - **有向图** 是一个元组 (V, E),其中 E ⊆ V × V。V 称为 G 的节点,E 称为 G 的边。 > 注:在本文档中,我们仅需要使用有向图,因此使用"图"一词等同于"有向图"。 - **路径 p** 在图 G = (V, E) 中是节点的序列 p = v1, v2, ..., vn,其中 vi ∈ V 且 ∀i ∈ {1, ..., n−1} : (vi, vi+1) ∈ E。p 从 v1 开始,到 vn 结束。 - **环(circle)** 是图 G = (V, E) 中的一条路径 v1, v2, ..., vn,其中 v1 = vn。 - **自环(self loop)** 是图 G = (V, E) 中的边 (v, v) ∈ E。 - **孤立节点(isolated node)** 是图 G = (V, E) 中的节点 v ∈ V,其中 ¬∃v' : ((v, v') ∈ E ∨ (v', v) ∈ E)。换言之,孤立节点是没有边的节点。 - **树(tree)** 是具有根 r ∈ V 的图 G = (V, E),具有以下属性: 1. ∀v ∈ V : ∃ 路径 p = {r, v2, ..., v}。换言之,对于每个节点 v ∈ V,存在从 r 开始到 v 结束的路径。 2. ¬∃v ∈ V : (v, r) ∈ E。换言之,根节点没有传入边。 3. ∀v ∈ V, v ≠ r : ∃v' ∈ V : (v', v) ∈ E。换言之,任何非根节点都有恰好一条传入边。 4. G 没有环也没有自环。 5. size(V) = size(E) + 1。 注:项 4 和 5 是项 1、2 和 3 的推论。 ## 3 概述 AUTOSAR 特性模型由三种不同的结构¹ 组成:特性模型本身、特性选择以及特性映射。 > ¹ 本文档中描述的许多概念改编自《Generative Programming: Methods, Tools, and Applications》,Krzysztof Czarnecki 和 Ulrich W. Eisenecker,ACM Press/Addison-Wesley Publishing Co, 2000。 ### 3.1 特性模型 特性模型(FMFeatureModel)由若干 Feature(FMFeature)组成,这些 Feature 以层次结构(FMFeatureDecomposition)组织。也就是说,每个 Feature 可以包含若干子 Feature,而这些子 Feature 又可以包含其自身的子 Feature,依此类推。换言之:特性模型由一个或多个特性树组成。 作为特例,可以将特性模型拆分(split)到多个 AUTOSAR 文件中。也可以将一个大型特性树划分为多个子树。 此外,Feature 之间可能存在相互依赖关系。例如,Feature 可以表示可替代项,因此是互斥的(FMFeatureDecomposition),或者一个 Feature 可能需要一个或多个其他 Feature、与某些其他 Feature 矛盾(FMFeatureRelation),或者 Feature 可能包含一个限制其适用性的表达式(FMFeatureRestriction)。 ### 3.2 特性选择 特性选择是描述实际产品的一组 Feature。例如,特定型号的汽车由其 Feature 集描述。这通过 FMFeatureSelectionSet 实现,FMFeatureSelectionSet 包含若干 FMFeatureSelection,每个 FMFeatureSelection 定义该特定特性选择中 FMFeature 的状态。 如果为 Feature 定义的所有限制和关系以及特性模型的层次结构均得到遵守,则称特性选择是有效的。 特性选择与特性模型分开处理,因为对于单个特性模型通常存在许多不同的特性选择。例如,不同的汽车由不同的特性选择表示。 ### 3.3 特性映射 在 AUTOSAR 变体处理中,变化点由系统常量控制。基于系统常量的表达式用于确定特定变化点是"on"还是"off"。其结果是,同一个系统常量可用于控制多个变化点。 因此,Feature 不能直接映射到变化点,而需要为变化点表达式中使用的系统常量选择值。这通过特性映射(FMFeatureMap)完成。简而言之,特性映射的每个元素(FMFeatureMapElement)包含一组基于 Feature 和 Feature 属性的条件(FMFeatureMapCondition)以及一组基于 Feature 和系统常量的断言(FMFeatureMapAssertion)。如果任意条件为真且所有断言为真,则映射列出若干系统常量并为它们选择值。 ## 4 特性模型 (参见原文 Figure 4.1: Class FMFeatureModel) **类 FMFeatureModel** | 项目 | 内容 | |------|------| | 包 | M2::AUTOSARTemplates::FeatureModelTemplate | | 说明 | Feature Model 描述了产品线的 Feature 及其依赖关系。Feature Model 是 AUTOSAR 模型中的可选部分。
标签:atp.recommendedPackage=FMFeatureModels | | 基类 | ARElement, ARObject, CollectableElement, Identifiable, MultilanguageReferrable, PackageableElement, Referrable | | 属性 | 类型 基数 种类 说明 | | feature | FMFeature * ref "feature" 包含特性模型的 Feature 列表。同一 FMFeature 不得在此列表中出现两次。此外,每个 FMFeature 只能属于一个特性模型。
原型:atpSplitable
标签:atp.Splitkey=feature | | root | FMFeature 0..1 ref 特性模型的 Feature 定义一棵 Feature 树。属性 root 指向该 Feature 树的根。 | **表 4.1: FMFeatureModel** [TPS_FMDT_00043] FMFeatureModel 的用途 ⌈d⌋ FMFeatureModel 描述了产品线的可用 Feature,如 [TPS_FMDT_00004] 中所定义。⌈c⌋ (RS_FMDT_00001) 特性模型由类 FMFeatureModel 实现。由于 FMFeatureModel 是 ARElement,因此 AUTOSAR 模型可以包含任意数量的特性模型,包括零个。 [TPS_FMDT_00013] 特性模型是可选的 ⌈d⌋ 不包含特性模型的 AUTOSAR 模型仍然是有效的 AUTOSAR 模型。⌈c⌋ (RS_FMDT_00014) 特别是,特性模型可以为空,即不包含任何 Feature。 [TPS_FMDT_00001] 特性模型可以为空 ⌈d⌋ FMFeatureModel 可以在 role feature 中具有零个对 FMFeature 元素的引用。⌈c⌋ (RS_FMDT_00014) 如果 AUTOSAR 模型包含多个特性模型,则这些特性模型可以以两种方式相互作用。首先,特性模型可以使用其他特性模型作为子模型,如第 4.4.4 节所定义。其次,限制(4.5)和关系(4.6)可以引用在其他特性模型中定义的 Feature。 ### 4.1.1 引用 feature 每个 FMFeatureModel 在 role feature 中包含若干 FMFeature 元素。这些元素表示特性模型的 Feature。 [TPS_FMDT_00035] FMFeatureModel 的 Feature 定义 ⌈d⌋ 设 F 为 FMFeatureModel,{f1, f2, ..., fn} 为在 role feature 中从 F 引用的 FMFeature 集合。那么 {f1, f2, ..., fn} 即为 F 的 Feature。⌈c⌋ (RS_FMDT_00002) FMFeature 只能属于单个 FMFeatureModel: [constr_5007] FMFeature 应仅在一个 FMFeatureModel 的 role feature 中被引用 ⌈d⌋ 设 f 为 FMFeature,F, F' 为 FMFeatureModel,其中 F 在 role feature 中引用 f,且 F' 也在 role feature 中引用 f。那么 F = F'。⌈c⌋ 显然,FMFeatureModel 不应在 role feature 中包含同一 Feature 两次。 [constr_5019] FMFeatureModel 不应包含同一 FMFeature 两次 ⌈d⌋ 设 F 为 FMFeatureModel,f, f' 为在 role feature 中从 F 引用的 FMFeature。那么 f ≠ f'。⌈c⌋ 另一方面,不存在"孤立"的 Feature;每个 FMFeature 都是 FMFeatureModel 的一部分。 [constr_5020] 每个 FMFeature 都应包含在 FMFeatureModel 中 ⌈d⌋ 对于每个 FMFeature f,都应存在一个 FMFeatureModel 在 role feature 中引用 f。⌈c⌋ 约束 [constr_5020] 确保不存在"独立"的 Feature(这在技术上是可能的,因为 FMFeature 是 ARElement),但在本上下文中没有用处。 最后,如果需要,可以将特性模型分布到多个物理 ARXML 文件中。 [TPS_FMDT_00047] 特性模型是可拆分的 ⌈d⌋ 关系 feature 具有原型 atpSplitable。也就是说,FMFeatureModel 可以分布在多个 ARXML 文件中。⌈c⌋ (RS_FMDT_00011) ### 4.1.2 引用 root 由于特性模型的 Feature 以树形结构组织(参见第 4.4 节),因此恰好有一个 Feature 位于树的顶部。特性模型具有一个额外的引用 root,它指向该 Feature。 root 并不是严格必需的,因为从特性模型的层次结构(参见第 4.4 节)可以推断出根 Feature。但是,包含 root 是为了方便并协助工具检查模型的完整性。 [TPS_FMDT_00036] FMFeatureModel 的 Root Feature 定义 ⌈d⌋ 设 F 为在 role root 中引用 FMFeature f 的 FMFeatureModel。那么 f 称为 F 的 root feature。⌈c⌋ (RS_FMDT_00002, RS_FMDT_00005) 我们需要为 root feature 定义两个约束。首先,如果特性模型不为空,即它具有 Feature,则其中一个 Feature 应是 root feature: [constr_5009] 当且仅当特性模型非空时才应存在 root feature ⌈d⌋ 如果 FMFeatureModel 在 role feature 中引用了一个或多个 FMFeature 元素,那么其中恰好一个应由 FMFeatureModel 在 role root 中引用。 相反,如果 FMFeatureModel 在 role feature 中没有引用任何 FMFeature,则 root 应为空。⌈c⌋ 其次,特性模型的 root feature 应该是其自身 Feature 之一: [constr_5008] 如果存在 root feature,则它应属于特性模型 ⌈d⌋ 设 r 为在 role root 中从 FMFeatureModel 引用的 FMFeature,{f1, f2, ..., fn} 为在 role feature 中从同一 FMFeatureModel 引用的 Feature 集合。 那么应满足以下条件:r ∈ {f1, f2, ..., fn}。⌈c⌋ 我们稍后将在约束 [constr_5022](要求 root feature 指向 Feature 树的根)和 [constr_5010](允许 Feature 使用另一个特性模型的 root feature(但仅能使用该 root feature)作为子 Feature)中再次讨论 root feature。 ### 4.2 类 FMFeature 每个 FMFeatureModel 由若干 FMFeature 组成,这些 FMFeature 又以层次化的树形结构组织。该层次结构在 Feature 之间建立了父子关系,其中每个非根 Feature 恰好有一个父 Feature,并且可以具有任意数量的子 Feature(包括零个)。 **类 FMFeature** | 项目 | 内容 | |------|------| | 包 | M2::AUTOSARTemplates::FeatureModelTemplate | | 说明 | FMFeature 描述产品的一个基本特征。每个 FMFeature 包含在恰好一个 FMFeatureModel 中。
标签:atp.recommendedPackage=FMFeatureModels | | 基类 | ARElement, ARObject, CollectableElement, Identifiable, MultilanguageReferrable, PackageableElement, Referrable | | 属性 | 类型 基数 种类 说明 | | attributeDef | FMAttributeDef * aggr 这定义了给定 Feature 的属性。 | | decomposition | FMFeatureDecomposition * aggr 列出 Feature 的子 Feature。 | | maximumIntendedBindingTime | BindingTimeEnum 0..1 attr 定义与此 FMFeature 关联的变化点的绑定时间上限。此属性用作开发过程的提示。 | | minimumIntendedBindingTime | BindingTimeEnum 0..1 attr 定义与此 FMFeature 关联的变化点的绑定时间下限。此属性用作开发过程的开发过程提示。 | | relation | FMFeatureRelation * aggr 定义 FMFeature 的关系,例如对其他 FMFeature 的依赖关系或与它们的冲突。仅当 FMFeature 的所有关系都满足时,它才能成为 FMFeatureSelectionSet 的一部分。 | | restriction | FMFeatureRestriction * aggr 定义 FMFeature 的限制。仅当 FMFeature 的至少一个限制求值为真时,它才能成为 FMFeatureSelectionSet 的一部分。 | **表 4.2: FMFeature** [TPS_FMDT_00042] FMFeature 的用途 ⌈d⌋ FMFeature 描述产品的一个基本特征,如 [TPS_FMDT_00002] 中所定义。⌈c⌋ (RS_FMDT_00002) FMFeature 聚合以下元素: - **FMFeatureDecomposition** 分解定义了 Feature 的层次组织方式。它还在 Feature 之间施加了某些约束:存在 mandatory、optional、alternative 和 multiple Feature。 特性分解在第 4.4 节中描述。 - **FMFeatureRestriction** 限制包含一个公式,该公式限制 Feature 在有效特性选择中的包含性([TPS_FMDT_00030])。也可以有多个限制。仅当至少一个限制求值为真时,Feature 才能成为有效特性选择的一部分。 特性限制在第 4.5 节中描述。 - **FMFeatureRelation** 关系表达 Feature 之间的约束。关系从一个 Feature 指向一个或多个其他 Feature,并定义这些 Feature 之间的关系。例如,关系可用于表达一个 Feature 需要另一个 Feature,或与多个其他 Feature 冲突。 特性关系在第 4.6 节中描述。 - **FMAttributeDef** 属性定义 Feature 的数值属性。属性由限制(参见第 4.5 节)和特性映射(参见第 6 节)使用。Feature 本身仅定义属性和可选的默认值;实际值可以在特性选择(第 5 节)中进一步细化。 特性属性在第 4.3 节中描述。 FMFeature 具有两个属性 maximumIntendedBindingTime 和 minimumIntendedBindingTime,它们指定与此 Feature 关联的变化点的预期绑定时间(参见第 4.2.2 节)。 #### 4.2.1 特性的名称与文档 [TPS_FMDT_00039] FMFeature 的名称 ⌈d⌋ 属性 shortName 可用于标识 Feature。此外,属性 longName 可用于为 FMFeature 提供可读的名称。⌈c⌋ (RS_FMDT_00004) [TPS_FMDT_00040] FMFeature 的描述 ⌈d⌋ 属性 introduction 和 desc 可用于为 FMFeature 提供可读的描述。⌈c⌋ (RS_FMDT_00004) 如 [1] 所述,introduction 和 desc 按以下方式使用: - **introduction** [TPS_GST_00103] 包含有关如何使用 Feature 的介绍性文档。 - **desc** [TPS_GST_00100] 包含关于 Feature 是什么的简要描述。 属性 shortName、longName、introduction 和 desc 在图 4.1 中不可见,但源自 FMFeature 基于 ARElement,而 ARElement 又基于 Identifiable 和 Referrable。 #### 4.2.2 预期绑定时间 类 FMFeature 包含两个可选属性 minimumIntendedBindingTime 和 maximumIntendedBindingTime,它们定义与 FMFeature 关联的变化点的预期绑定时间(绑定时间在 AUTOSAR 方法论 [4] 中解释)的下限和上限。 [TPS_FMDT_00054] 属性 minimumIntendedBindingTime 和 maximumIntendedBindingTime 的语义 ⌈d⌋ 设 f 为 FMFeature,V 为 [TPS_FMDT_00038] 中定义的 f 的受影响变化点集合。那么对每个变化点 v ∈ V 隐含以下条件: 1. 如果属性 minimumIntendedBindingTime 存在且值为 min,则 min ≤ bindingtime(v)。 2. 如果属性 maximumIntendedBindingTime 存在且值为 max,则 bindingtime(v) ≤ max。 ⌈c⌋ (RS_FMDT_00002, RS_FMDT_00015) [TPS_FMDT_00054] 引用与 FMFeature 关联的变化点。此信息无法通过 FMFeatureModel 获得,而是在 FMFeatureMap(参见第 6 节)中定义。因此,属性 minimumIntendedBindingTime 和 maximumIntendedBindingTime 仅在 FMFeatureMap 也可用时才能被解释。 [TPS_FMDT_00024] 属性 maximumIntendedBindingTime 和 minimumIntendedBindingTime 仅是提示 ⌈d⌋ maximumIntendedBindingTime 和 minimumIntendedBindingTime 的值仅用作开发过程的提示,以指导选择正确的可变性实现。⌈c⌋ (RS_FMDT_00002) ### 4.3 特性属性 每个 FMFeature 聚合零个或多个 FMAttributeDef 元素,每个元素定义 Feature 的一个属性。 **类 FMAttributeDef** | 项目 | 内容 | |------|------| | 包 | M2::AUTOSARTemplates::FeatureModelTemplate | | 说明 | 此元类表示为 Feature 定义属性的能力。 | | 基类 | ARObject, Identifiable, MultilanguageReferrable, Referrable | | 属性 | 类型 基数 种类 说明 | | defaultValue | Numerical 0..1 attr 这表示属性的默认值。 | | max | Limit 1 attr 此属性值的最大可能值。 | | min | Limit 1 attr 此属性值的最小可能值。 | **表 4.3: FMAttributeDef** [TPS_FMDT_00051] FMAttributeDef 的用途 ⌈d⌋ FMAttributeDef 为 Feature 定义属性。每个 FMAttributeDef 包含一个可选的 defaultValue,并使用属性 max 和 min 为其值定义限制。⌈c⌋ (RS_FMDT_00009) [constr_5026] 类 FMAttributeDef 中属性 max 和 min 的语义 ⌈d⌋ 对于类 FMAttributeDef 的所有实例,应满足以下条件: - min ≤ defaultValue ≤ max(min 和 max 都是闭区间) - min < defaultValue ≤ max(min 是开区间,max 是闭区间) - min < defaultValue < max(min 和 max 都是开区间) - min ≤ defaultValue < max(min 是闭区间,max 是开区间) ⌈c⌋ 由于 FMAttributeDef 是 Identifiable,它们具有可用作属性名称的 shortName。 第 5.2.3.1 节给出了如何使用属性的示例。 ### 4.4 类 FMFeatureDecomposition 每个 FMFeature 聚合一个或多个 FMFeatureDecomposition 元素。FMFeatureDecomposition 包含对其他 Feature 的引用,从而建立 Feature 的层次组织。该层次结构对 FMFeature 施加某些限制,例如将某些 Feature 声明为可选的或互斥的。它还可以通过引用另一个 FMFeatureModel 的 root feature 将一个 FMFeatureModel 连接到另一个 FMFeatureModel。 **类 FMFeatureDecomposition** | 项目 | 内容 | |------|------| | 包 | M2::AUTOSARTemplates::FeatureModelTemplate | | 说明 | FMFeatureDecomposition 描述一组 Feature 与其父 Feature(即聚合 FMFeatureDecomposition 的 FMFeature)之间的依赖关系。依赖关系的种类由属性 category 定义。 | | 基类 | ARObject | | 属性 | 类型 基数 种类 说明 | | category | CategoryString 1 attr FMFeatureDecomposition 的 category 定义由 FMFeatureDecomposition 定义的依赖关系类型。共有四种不同的 category:MANDATORYFEATURE、OPTIONALFEATURE、ALTERNATIVEFEATURE 和 MULTIPLEFEATURE。 | | feature | FMFeature 1..* ref 受 FMFeatureDecomposition 定义的依赖关系影响的 Feature。 | | max | PositiveInteger 0..1 attr 对于 category 为 MULTIPLEFEATURE 的依赖关系,这定义允许的 Feature 的最大数量。 | | min | PositiveInteger 0..1 attr 对于 category 为 MULTIPLEFEATURE 的依赖关系,这定义允许的 Feature 的最小数量。 | **表 4.4: FMFeatureDecomposition** [TPS_FMDT_00041] FMFeatureDecomposition 的用途 ⌈d⌋ 每个 FMFeature 在 role decomposition 中聚合零个或多个 FMFeatureDecomposition 元素。因此,FMFeatureDecomposition 建立了 FMFeature 的层次组织。⌈c⌋ (RS_FMDT_00005) 没有 FMFeatureDecomposition 的 FMFeature 是特性树中的叶节点。 #### 4.4.1 FMFeatureDecomposition 的约束与术语 [TPS_FMDT_00014] Parent Feature、Child Feature 的定义 ⌈d⌋ 设 f 为聚合 FMFeatureDecomposition(该分解在 role feature 中引用 FMFeature f')的 FMFeature。那么 f 是 f' 的 parent feature,f' 是 f 的 child feature。⌈c⌋ (RS_FMDT_00005) 每个 Feature 最多具有一个 parent feature,但可以具有任意数量的 child feature(包括零个)。这是由以下事实确立的:特性模型以树的形式组织,如下文的约束 [constr_5021] 所确定。 [constr_5005] FMFeature 不应从一个以上的 FMFeatureDecomposition 中被引用 ⌈d⌋ 设 f 为在 role feature 中被 FMFeatureDecomposition 引用的 FMFeature。那么没有其他 FMFeatureDecomposition 应在 role feature 中引用 f。⌈c⌋ 约束 [constr_5005] 确保每个 FMFeature 最多具有一个 parent feature(child feature 的数量出于明显原因不受限制)。这为 FMFeatureModel 的底层图的以下定义铺平了道路,该底层图实际上是一棵底层树。 [TPS_FMDT_00034] FMFeatureModel 的底层图定义 ⌈d⌋ 设 F 为 FMFeatureModel,{f1, f2, ..., fn} 为在 role feature 中从 F 引用的 FMFeature 集合。 那么 F 的底层图是图 G = (V, E),其中 V = {f1, f2, ..., fn} E = {(fi, fj) | fi 是 fj 的 parent feature} ⌈c⌋ (RS_FMDT_00005) [constr_5021] 特性模型的底层图应为树。⌈d⌋ 设 F 为 FMFeatureModel,G 为 [TPS_FMDT_00034] 中定义的 F 的底层图。那么 G 应为树。因此,我们也称 G 为 F 的底层树。⌈c⌋ [constr_5022] FMFeatureModel 的 root feature 引用底层树的根。⌈d⌋ 设 F 为 FMFeatureModel,G 为 [TPS_FMDT_00034] 中定义的 F 的底层树。此外,设 r 为 FMFeatureModel 的 root feature 引用的 FMFeature。 那么 G 中对应于 r 的节点即为树 G 的根。⌈c⌋ #### 4.4.2 特性分解的类别 FMFeatureDecomposition 的属性 category 定义了在 role feature 中引用的 FMFeature 的语义。我们为 FMFeatureDecomposition 定义了四个 category:MANDATORYFEATURE、OPTIONALFEATURE、ALTERNATIVEFEATURE 和 MULTIPLEFEATURE: - **[TPS_FMDT_00015] MANDATORYFEATURE ⌈d⌋** 在 role feature 中从具有 category MANDATORYFEATURE 的 FMFeatureDecomposition 引用的所有 FMFeature 当且仅当其 parent FMFeature 包含在特性选择中时,才应出现在特性选择中。⌈c⌋ (RS_FMDT_00006) - **[TPS_FMDT_00016] OPTIONALFEATURE ⌈d⌋** 在 role feature 中从具有 category OPTIONALFEATURE 的 FMFeatureDecomposition 引用的 FMFeature 当且仅当其 parent FMFeature 包含在特性选择中时,才可以出现在特性选择中。⌈c⌋ (RS_FMDT_00006) - **[TPS_FMDT_00017] ALTERNATIVEFEATURE ⌈d⌋** 在 role feature 中从具有 category ALTERNATIVEFEATURE 的 FMFeatureDecomposition 引用的 FMFeature 中,恰好一个当且仅当其 parent FMFeature 包含在特性选择中时,才应出现在特性选择中。⌈c⌋ (RS_FMDT_00006) - **[TPS_FMDT_00018] MULTIPLEFEATURE ⌈d⌋** 在 role feature 中从具有 category MULTIPLEFEATURE 的 FMFeatureDecomposition 引用的 FMFeature 中,一个或多个当且仅当其 parent FMFeature 包含在特性选择中时,才应出现在特性选择中。这进一步受属性 min 和 max 的约束(参见 [TPS_FMDT_00012] 和 [constr_5013])。⌈c⌋ (RS_FMDT_00006) 这些定义在 [TPS_FMDT_00046] 中形式化。 [TPS_FMDT_00046] FMFeatureDecomposition 的语义 ⌈d⌋ 设 S 为 FMFeature 集合,设 f, f1, f2, ..., fn 为 FMFeature,其中 f 是 f1, f2, ..., fn 的 parent feature。此外,设 d 为在 role decomposition 中由 f 聚合的 FMFeatureDecomposition,其中 {f1, f2, ..., fn} 全部在 role feature 中从 d 引用。 根据 FMFeatureDecomposition d 的 category,定义以下条件: **MANDATORYFEATURE** f ∈ S ⇔ |{f1, f2, ..., fn} ∩ S| = n **OPTIONALFEATURE** f ∈ S ⇔ 0 ≤ |{f1, f2, ..., fn} ∩ S| ≤ n **ALTERNATIVEFEATURE** f ∈ S ⇔ |{f1, f2, ..., fn} ∩ S| = 1 **MULTIPLEFEATURE** f ∈ S ⇔ min ≤ |{f1, f2, ..., fn} ∩ S| ≤ max ⌈c⌋ (RS_FMDT_00006) 请注意,[TPS_FMDT_00046] 不要求满足这些条件。只有当 S 是有效的特性选择(参见 [TPS_FMDT_00030])时,才必须满足所有条件。这是必要的,因为特性选择可能是不完整的,例如在逐步选择 Feature 的过程中,只有"最终的"特性选择满足所有约束。 #### 4.4.3 属性 min 和 max 如果存在可选属性 min 和 max,则它们限制可选择的 multiple Feature 的数量。 [TPS_FMDT_00012] FMFeatureDecomposition 的属性 min 和 max 的默认值 ⌈d⌋ 如果缺少 min 和 max,则在 [TPS_FMDT_00046] 中假定 min 的值为 1,max 的值为 ∞。⌈c⌋ (RS_FMDT_00007) 换言之,如果未指定 min 和 max,则有效的特性选择应至少包含其中一个 Feature,但没有上限。技术上说,[TPS_FMDT_00012] 中的 ∞ 转换为 PositiveInteger 可表示的最大数。 [constr_5013] FMFeatureDecomposition 的属性 min 和 max 保留给 category MULTIPLEFEATURE ⌈d⌋ FMFeatureDecomposition 的可选属性 min 和 max 仅在 FMFeatureDecomposition 的 category 为 MULTIPLEFEATURE 时才允许出现。⌈c⌋ #### 4.4.4 特性模型的层次分解 存在一种特殊情况,即 FMFeatureDecomposition 可以引用另一个 FMFeatureModel 中的 Feature。这对于 FMFeatureModel 的层次分解很有用。但是,这仅在引用的 Feature 是 root feature 时才允许。 [constr_5010] FMFeatureDecomposition 可以引用另一个特性模型的 root feature,但只能引用一次。⌈d⌋ 设 fA 为由 FMFeatureModel A 在 role feature 中引用,但也由 FMFeature fB 在 role decomposition 中聚合的 FMFeatureDecomposition 引用的 FMFeature。此外,设 B 为在 role feature 中引用 fB 且 A ≠ B 的 FMFeatureModel。也就是说,fA 和 fB 属于不同的特性模型。 那么应同时满足以下两个条件: 1. fA 在 role root 中从 A 引用。 2. 没有其他 FMFeatureDecomposition(无论在 B 中还是在任何其他 FMFeatureModel 中)在 role feature 中引用 fB。 ⌈c⌋ [constr_5010] 中的第二个条件是必要的,以确保组合特性模型的整体结构仍为树(另请参见 [TPS_FMDT_00034] 和 [constr_5021])。 #### 4.4.5 为何对 FMFeature 使用引用而非聚合 我们也可以这样定义特性模型:FMFeatureModel 聚合单个 FMFeature(即 root feature),然后 FMFeatureModel 递归地聚合其他 FMFeature。采用这种方法,本节前面定义的多个约束将变得不必要,因为这种聚合自然形成一棵树。 但是,对于第 4.4.4 节中描述的特性模型的分解,这种方法是行不通的。在这种情况下,FMFeatureDecomposition 引用了不同 FMFeatureModel 的根。这无法通过聚合轻松完成。 ### 4.5 类 FMFeatureRestriction 由 FMFeatureDecomposition(参见第 4.4 节)建立的层次结构涵盖了许多用于约束 Feature 包含在特性选择中的用例。然而,在某些情况下需要更复杂的约束。FMFeatureDecomposition 为共享相同 parent feature 的 Feature 定义约束。例如,它可以表达若干 Feature 在其父 Feature 的上下文中是可替代的(通常,"汽车"要么包含"柴油"发动机,要么包含"汽油"发动机,但不能两者兼有),但它不能表达 FMFeature 依赖于树中跨其他 FMFeature 的 FMFeature,或与两个其他 Feature 的组合相矛盾。 FMFeature 可以聚合若干 FMFeatureRestriction 元素,这些元素进一步限制其在特性选择中的包含性。FMFeatureRestriction 在 role restriction 中聚合一个布尔表达式,该表达式限制特定 Feature 是否允许成为 FMFeatureSelection 的一部分。 更准确地说,Feature 仅在其至少一个限制求值为真时才能成为特性选择的一部分。也就是说,所有限制合并为单个布尔表达式;各个限制通过 ∨ 运算符组合。为简化起见,限制之间没有优先级。 **类 FMFeatureRestriction** | 项目 | 内容 | |------|------| | 包 | M2::AUTOSARTemplates::FeatureModelTemplate | | 说明 | 定义 FMFeature 的限制。仅当 FMFeature 的至少一个限制求值为真时,它才能成为 FMFeatureSelectionSet 的一部分。 | | 基类 | ARObject, Identifiable, MultilanguageReferrable, Referrable | | 属性 | 类型 基数 种类 说明 | | restriction | FMConditionByFeaturesAndAttributes 1 aggr 包含实际限制的公式。 | **表 4.5: FMFeatureRestriction** [TPS_FMDT_00045] FMFeatureRestriction 的语义 ⌈d⌋ 设 S 为 FMFeatureModel 的特性选择,f 为具有一组 FMFeatureRestrictions {R1, R2, ..., Rn} 的 FMFeature。设 {C1, C2, ..., Cn} 为在 role restriction 中由 Ri 聚合的 FMFormulaByFeaturesAndAttributes 元素。 那么 Feature 定义以下条件: f ∈ S ⇒ C1 = true ∨ C2 = true ∨ ... ∨ Cn = true ⌈c⌋ (RS_FMDT_00008) 请注意,[TPS_FMDT_00045] 仅定义一个条件,但不要求该条件由特性选择满足。仅有效的特性选择(参见 [TPS_FMDT_00030])才要求满足该条件。 [TPS_FMDT_00045] 中陈述的条件仅在一个方向上起作用。即使所有条件都为真,特定 Feature 仍可能不包含在有效的特性选择中。 > ¹ 即其值被解释为布尔值。 相反,如果 Feature 包含在有效特性选择中,则至少一个限制必须为真。这与 FMFeatureRelation 不同,后者可以强制 Feature 成为有效特性选择的一部分(参见第 4.6 节)。 我们不会对可以与 FMFeatureRestriction 一起使用的限制施加进一步的约束。这意味着由限制的创建者² 负责确保不会引入循环依赖或冲突。例如,Feature f 具有限制 ≠ f 是完全合法的,尽管这可能不太有用,因为该 Feature 永远无法被选择。 > ² 限制的创建者可以是一个或多个人员,甚至可以是一个工具。 #### 4.5.1 FMFeatureRestriction 的标识与文档化 由于 FMFeatureRestriction 基于 Identifiable,它可以包含可选属性 shortName、introduction 和 desc。 [TPS_FMDT_00062] FMFeatureRestriction 的标识 ⌈d⌋ 属性 shortName 可用于在 FMFeature 聚合多个 FMFeatureRestriction 的情况下区分关系。⌈c⌋ (RS_FMDT_00004) [TPS_FMDT_00063] FMFeatureRestriction 的文档化 ⌈d⌋ 属性 introduction 和 desc 可用于为 FMFeatureRestriction 提供可读的描述。⌈c⌋ (RS_FMDT_00004) #### 4.5.2 示例 考虑一个具有以下限制的 Feature f: f1 && f2 && f3 此限制定义仅当 f1、f2 和 f3 也包含在该特性选择中时,f 才能成为特性选择的一部分。这无法用特性树表示,因为 f 必须是所有三个 Feature 的 mandatory child,这明显违反了树结构。 反之,仅使用限制来定义 mandatory、optional、alternative 和 multiple Feature 是可能的。例如,Feature f 和 f' 互斥(即 alternate Feature)这一事实可以通过将限制 ¬f' 分配给 f 以及将限制 ¬f 分配给 f' 来表达。 通过扩展这种方法,可以替换第 4.4 节中为 FMFeatureDecomposition 定义的不同 category。我们没有遵循这种方向,因为从分解中生成此类限制很容易,但没有适当的注释很难将它们翻译回分解。 > ² 限制的创建者可以是一个或多个人员,甚至可以是一个工具。 ### 4.6 类 FMFeatureRelation 正如我们在第 4.5 节中所见,FMFeatureRestriction 是一个布尔表达式,用于限制 Feature 是否可以包含在特性选择中。在本节中,我们定义 FMFeatureRelations,它们以不同的方式工作,因为它们施加的是要求而非限制。 例如,关系 F1 requiresF2 表示 F1 包含在特性选择中要求 F2 也被选中。类似地,关系 F1 excludes F2 表示如果 F1 是特性选择的一部分,则要求 F2 不存在。 关系由类 FMFeatureRelation 实现。FMFeatureRelation 在 role feature 中引用若干 FMFeature;这些是关系的目标 Feature。 **类 FMFeatureRelation** | 项目 | 内容 | |------|------| | 包 | M2::AUTOSARTemplates::FeatureModelTemplate | | 说明 | 定义 FMFeature 的关系,例如对其他 FMFeature 的依赖关系或与它们的冲突。仅当 FMFeature 的所有关系都满足时,它才能成为 FMFeatureSelectionSet 的一部分。 | | 基类 | ARObject, Identifiable, MultilanguageReferrable, Referrable | | 属性 | 类型 基数 种类 说明 | | feature | FMFeature 1..* ref 受此 FMFeatureRelation 影响的 FMFeature。 | **表 4.6: FMFeatureRelation** [TPS_FMDT_00020] FMFeatureRelation 的结构 ⌈d⌋ FMFeatureRelation R 在两个 Feature 之间建立二元关系: 1. 聚合 R 的 FMFeature f。 2. R 在 role feature 中引用的 FMFeature f'。 FMFeatureRelation 始终从 f 定向到 f'。 如果 R 在 role feature 中引用 Feature {f1, f2, ..., fn},那么 R 建立 n 个这样的二元关系。⌈c⌋ (RS_FMDT_00008) 关系的特定类型由其 category 属性指定,详见第 4.6.1 节。我们已定义了许多预定义的关系类型,详见第 4.6.3 节。 显然,Feature 不应建立到自身的引用。 [constr_5001] FMFeatureRelation 不应建立自引用 ⌈d⌋ 由 FMFeature f 聚合的 FMFeatureRelation 不应在 role feature 中引用 f。换言之:不允许自引用。⌈c⌋ [constr_5001] 有助于避免诸如"f 冲突 f"之类的冲突关系。请注意,[constr_5001] 不能防止所有可能的冲突;例如,Feature f 可能需要 Feature f',而 Feature f' 又与 f 冲突。由于 FMFeatureRelation 的 category 被设计为可扩展的(参见 [TPS_FMDT_00023]),因此制定涵盖所有可能冲突的约束是不可行的。 #### 4.6.1 属性 category 由于 FMFeatureRelation 是 Identifiable,因此它具有 category 属性。 [TPS_FMDT_00021] FMFeatureRelation 的 category 属性 ⌈d⌋ FMFeatureRelation 的 category 属性指定此实现的关系种类。⌈c⌋ (RS_FMDT_00008) 第 4.6.3 节提供了所有预定义关系的概览。 [TPS_FMDT_00023] FMFeatureRelation 的 category 属性的可扩展性 ⌈d⌋ FMFeatureRelation 的 category 属性可以通过本节中定义的关系类型以外的自有关系类型进行扩展。⌈c⌋ (RS_FMDT_00008) 例如,公司可以定义仅在内部使用(或与选定的客户共享)的自有关系。显然,不再可能与所有人安全地交换此类模型,但对于有限的受众来说是有效的用例。 #### 4.6.2 FMFeatureRelation 的标识与文档化 由于 FMFeatureRelation 基于 Identifiable,它可以包含可选属性 shortName、introduction 和 desc。 [TPS_FMDT_00052] FMFeatureRelation 的标识 ⌈d⌋ 属性 shortName 可用于在 FMFeature 聚合多个 FMFeatureRelation 的情况下区分关系。⌈c⌋ (RS_FMDT_00004) [TPS_FMDT_00061] FMFeatureRelation 的文档化 ⌈d⌋ 属性 introduction 和 desc 可用于为 FMFeatureRelation 提供可读的描述。⌈c⌋ (RS_FMDT_00004) #### 4.6.3 预定义关系 [TPS_FMDT_00019] FMFeatureRelation 的 category 的预定义值 ⌈d⌋ 在以下列表中,f 为在 role relation 中聚合 FMFeatureRelation R 的 Feature,f1, f2, ..., fn 为 R 在 role feature 中引用的 Feature。 - **REQUIRES**:f 仅在 f1, f2, ..., fn 也属于此特性选择时,才可以成为特性选择的一部分。 - **EXCLUDES**:如果 f 是特性选择的一部分,则 f1, f2, ..., fn 不应属于此特性选择。 - **RECOMMENDED_FOR**:如果引用了所引用的一个或多个 Feature,则建议也包含此 Feature。 - **DISCOURAGED_FOR**:与 RECOMMENDED_FOR 相反:如果选择了所引用 Feature 中的一个或多个,则不建议包含此 Feature。 - **IMPACTS**:选择此 Feature 会对所有引用的 Feature 产生影响。"Impacted by" 的意思是,如果选择了所引用的一个或多个 Feature,则此 Feature 会对所选的引用 Feature 产生影响。 - **FUNCTIONAL_DEPENDENT**:此 Feature 与所引用的 Feature 之间存在功能依赖。 对于以下关系,假设 FMFeatures f'1, f'2, ..., f'm 是一组 Feature 集合,每个 Feature 在 role relation 中聚合一个 FMFeatureRelation Ri,f1, f2, ..., fn 是所有 Ri 在 role feature 中引用的公共³ Feature。 - **PROVIDES**:如果 f1, f2, ..., fn 是特性选择的一部分,那么 f'1, f'2, ..., f'm 中至少有一个应是此特性选择的一部分。 RECOMMENDED_FOR、DISCOURAGED_FOR、IMPACTS 和 FUNCTIONAL_DEPENDENT 的详细信息应在属性 introduction 和 desc 中给出,因为它们无法形式化。对于工具而言,这意味着这些关系为进行配置的用户提供提示。相反,对于 REQUIRES 和 EXCLUDES 关系,可以自动导出相应的限制。 ⌈c⌋ (RS_FMDT_00008) [TPS_FMDT_00044] FMFeatureRelation 的语义 ⌈d⌋ 设 S 为特性选择,f 为具有 FMFeatureRelation R(在 role feature 中引用 FMFeature f1, f2, ..., fn)的 FMFeature。那么 R 定义以下条件: **R 的 category 为 REQUIRES** ∀i ∈ {1, ..., n} : f ∈ S ⇒ fi ∈ S **R 的 category 为 EXCLUDES** ∀i ∈ {1, ..., n} : f ∈ S ⇒ fi ∉ S 接下来,设 S 为特性选择,f'1, f'2, ..., f'm 为 FMFeature,每个聚合一个 FMFeatureRelation Ri,该关系在 role feature 中引用一组 Feature FMFeatures Fi。假设所有 Ri 具有相同的 category,设 {f1, f2, ..., fn} = F1 ∩ F2 ∩ ... ∩ Fm 为所有关系 Ri 的公共 Feature。那么 R 定义以下条件: **Ri 的 category 为 PROVIDES** ∀i ∈ {1, ..., n} : fi ∈ S ⇒ ∃1 ≤ j ≤ m : f'j ∈ S 所有其他关系不定义形式化关系。而是属性 introduction 和 desc(因为 FMFeatureRelation 基于 Identifiable 而存在)可以提供限制含义的可读描述。 > ³ 单个 Ri 可以引用其他 FMFeature,但此处我们仅关注公共子集。 ⌈c⌋ (RS_FMDT_00008) 请注意,FMFeatureRelation 仅定义一个条件,并不要求实际满足此条件。这是因为特性选择可能是不完整的。仅在有效的特性选择中(参见 [TPS_FMDT_00030])才必须遵守这些条件。 ### 4.7 层次结构、限制与关系 在本章中,我们定义了引入 Feature 之间关系的三种不同方式:层次结构(第 4.4 节)、限制(第 4.5 节)和关系(第 4.6 节): 1. **层次结构(FMFeatureDecomposition)** 仅影响具有相同 parent⁴ 的同一 category 的 Feature。也就是说,alternative Feature 仅依赖于其 parent 和同样为 alternative Feature 的兄弟节点,multiple Feature 仅依赖于其 parent 和同样为 multiple Feature 的兄弟节点,而 optional 和 mandatory Feature 仅依赖于其 parent。 2. **具有限制的 Feature(FMFeatureRestriction)** 依赖于同一特性模型甚至另一特性模型中的其他 Feature。与之前不同,此处的层次结构中的相对位置不起作用。 这是一种比层次依赖更强大的方法,但限制的处理需要比层次结构定义的限制更谨慎。例如,使用限制很容易引入循环依赖或矛盾。 3. **Feature 之间的关系(FMFeatureRelation)** 还可以引入 Feature 之间的依赖关系,而与它们在特性树中的位置无关,但其范围更为有限。 但是,与限制中 Feature 依赖于其他 Feature 不同,关系可以影响其他 Feature。如果 Feature A 需要 Feature B,那么包含 A 的特性选择也必须包含 B。 > ⁴ 更准确地说,是从同一 FMFeatureDecomposition 的 role feature 中引用的 FMFeature。 ## 5 特性选择 特性模型并不描述单个产品,而是描述具有共同特征的一组产品 — 即产品线。单个产品由 Feature 的特定组合描述。为了有效,这样的 Feature 组合需要遵守特性模型中定义的各种约束:层次结构(第 4.4 节)、限制(第 4.5 节)和关系(第 4.6 节)。 [TPS_FMDT_00060] FMFeatureSelectionSet 的用途 ⌈d⌋ 在 AUTOSAR 中,描述产品的 Feature 集由类 FMFeatureSelectionSet 实现。⌈c⌋ (RS_FMDT_00003) (参见原文 Figure 5.1: Class FMFeatureSelectionSet) ### 5.1 示例 表 5.1 展示了特性选择的示例。 | Feature | Sports Edition | Family Edition | |---------|----------------|----------------| | Engine | + | + | | Gasoline Engine | + | − | | Diesel Engine | − | + | | Engine Controller | + | + | | Gasoline Engine Controller | + | − | | Diesel Engine Controller | − | + | | Doors | + | + | | Two Doors | + | + | | Four Doors | − | + | | Convertible | + | − | | Sunroof | − | + | | Electric window lift | + | + | | Halogen lights | + | + | **表 5.1: 特性选择示例** 我们在此处重用第 1.3 节中的示例特性模型 1.1。在我们的示例中,定义了两个特性选择:Sports Edition 和 Family Edition,对应于两种不同的汽车型号。某些 Feature(例如卤素灯)在两个型号中都可用,而其他 Feature 则不同:Sports Edition 使用汽油发动机,而 Family Edition 使用柴油发动机。 因此,在其基本形式中,特性选择仅是包含在变体¹ 中的 Feature 列表,如示例 5.1 中的加号所示。 在我们的规范中,我们还允许变体继承自其他变体。例如,特定于特定国家/地区(著名的"方向盘在左/右"区别)的所有特性选择可以包含在单独的特性模型中。专为特定国家/地区设计的汽车型号可以简单地包括国家/地区特定的特性模型。 > ¹ 在我们的示例中,只有完整汽车型号的变体。当然这是一种过于简化;在现实世界中,变体的粒度要细得多。例如,可能存在 Sports Edition 或 Family Edition 的特定国家/地区变体。 ### 5.2 类 FMFeatureSelection FMFeatureSelection 表示单个 FMFeature。FMFeatureSelection 具有三个属性 state、minimumSelectedBindingTime 和 maximumSelectedBindingTime。属性 state 定义 Feature 是否实际被选中,或者是否尚未决定。属性 minimumSelectedBindingTime 和 maximumSelectedBindingTime 定义应在哪个绑定时间进行选择。 **类 FMFeatureSelection** | 项目 | 内容 | |------|------| | 包 | M2::AUTOSARTemplates::FeatureModelTemplate | | 说明 | FMFeatureSelection 表示 FMFeatureSelectionSet 中特定 FMFeature 的状态。 | | 基类 | ARObject, Identifiable, MultilanguageReferrable, Referrable | | 属性 | 类型 基数 种类 说明 | | attributeValue | FMAttributeValue * aggr 这定义了在 role definition 中引用的属性的值。
请注意,FMFeatureSelection 不能包含两个引用 role definition 中同一 FMAttributeDef 的 FMAttributeValue。
标签:xml.sequenceOffset=50 | | feature | FMFeature 1 ref 此 FMFeatureSelection 描述其状态的 FMFeature。
标签:xml.sequenceOffset=10 | | maximumSelectedBindingTime | BindingTimeEnum 0..1 attr 定义与此 FMFeature 关联的变化点的绑定时间上限,并细化其 maximumIntendedBindingTime。此属性用作开发过程的提示。
标签:xml.sequenceOffset=40 | | minimumSelectedBindingTime | BindingTimeEnum 0..1 attr 定义与此 FMFeature 关联的变化点的绑定时间下限,并细化其 minimumIntendedBindingTime。此属性用作开发过程的提示。
标签:xml.sequenceOffset=30 | | state | FMFeatureSelectionState 1 attr 定义此 FMFeatureSelection 描述的 FMFeature 如何对 FMFeatureSelectionSet 做出贡献。FMFeature 可以具有状态 selected、deselected 或 undecided。
标签:xml.sequenceOffset=20 | **表 5.2: FMFeatureSelection** #### 5.2.1 引用 feature 引用 feature 指向此 FMFeatureSelection 描述的 Feature。 #### 5.2.2 属性 state FMFeatureSelection 具有一个属性 state,该属性定义由 feature 引用的 Feature 如何对选择做出贡献。 **枚举 FMFeatureSelectionState** | 项目 | 内容 | |------|------| | 包 | M2::AUTOSARTemplates::FeatureModelTemplate | | 说明 | 定义特定 FMFeature 如何对 FMFSelectionSet 做出贡献。 | | 字面值 | 描述 | | deselected | Feature 从选择中排除。
标签:atp.EnumerationValue=0 | | selected | Feature 包含在选择中。
标签:atp.EnumerationValue=1 | | undecided | 尚未决定 Feature 应包含在选择中还是从选择中排除。
标签:atp.EnumerationValue=2 | **表 5.3: FMFeatureSelectionState** 值 undecided 需要进一步解释。在未被其他 FMFeatureSelectionSet 包含的 FMFeatureSelectionSet F 中,值 undecided 没有用 — 在这种情况下,FMFeature 应具有状态 selected 或 deselected(或者 FMFeatureSelection 应完全缺失)。 但是,如果存在包含 F 的 FMFeatureSelectionSet F',则在 F'(而非 F)中设置特定 Feature FMFeature f 的状态值 state 可能很有用。如果 f 在 F 中已具有状态(即 selected 或 deselected),则无法执行此操作。因此,需要 state 的第三个值,可以被覆盖:undecided。有关更详细的说明,请参见第 5.4 节。 在示例 5.1 中,"+" 对应状态 selected,"−" 对应状态 deselected。没有 undecided Feature,因为该示例特意保持简单,并且不使用包含其他特性选择的特性选择。 #### 5.2.3 FMAttributeValue 每个 FMFeatureSelection 在 role attributeValue 中聚合一个 FMAttributeValue。这为该 FMFeatureSelection 上下文中 Feature 的特定属性定义值。 **类 FMAttributeValue** | 项目 | 内容 | |------|------| | 包 | M2::AUTOSARTemplates::FeatureModelTemplate | | 说明 | 这为在 role definition 中引用的属性定义值。 | | 基类 | ARObject | | 属性 | 类型 基数 种类 说明 | | definition | FMAttributeDef 1 ref 这引用此属性的定义。 | | value | Numerical 1 attr 这表示此属性的值。 | **表 5.4: FMAttributeValue** [TPS_FMDT_00053] FMAttributeValue 的语义 ⌈d⌋ FMAttributeValue 为在 role definition 中引用的 FMAttributeDef 定义值。特定值存储在属性 value 中。⌈c⌋ (RS_FMDT_00009) [constr_5027] 类 FMAttributeValue 中 FMAttributeDef 的属性 max 和 min 的语义 ⌈d⌋ 设 v 为引用 role definition 中 FMAttributeDef D 的 FMAttributeValue V 的属性 value。此外,设 min 和 max 为 D 的属性 min 和 max 的值。 那么应满足以下条件: min ≤ v ≤ max ⌈c⌋ 显然,我们不希望存在两个引用同一 FMAttributeDef 的 FMAttributeValue。否则,将不清楚应选择哪个值。 [constr_5028] 每个 FMAttributeDef 仅有一个 FMAttributeValue ⌈d⌋ 设 S 为 FMFeatureSelectionSet,其 FMFeatureSelections 在 role attributeValue 中聚合 FMAttributeValues {v1, v2, ..., vn}。对于每个 vi,设 fi 为 vi 在 role attributeDef 中引用的 FMFeature。那么应满足以下条件: ∀i ∈ {1, ..., n} : i ≠ j ⇒ fi ≠ fj ⌈c⌋ #### 5.2.3.1 示例 Feature 可以定义一个名为 "pc" 的属性,该属性指定此 Feature 的功耗,其值需介于 0 和 1000 毫瓦之间。在这种情况下,Feature 定义一个 FMAttributeDef,其中属性 min 的值为 0,max 的值为 1000。 此外,假设 FMFeature f 具有子 Feature f1、f2、f3 和 f4,它们都是可选的。所有这些 Feature 都定义一个名为 "pc" 的属性。那么 f 可以添加一个 FMFeatureRestriction,以确保其子 Feature 的功耗不超过为 f 分配的功耗: f1.pc + f2.pc + f3.pc + f4.pc < f.pc 如果并非 f1、f2、f3 和 f4 的每个组合都符合 f 的分配功耗,则这可能很有用。 此外,假设 f 的允许功耗取决于车型。在这种情况下,在 role feature 中引用 f 的 FMFeatureSelection 可以定义一个 FMAttributeValue,该值将覆盖 f 的 FMAttributeDef 中给出的默认值。 #### 5.2.4 选定绑定时间 [TPS_FMDT_00055] minimumSelectedBindingTime 和 maximumSelectedBindingTime 的语义 ⌈d⌋ 这两个属性细化在 FMFeatureSelection 在 role feature 中引用的 FMFeature 上定义的 minimumIntendedBindingTime 和 maximumIntendedBindingTime。⌈c⌋ (RS_FMDT_00002, RS_FMDT_00016) [TPS_FMDT_00056] minimumSelectedBindingTime 和 maximumSelectedBindingTime 仅是提示 ⌈d⌋ 属性 minimumSelectedBindingTime 和 maximumSelectedBindingTime 仅用作开发过程的提示,以指导选择正确的可变性实现。⌈c⌋ (RS_FMDT_00002) ### 5.3 类 FMFeatureSelectionSet FMFeatureSelectionSet 在 role selection 中聚合任意数量的 FMFeatureSelection 元素。每个 FMFeatureSelection 对应于特性模型中的特定 Feature,并说明此 Feature 是否包含在选择中。 **类 FMFeatureSelectionSet** | 项目 | 内容 | |------|------| | 包 | M2::AUTOSARTemplates::FeatureModelTemplate | | 说明 | FMFeatureSelectionSet 是描述特定产品的 FMFeature 集合。
标签:atp.recommendedPackage=FMFeatureModelSelectionSets | | 基类 | ARElement, ARObject, CollectableElement, Identifiable, MultilanguageReferrable, PackageableElement, Referrable | | 属性 | 类型 基数 种类 说明 | | featureModel | FMFeatureModel * ref 此 FMFeatureSelectionSet 中的所有 FMFeature 都应是引用的 FMFeatureModel 的一部分。 | | include | FMFeatureSelectionSet * ref 每个 FMFeatureSelectionSet 可以包含一个或多个 FMFeatureSelectionSet。这在 FMFeatureSelectionSet 之间建立层次结构。有关详细信息,请参见 constr_5003 和 constr_5025。 | | selection | FMFeatureSelection * aggr 此 FMFeatureSelectionSet 的 FMFeatureSelection 集合。 | **表 5.5: FMFeatureSelectionSet** #### 5.3.1 术语与约束 FMFeatureSelectionSet 聚合其 FMFeatureSelections,因此特定 FMFeatureSelection 不可能在 FMFeatureSelectionSet 中包含两次。但是,两个或多个 FMFeatureSelections 可以在 role feature 中引用同一 FMFeature,如果 FMFeatureSelections 的状态不同,则可能引入歧义。因此,我们不允许这样做。 [constr_5018] FMFeatureSelectionSet 不应包含同一 Feature 两次 ⌈d⌋ 设 {s1, s2, ..., sn} 为在 role selection 中由 FMFeatureSelectionSet 聚合的 FMFeatureSelection 元素集合。此外,对于每个 si,设 fi 为在 role feature 中引用的 FMFeature。那么应满足以下条件: ∀i, j ∈ {1, 2, ..., n} : i ≠ j ⇒ fi ≠ fj ⌈c⌋ 约束 [constr_5018] 确保 FMFeatureSelectionSet 为其关联的 FMFeatureModel 中的每个 FMFeature 分配唯一状态。 [TPS_FMDT_00009] FMFeatureSelectionSet 的 Feature 集定义 ⌈d⌋ 设 S 为 FMFeatureSelectionSet,{s1, s2, ..., sn} 为在 role selection 中由 S 聚合的 FMFeatureSelections 集合。 那么 S 的 feature set 是 FMFeature 集合 {f1, f2, ..., fn},其中 si 在 role feature 中引用 fi。⌈c⌋ (RS_FMDT_00003) [constr_5018] 确保如果 FMFeatureSelectionSet 聚合 n 个 FMFeatureSelections,那么其 Feature 集的大小也为 n。但是,FMFeatureSelectionSet 不需要枚举关联 FMFeatureModel 的所有 FMFeature。尽管如此,所有 FMFeature 必须来自同一 FMFeatureModel,如 [constr_5023] 所述: [constr_5023] FMFeatureSelectionSet 只能引用关联 FMFeatureModel 中的 FMFeature ⌈d⌋ 设 S 为 FMFeatureSelectionSet,{f1, f2, ..., fn} 为其 Feature 集([TPS_FMDT_00009])。此外,设 {g1, g2, ..., gm} 为 S 在 role featureModel 中引用的 FMFeatureModels 的组合 Feature 集。 那么应满足以下条件:{f1, f2, ..., fn} ⊆ {g1, g2, ..., gm}。⌈c⌋ 请注意,如果 FMFeature f 在 FMFeatureSelectionSet S 中缺失,则其状态不会自动等同于 deselected。只有当 S 不包含另一个 FMFeatureSelectionSet 且未包含在另一个 FMFeatureSelectionSet 中时,才会出现这种情况(另请参见 5.4)。 #### 5.3.2 关系 include FMFeatureSelectionSet 可以在 role include 中引用其他 FMFeatureSelectionSet。如果 FMFeatureSelectionSet A 包含 FMFeatureSelectionSet B,那么 A 选择的总 Feature 是 A 选择的 Feature 和 B 选择的 Feature 之和。 [constr_5024] FMFeatureSelectionSet 不应包含自身 ⌈d⌋ 设 S 为 FMFeatureSelectionSet,S' 为 S 在 role include 中引用的 FMFeatureSelectionSet。 那么应满足以下条件:S ≠ S'。⌈c⌋ 接下来,我们定义一个图结构来描述 FMFeatureSelectionSet 之间的 include 关系: [TPS_FMDT_00032] FMFeatureSelectionSet 的包含图 ⌈d⌋ 设 {S1, S2, ..., Sn} 为 AUTOSAR 模型中所有 FMFeatureSelectionSet 的集合。那么所有 FMFeatureSelectionSet 的包含图是图 G = (V, E),其中 V = {S1, S2, ..., Sn} E = {(Si, Sj) | Si 在 role include 中引用 Sj} ⌈c⌋ (RS_FMDT_00003) 显然,AUTOSAR 模型的包含图允许包含孤立节点 — 即那些独立存在且不包含其他 FMFeatureSelectionSet 或未在其他位置被包含的 FMFeatureSelectionSet。 [constr_5024] 也可以用包含图来描述:包含图不允许自环。下一个约束我们将推广此约束并禁止 include 关系中的循环: [constr_5002] FMFeatureSelectionSet 的 include 关系不应有循环 ⌈d⌋ 设 S 为 FMFeatureSelectionSet,G 为 [TPS_FMDT_00032] 中定义的所有 FMFeatureSelectionSet 的包含图。包含图中不应有循环。⌈c⌋ ### 5.4 state 与 include 考虑以下情况。FMFeatureSelectionSets S、S1 和 S2 包含引用同一 FMFeature f 的 FMFeatureSelections。设 s、s1 和 s2 分别为 S、S1 和 S2 中引用 f 的 FMFeatureSelection 的 state 属性的值。 由此产生两个问题: 1. 如果 S 包含 S1,则 s 可以采用哪些值? 2. 如果 S 包含 S1 和 S2,则 s1 和 s2 的哪些值组合是被允许的,且 s 可以采用哪些值? 在情况 1 中,s 不应覆盖 s1。也就是说,如果 s1 已经是 selected,则 s 不能是 deselected,但可以是 undecided。反之,如果 s1 已经是 deselected,则 s 不能是 selected,但可以是 undecided。最后,如果 s1 是 undecided,则 s 可以采用任何值。 [constr_5003] FMFeatureSelectionSet 不应覆盖所含 Feature 的状态 ⌈d⌋ 设 S 为聚合具有状态 s 且在 role feature 中引用 FMFeature f 的 FMFeatureSelection 的 FMFeatureSelectionSet。此外,设 S1 为聚合具有状态 s1 且在 role feature 中引用同一 FMFeature f 的 FMFeatureSelection 的 FMFeatureSelectionSet。最后假设 S 在 role include 中引用 S1。 那么应满足以下条件: 1. 如果 s1 的 state 属性的值是 undecided,则 s 的 state 属性的值可以是 selected、deselected 和 undecided。 2. 如果 s1 的 state 属性的值是 selected 或 deselected,则 s 的 state 属性的值应与 s1 中的 state 属性相同,或者是 undecided。 3. 任何其他组合都被视为错误。 ⌈c⌋ | | s (S 中的状态) | s1 (S1 中的状态) | |---|---|---| | 有效 | selected | selected | | 无效 | selected | deselected | | 有效 | selected | undecided | | 无效 | deselected | selected | | 有效 | deselected | deselected | | 有效 | deselected | undecided | | 有效 | undecided | selected | | 有效 | undecided | deselected | | 有效 | undecided | undecided | **表 5.6: 摘要:FMFeatureSelectionSet S 包含 S1** 行为总结于表 5.6 中。某些组合被标记为无效;这些是 Feature 的状态(已是 selected 或 deselected)将被覆盖为不同值的情况。 在情况 2 中,区别在于不仅存在 s1,还存在 s2。因此,我们需要确保 s1 和 s2 不会对 f 做出矛盾的陈述。也就是说,不应发生 s1 为 selected 而 s2 为 deselected 的情况,反之亦然。同样,s1 或 s2 中的 undecided 是无关紧要的。 [constr_5025] FMFeatureSelectionSet 不应覆盖所含 Feature 的状态 ⌈d⌋ 设 S 为聚合具有状态 s 且在 role feature 中引用 FMFeature f 的 FMFeatureSelection 的 FMFeatureSelectionSet。此外,设 S1(S2)为聚合具有状态 s1(s2)且在 role feature 中引用同一 FMFeature f 的 FMFeatureSelection 的 FMFeatureSelectionSet。最后假设 S 在 role include 中引用 S1 和 S2。 那么应满足以下条件: 1. 如果 s1 和 s2 的 state 属性的值都是 undecided,则 s 的 state 属性的值可以是 selected、deselected 或 undecided。 2. 如果 s1 的 state 属性的值是 undecided,s2 的 state 属性的值是 selected 或 deselected,则 s 的 state 属性的值应与 s2 中的 state 属性相同,或者是 undecided。 3. 如果 s2 的 state 属性的值是 undecided,s1 的 state 属性的值是 selected 或 deselected,则 s 的 state 属性的值应与 s1 中的 state 属性相同,或者是 undecided。 4. 如果 s1 和 s2 的 state 属性的值都是 selected 或 deselected,则 s 的 state 属性的值应与 s1 中的属性相同,或者是 undecided。 5. 任何其他组合都被视为错误。 ⌈c⌋ 此行为总结于表 5.7。 | | s (S 中的状态) | s1 (S1 中的状态) | s2 (S2 中的状态) | |---|---|---|---| | 有效 | selected | selected | selected | | 无效 | selected | selected | deselected | | 有效 | selected | selected | undecided | | 无效 | selected | deselected | selected | | 无效 | selected | deselected | deselected | | 无效 | selected | deselected | undecided | | 有效 | selected | undecided | selected | | 无效 | selected | undecided | deselected | | 有效 | selected | undecided | undecided | | 无效 | deselected | selected | selected | | 无效 | deselected | selected | deselected | | 无效 | deselected | selected | undecided | | 无效 | deselected | deselected | selected | | 有效 | deselected | deselected | deselected | | 有效 | deselected | deselected | undecided | | 无效 | deselected | undecided | selected | | 有效 | deselected | undecided | deselected | | 有效 | deselected | undecided | undecided | | 有效 | undecided | selected | selected | | 无效 | undecided | selected | deselected | | 有效 | undecided | selected | undecided | | 无效 | undecided | deselected | selected | | 有效 | undecided | deselected | deselected | | 有效 | undecided | deselected | undecided | | 有效 | undecided | undecided | selected | | 有效 | undecided | undecided | deselected | | 有效 | undecided | undecided | undecided | **表 5.7: 摘要:FMFeatureSelectionSet S 包含 S1 和 S2** ### 5.5 有效的特性选择 [TPS_FMDT_00030] 有效的特性选择定义 ⌈d⌋ 设 S 为 FMFeatureSelectionSet,F 为 S 的 Feature 集。如果 S 遵守以下所有约束,则 S 是有效的特性选择: - [TPS_FMDT_00046](FMFeatureDecomposition 的语义) - [TPS_FMDT_00045](FMFeatureRestriction 的语义) - [TPS_FMDT_00044](FMFeatureRelation 的语义) ⌈c⌋ (RS_FMDT_00003, RS_FMDT_00005, RS_FMDT_00008) ## 6 特性映射 在 AUTOSAR 变体处理中,变化点由系统常量控制。每个变化点包含一个布尔表达式¹,该表达式确定此变化点是"on"还是"off"。AUTOSAR 公式语言允许引用 SwSystemconsts 作为操作数(参见 [TPS_GST_00001])。这与用于为 FMFeature 建模限制的表达式类型相同,不同之处在于这些限制基于对其他 FMFeature 的引用,而非对 SwSystemconsts 的引用。 因此,为了将 Feature 与变化点关联起来,我们需要一种数据结构,该结构根据所选 Feature 为 SwSystemconsts 分配值。这由类 FMFeatureMap 实现。 > ¹ 我们在这里稍微简化一下;这仅对非 PostBuild 变化点严格成立。PostBuild 变化点不使用表达式,而是将系统常量的值与特定 PostBuildVariantCondition 进行比较。 ### 6.1 示例 在示例 1.1 中,我们引入了一个可选 Feature "Four Doors",它为汽车型号增加了两个门。示例 6.1 显示了一个汽车型号的 XML 表示的一小段,该汽车型号包含两个 SwComponentPrototypes(名为 LeftDoorController 和 RightDoorController),它们受变体控制。 **Listing 6.1: 变化点 LeftDoorController 和 RightDoorController 的示例** ```xml 1 LeftDoorController 2 3 DoorController 4 5 6 Left 7 8 HAS_LEFT_DOOR_CNTLR == 1 9 10 11 12 13 RightDoorController 14 15 DoorController 16 17 18 Right 19 20 HAS_RIGHT_DOOR_CNTLR == 1 21 22 23 24 ``` 变化点的条件在第 9 行和第 21 行。在这些条件中,我们引用了系统常量 HAS_LEFT_DOOR_CNTLR 和 HAS_RIGHT_DOOR_CNTLR 并检查它们是否具有值 1。 假设我们有一个 FMFeatureSelectionSet,其中包含一个 FMFeatureSelection,该 FMFeatureSelection 引用名为 "Four Doors" 的 Feature 并具有状态 selected(参见第 5.2.2 节)。那么我们需要确保将值 1 分配给系统常量 HAS_LEFT_DOOR_CNTLR 和 HAS_RIGHT_DOOR_CNTLR。以伪编程语言表示,这看起来如下: ``` if has_feature('Four Doors') == 1 then set_sysc('HAS_LEFT_DOOR_CNTLR', 1) set_sysc('HAS_RIGHT_DOOR_CNTLR', 1) end ``` 这表明一个 Feature 可以影响多个系统常量。 为了进一步扩展我们的示例,假设存在一个约束,禁止本示例中的控制器在非欧洲国家/地区使用。(这也可以作为限制添加到特性模型中,但此类技术约束有时作为映射的一部分处理。)在这些国家/地区使用替代控制器。我们需要相应地扩展上述伪代码: ``` if has_feature('Four Doors') == 1 && has_feature('EuropeanCountry') == 1 then set_sysc('HAS_LEFT_DOOR_CNTLR', 0) set_sysc('HAS_RIGHT_DOOR_CNTLR', 0) end if has_feature('Four Doors') == 1 && has_feature('EuropeanCountry') == 0 then set_sysc('HAS_ALTERNATE_LEFT_DOOR_CNTLR', 1) set_sysc('HAS_ALTERNATE_RIGHT_DOOR_CNTLR', 1) end ``` 现在,我们有两组对系统常量的赋值以及复杂的条件。 ### 6.2 概述 (参见原文 Figure 6.1: Class FMFeatureMap) FMFeatureMap 聚合若干 FMFeatureMapElements: - 在最简单的情况下,FMFeatureMapElement 在选择或取消选择某个 Feature 时为系统常量选择一个值。 - 在一般情况下,FMFeatureMapElement 在选择某组 Feature 时为系统常量和 postbuild variant criteria 的集合选择值。 我们在前一段中使用"选择(chooses)"一词而非"分配(assigns)",因为"分配"将意味着系统常量表现得像典型编程语言中的变量,可以被声明、可能初始化并在以后分配值。 这里的情况并非如此。首先,AUTOSAR 没有"稍后分配值"的概念。系统常量只能被声明和初始化,但不能在之后更改。其次,特性模型是可选的,因此所有系统常量都必须在 AUTOSAR 模型的非可选部分中声明和初始化,而非可选部分不能(也无法)了解特性模型。 ### 6.3 类 FMFeatureMap FMFeatureMap 在 role mapping 中聚合若干 FMFeatureMapElements。 **类 FMFeatureMap** | 项目 | 内容 | |------|------| | 包 | M2::AUTOSARTemplates::FeatureModelTemplate | | 说明 | FMFeatureMap 将 FMFeature 与 AUTOSAR 模型中的变化点关联。为此,它定义了当遇到特定的 Feature(和系统常量)组合时应选择系统常量和 postbuild variant criteria 的值集。
标签:atp.recommendedPackage=FMFeatureMaps | | 基类 | ARElement, ARObject, CollectableElement, Identifiable, MultilanguageReferrable, PackageableElement, Referrable | | 属性 | 类型 基数 种类 说明 | | mapping | FMFeatureMapElement * aggr 此 FMFeatureMap 定义的映射集合。 | **表 6.1: FMFeatureMap** ### 6.4 类 FMFeatureMapElement **类 FMFeatureMapElement** | 项目 | 内容 | |------|------| | 包 | M2::AUTOSARTemplates::FeatureModelTemplate | | 说明 | 定义当遇到特定的 Feature(和系统常量)组合时应选择的系统常量和 postbuild variant criteria 的值集。 | | 基类 | ARObject, Identifiable, MultilanguageReferrable, Referrable | | 属性 | 类型 基数 种类 说明 | | assertion | FMFeatureMapAssertion * aggr 定义基于 Feature 和系统常量的布尔表达式,该表达式需要求值为真才能使此映射激活。 | | condition | FMFeatureMapCondition * aggr 定义需要满足的条件才能使此映射激活。 | | postBuildVariantCriterionValueSet | PostBuildVariantCriterionValueSet * ref 为 postbuild variant criteria 选择一组值。 | | swSystemconstantValueSet | SwSystemconstantValueSet * ref 为系统常量选择一组值。 | **表 6.2: FMFeatureMapElement** 每个 FMFeatureMapElement 包含两种断言: - 若干 FMFeatureMapConditions(在 role condition 中)。 FMFeatureMapCondition 在 role fmCond 中聚合一个类 FMFormulaByFeaturesAndAttributes 的布尔表达式(参见第 7.2.1 节)。这与 FMFeature 用于实现 FMFeatureRestrictions 的表达式种类相同。事实上,它服务于非常相似的目的:仅当 FMFeatureMapElement 的至少一个 FMFeatureMapCondition 求值为真时,FMFeatureMapElement 才是活动的。 - 若干 FMFeatureMapAssertions(在 role assertion 中)。 FMFeatureMapAssertion 在 role fmSyscond 中聚合布尔表达式 FMConditionByFeaturesAndSwSystemconsts(参见第 7.2.4 节)。仅当 FMFeatureMapElement 的所有 FMFeatureMapAssertions(更准确地说,是在 role fmSyscond 中聚合的公式)求值为真时,FMFeatureMapElement 才是活动的。 FMFeatureMapCondition 和 FMFeatureMapAssertion 都是 Identifiable,这意味着它们每个都有一个 shortName 属性,可用于标识各个条件和断言,以及用于文档化目的的 desc 和 introduction。 还有两个为系统常量或 postbuild variant criteria 选择值的元素: - 若干 SwSystemconstantValueSet,在 role swSystemconstantValueSet 中引用。 - 若干 PostBuildVariantCriterionValueSets,在 role postBuildVariantCriterionValueSet 中引用。 为每个 Feature 选择多个系统常量或 postbuild variant criteria 的值的原因在于,Feature 是比变化点更高层次的概念。例如,在两种不同软件组件(例如 "basic" 和 "comfort" 变体)之间切换的 Feature 实际上触发了多个变化点:不仅软件组件会改变,而且它们的端口和连接器也会改变。除非所有变化点都依赖于同一系统常量,否则这意味着我们需要为多个系统常量选择值。 ### 6.5 与 PredefinedVariant 的关系 类 SwSystemconstantValueSet 和 PostBuildVariantCriterionValueSet 原本是变体处理([1])中 PredefinedVariant 结构的一部分。PredefinedVariant 表示特定变体,作为由 SwSystemconstValue 和 PostBuildVariantCriterionValue([TPS_GST_00280])表示的 variant selectors 的给定设置组合。 PredefinedVariant 可以视为 SwSystemconstantValueSet 和 PostBuildVariantCriterionValueSet 的列表。这与没有条件也没有断言的映射非常相似。 实际上,我们可以使用对 PredefinedVariant 的引用,而不是对 SwSystemconstantValueSet 和 PostBuildVariantCriterionValueSet 的引用。但是,PredefinedVariant 通常具有比 FMFeatureMapElement 中所需更粗的粒度。因此,我们不要求调整 PredefinedVariant 的粒度,而是引用各个 SwSystemconstantValueSet 和 PostBuildVariantCriterionValueSet。通常,这些将是同一 PredefinedVariant 的子集。 构造 FMFeatureMapElement 的典型方法是查看相应的 PredefinedVariant,然后选择与给定映射相关的 SwSystemconstantValueSet 和 PostBuildVariantCriterionValueSet。 ### 6.6 它是如何工作的 [TPS_FMDT_00037] FMFeatureMapElement 的语义 ⌈d⌋ 设 M 为 FMFeatureMapElement。如果以下表达式求值为真: 1. 在 role condition 中从 M 引用的至少一个 FMFeatureMapCondition 元素。 2. 在 role assertion 中从 M 引用的所有 FMFeatureMapAssertions。 那么处理器应使用在 role swSystemconstantValueSet 中从 M 引用的 SwSystemconstantValueSet 以及在 role postBuildVariantCriterionValueSet 中从 M 引用的 PostBuildVariantCriterionValueSet,为关联的 SwSystemconsts 和 PostBuildVariantCriterions 选择值。⌈c⌋ (RS_FMDT_00010) **类 FMFeatureMapCondition** | 项目 | 内容 | |------|------| | 包 | M2::AUTOSARTemplates::FeatureModelTemplate | | 说明 | 定义需要满足的条件才能使此映射激活。该条件实现为基于 Feature 和属性的公式,由 fmCond 定义。 | | 基类 | ARObject, Identifiable, MultilanguageReferrable, Referrable | | 属性 | 类型 基数 种类 说明 | | fmCond | FMConditionByFeaturesAndAttributes 1 aggr 实现该条件的公式。 | **表 6.3: FMFeatureMapCondition** **类 FMFeatureMapAssertion** | 项目 | 内容 | |------|------| | 包 | M2::AUTOSARTemplates::FeatureModelTemplate | | 说明 | 定义必须求值为真才能使此映射激活的布尔表达式。该表达式是基于 Feature 和系统常量的公式,由 fmSyscond 定义。 | | 基类 | ARObject, Identifiable, MultilanguageReferrable, Referrable | | 属性 | 类型 基数 种类 说明 | | fmSyscond | FMConditionByFeaturesAndSwSystemconsts 1 aggr 实现该断言的公式。 | **表 6.4: FMFeatureMapAssertion** **类 SwSystemconstantValueSet** | 项目 | 内容 | |------|------| | 包 | M2::AUTOSARTemplates::GenericStructure::VariantHandling | | 说明 | 此元类表示指定一组系统常量值的能力。
标签:atp.recommendedPackage=SwSystemconstantValueSets | | 基类 | ARElement, ARObject, CollectableElement, Identifiable, MultilanguageReferrable, PackageableElement, Referrable | | 属性 | 类型 基数 种类 说明 | | swSystemconstantValue | SwSystemconstValue * aggr 这是系统常量的一个特定值。 | **表 6.5: SwSystemconstantValueSet** **类 PostBuildVariantCriterionValueSet** | 项目 | 内容 | |------|------| | 包 | M2::AUTOSARTemplates::GenericStructure::VariantHandling | | 说明 | 此元类表示能够表示一组 postBuildVariantCriterionValues 的能力。
标签:atp.recommendedPackage=PostBuildVariantCriterionValueSets | | 基类 | ARElement, ARObject, CollectableElement, Identifiable, MultilanguageReferrable, PackageableElement, Referrable | | 属性 | 类型 基数 种类 说明 | | postBuildVariantCriterionValue | PostBuildVariantCriterionValue * aggr 这是作为 PostBuildVariantSet 一部分的特定 postbuild variant criterion/value 对。 | **表 6.6: PostBuildVariantCriterionValueSet** ### 6.7 哪些变化点受特定 FMFeature 影响 由于 FMFeatureMap 不直接引用 VariationPoint 元素,因此不易看出哪些变化点受特定 Feature 影响。 首先,我们需要查看 SwSystemconstantValueSet 和 PostBuildVariantCriterionValueSet,以查看这些 SwSystemconst 和 PostBuildVariantCriterion 元素实际受到哪些影响。图 6.2 和图 6.3 说明了这一点。 (参见原文 Figure 6.2: SwSystemconstantValueSet and SwSystemconstValue) (参见原文 Figure 6.3: PostBuildVariantCriterionValueSet and PostBuildVariantCriterionValue) 接下来,我们需要查看所有变化点,以查看这些 SwSystemconst 和 PostBuildVariantCriterion 在哪里被引用。图 6.4 显示了变化点的结构。虽然 PostBuildVariantCriterion 在图 6.4 中直接可见,但 SwSystemconst 将从 ConditionByFormula 中引用。 (参见原文 Figure 6.4: Variation Point) 用于查找受单个 FMFeatureMapElement 影响的变化点的算法在 [TPS_FMDT_00025] 中概述。 [TPS_FMDT_00025] FMFeatureMapElement 的受影响变化点集合 ⌈d⌋ 1. 设 e 为 FMFeatureMapElement。 2. 设 S = {s1, s2, ..., sn} 为在 role swSystemconstantValueSet 中由 e 聚合的 SwSystemconstantValueSet 元素的集合。 3. 每个 SwSystemconstantValueSet si 在 role swSystemconstantValue 中聚合若干 SwSystemconstValue 元素,这些元素又依次在 role swSystemconst 中引用单个 SwSystemconst 元素。设 SCi 为每个 si 的这些 SwSystemconst 元素的集合。 4. SCi 中的每个 SwSystemconst 用于一个或多个 VariationPoints 的条件中。更准确地说,SwSystemconsts 从 ConditionByFormula 元素² 中引用,这些元素在 role swSyscond 中由 VariationPoint 聚合。设 Vi 为 SCi 中所有元素的这些变化点的集合。 > ² ConditionByFormula 元素是使用 SwSystemconst 元素作为变量的表达式。 5. 设 P = {p1, p2, ..., pm} 为在 role postBuildVariantCriterionValueSet 中由 e 聚合的 PostBuildVariantCriterionValueSet 元素的集合。 6. 每个 PostBuildVariantCriterionValueSet pj 在 role postBuildVariantCriterionValue 中聚合若干 PostBuildVariantCriterionValue 元素,这些元素又依次在 role variantCriterion 中引用 PostBuildVariantCriterion。设 PCj 为 PostBuildVariantCriterion 元素的集合。 7. 每个 PostBuildVariantCriterion 元素用于一个变化点中。更准确地说,VariationPoint 聚合一个 PostBuildVariantCondition,该条件又依次引用 PostBuildVariantCriterion。设 V'j 为 PCj 中所有元素的这些变化点的集合。 FMFeatureMapElement e 的受影响变化点集合定义如下: ``` affected variation points(e) = ⋃ᵢ Vi ⋃ ⋃ⱼ V'ⱼ ``` ⌈c⌋ (RS_FMDT_00010) 通过 [TPS_FMDT_00025],我们现在可以收集 FMFeature 的受影响变化点。 [TPS_FMDT_00038] FMFeature 的受影响变化点定义 ⌈d⌋ 1. 设 f 为 FMFeature。 2. 设 C 为在 role fmCond 中聚合 FMFeatureMapCondition 的 FMFeatureMapElement 元素的集合,所聚合的 FMFormulaByFeaturesAndAttributes 元素在 role definition 中引用 f。 3. 设 A 为在 role fmSyscond 中聚合 FMFeatureMapAssertion 的 FMFeatureMapElement 元素的集合,所聚合的 FMConditionByFeaturesAndSwSystemconsts 元素引用 f。 ``` affected variation points(f) = affected variation points(C) ⋃ affected variation points(A) ``` ⌈c⌋ (RS_FMDT_00010) ## 7 通用概念 ### 7.1 特性模型上下文中的特殊数据 通常,特性模型在外部系统中维护,特性模型的 AUTOSAR 表示是该模型的导出。为了维护与外部模型(或者可能与特性模型交互的其他系统)的关系,通常有必要添加应用程序特定的数据,例如自定义标识符。 [TPS_FMDT_00033] 特性模型的特殊数据 ⌈d⌋ 特性模型概念中的几个主要类基于抽象类 ARElement: - FMFeatureModel - FMFeature - FMFeatureSelectionSet - FMFeatureMap 以下类基于抽象类 Identifiable: - FMFeatureRestriction - FMFeatureRelation - FMAttributeDef - FMFeatureMapCondition - FMFeatureMapAssertion 这些类在 role adminData 中聚合 AdminData,AdminData 在 role sdg 中聚合 Sdg(special data group)。Sdg 是一个容器,旨在保存专有的、应用程序特定的数据,可由将特性模型导出到 AUTOSAR 模型的应用程序使用以添加其自身数据。⌈c⌋ (RS_FMDT_00001, RS_FMDT_00012, RS_FMDT_00013) 显然,这也意味着 Sdg 中包含的数据不适合在任意各方之间交换,而仅适合在知道如何解释它的各方之间交换。 ### 7.2 使用 Feature 的公式 (参见原文 Figure 7.1: Formulas used in Feature Modeling) #### 7.2.1 FMFormulaByFeaturesAndAttributes **类** «atpMixedString» FMFormulaByFeaturesAndAttributes (abstract) **包** M2::AUTOSARTemplates::FeatureModelTemplate **说明** 具有 AUTOSAR 公式语言语法但仅使用对 Feature 或 Feature 属性的引用(而非系统常量)作为操作数的表达式。 **基类** ARObject, FormulaExpression **子类** FMConditionByFeaturesAndAttributes **属性** 类型 基数 种类 说明 attribute FMAttributeDef 1 ref FMFormulaByFeaturesAndAttributes 类型的表达式可以引用 FMFeature 的属性。 feature FMFeature 1 ref FMFormulaByFeaturesAndAttributes 类型的表达式可以引用 FMFeature。 **表 7.1: FMFormulaByFeaturesAndAttributes** 类 FMFormulaByFeaturesAndAttributes 定义了使用与标准 AUTOSAR 公式语言相同结构(参见 [1])的表达式,但使用 Feature 和 Feature 属性代替系统常量。 这由抽象类 FMFormulaByFeaturesAndAttributes 表达,它基于 FormulaExpression,但限制公式使其只能引用 FMFeature 和 FMAttributeDef,而不能引用 SwSystemconsts。 [constr_5011] FMFormulaByFeaturesAndAttributes 可以引用 FMFeature 和 FMAttributeDef,但不能引用系统常量 ⌈d⌋ FMFormulaByFeaturesAndAttributes 类的公式是使用 FMFeature 和 FMAttributeDef 的表达式,但不允许使用 SwSystemconsts。⌈c⌋ 此类公式中不允许使用系统常量,因为系统常量被视为实现的一部分,而 Feature(和 Feature 属性)从实现中抽象出来。 #### 7.2.2 FMConditionByFeaturesAndAttributes **类** «atpMixedString» FMConditionByFeaturesAndAttributes **包** M2::AUTOSARTemplates::FeatureModelTemplate **说明** 具有 AUTOSAR 公式语言语法但仅使用对 Feature 或 Feature 属性的引用(而非系统常量)作为操作数的布尔表达式。 **基类** ARObject, FMFormulaByFeaturesAndAttributes, FormulaExpression **属性** 类型 基数 种类 说明 – – – – – **表 7.2: FMConditionByFeaturesAndAttributes** [TPS_FMDT_00049] FMConditionByFeaturesAndAttributes 的结果被解释为布尔值。⌈d⌋ FMConditionByFeaturesAndAttributes 类的公式的结果应被解释为布尔值,其中 0 应被解释为 false,任何不同于 0 的值应被解释为 true。这与 ConditionByFormula 使用的方法相同。⌈c⌋ (RS_FMDT_00008, RS_FMDT_00010) 类 FMConditionByFeaturesAndAttributes 的元素由类 FMFeatureRestriction 在 role restriction 中聚合,并由类 FMFeatureMapCondition 在 role fmCond 中聚合。 #### 7.2.3 FMFormulaByFeaturesAndSwSystemconsts **类** «atpMixedString» FMFormulaByFeaturesAndSwSystemconsts (abstract) **包** M2::AUTOSARTemplates::FeatureModelTemplate **说明** 具有 AUTOSAR 公式语言语法并可使用对 Feature 或系统常量的引用作为操作数的表达式。 **基类** ARObject, FormulaExpression, SwSystemconstDependentFormula **子类** FMConditionByFeaturesAndSwSystemconsts **属性** 类型 基数 种类 说明 feature FMFeature 1 ref FMFormulaByFeaturesAndSwSystemconsts 类型的表达式可以引用 FMFeature。 **表 7.3: FMFormulaByFeaturesAndSwSystemconsts** 类 FMFormulaByFeaturesAndSwSystemconsts 使用标准 AUTOSAR 公式语言,但使用 Feature 扩展它。也就是说,与仅允许引用 SwSystemconsts 的 SwSystemconstDependentFormula 不同,FMFormulaByFeaturesAndSwSystemconsts 允许引用 SwSystemconsts 和 FMFeature。 [TPS_FMDT_00048] FMFormulaByFeaturesAndSwSystemconsts 可以引用 Feature 和系统常量 ⌈d⌋ FMFormulaByFeaturesAndSwSystemconsts 类的公式是同时使用 FMFeature 和 SwSystemconsts 的表达式。⌈c⌋ (RS_FMDT_00008, RS_FMDT_00010) #### 7.2.4 FMConditionByFeaturesAndSwSystemconsts **类** «atpMixedString» FMConditionByFeaturesAndSwSystemconsts **包** M2::AUTOSARTemplates::FeatureModelTemplate **说明** 具有 AUTOSAR 公式语言语法并可使用对 Feature 或系统常量的引用作为操作数的布尔表达式。 **基类** ARObject, FMFormulaByFeaturesAndSwSystemconsts, FormulaExpression, SwSystemconstDependentFormula **属性** 类型 基数 种类 说明 – – – – – **表 7.4: FMConditionByFeaturesAndSwSystemconsts** [TPS_FMDT_00050] FMConditionByFeaturesAndSwSystemconsts 的结果被解释为布尔值。⌈d⌋ FMConditionByFeaturesAndSwSystemconsts 类的公式的结果应被解释为布尔值,其中 0 应被解释为 false,任何不同于 0 的值应被解释为 true。这与 ConditionByFormula 使用的方法相同。⌈c⌋ (RS_FMDT_00008, RS_FMDT_00010) 类 FMConditionByFeaturesAndSwSystemconsts 的元素由 FMFeatureMapAssertion 在 role fmSyscond 中聚合,以定义 Feature 映射的断言。 #### 7.2.5 求值使用 Feature 和 Attribute 的表达式 使用 Feature 或 Feature 属性的表达式只能在 FMFeatureSelectionSet 的上下文中求值。原因在于,为了对表达式求值,我们需要为 Feature 引用(如果 selected 则为 1,否则为 0)和 Feature 属性引用(默认值或在 FMFeatureSelection 中定义的值)替换值。此信息仅作为 FMFeatureSelectionSet 的一部分可用。 首先,我们需要扩展 FMFeatureSelectionSet 的 Feature 集的定义,以添加 include 中所有 FMFeatureSelectionSet 中的 Feature: [TPS_FMDT_00059] FMFeatureSelectionSet 的递归 Feature 集定义 ⌈d⌋ 设 S 为在 role include 中引用 FMFeatureSelectionSets {S1, S2, ..., Sn} 的 FMFeatureSelectionSet。 那么 S 的递归 Feature 集定义如下: recursive feature set(S) = feature set(S) ⋃ ⋃(Si) recursive feature set(Si) ⌈c⌋ (RS_FMDT_00003) 接下来,我们定义 FMFeature 在 FMFeatureSelectionSet 中的状态。同样,此定义包括所有 include 中 FMFeatureSelectionSet: [TPS_FMDT_00058] FMFeature 在 FMFeatureSelectionSet 中的状态定义 ⌈d⌋ 设 f 为 FMFeature,S 为 f 在 S 的递归 Feature 集中的 FMFeatureSelection。那么 f 在 S 中的状态定义如下: 1. 如果 f 在 S 的 Feature 集中,设 s 为在 role feature 中引用 f 的 FMFeatureSelection。 那么 f 在 S 中的状态是 s 的 state 属性的值。 2. 如果 f 不在 S 的 Feature 集中,设 {S1, S2, ..., Sn} 为 S 在 role include 中引用的 FMFeatureSelectionSet。由于 f 在 S 的递归 Feature 集中,因此应至少有一个 Si 定义 f 的状态。 那么 f 在 S 中的状态是 f 在 Si 中的状态。 ⌈c⌋ (RS_FMDT_00003) 请注意,[TPS_FMDT_00058] 中的第二步检索一致的结果(即没有 selected 和 deselected 等冲突状态),这要归功于约束 [constr_5003] 和约束 [constr_5025]。 [TPS_FMDT_00057] 求值使用 Feature 和 Attribute 的表达式 ⌈d⌋ 设 S 为 FMFeatureSelectionSet。要对使用属性的表达式求值,应执行以下步骤。 1. 将所有对 SwSystemconsts 的引用替换为其值。 2. 对于每个对 FMFeature f 的引用,我们区分两种情况。 (a) f 在 S 的递归 Feature 集中。 i. 如果 f 在 S 中的状态是 selected,那么 f 的引用将替换为值 1。 ii. 如果 f 在 S 中的状态是 deselected,那么 f 的引用将替换为值 0。 iii. 如果 f 在 S 中的状态是 undecided,则视为错误。 (b) f 不在 S 的递归 Feature 集中。这被视为错误。 3. 对于每个对 FMAttributeDef 的引用: (a) 如果 S 在 role selection 中聚合 FMFeatureSelection s,s 聚合 FMAttributeValue v,v 在 role definition 中引用 a,那么该引用将替换为 v 的 value 属性的内容。 (b) 否则,设 {S1, S2, ..., Sn} 为 S 在 role include 中引用的 FMFeatureSelectionSet。对所有 Si 元素递归重复上一步。 (c) 否则,如果 a 具有 defaultValue,那么该引用将替换为 a 的属性 defaultValue 的内容。 (d) 如果以上步骤都无法找到值,则视为错误。 ⌈c⌋ (RS_FMDT_00008, RS_FMDT_00010) 请注意,当我们在 [TPS_FMDT_00057] 中查找属性的值时,我们不查看 FMFeatureSelection 的状态。也就是说,FMAttributeValue 也可以从状态为 deselected 的 FMFeatureSelection 中获取。由创建特性模型、特性选择和特性映射的一方决定这是否合适,并最终适当调整条件。 ## A 术语表 **Artifact(工件)** 这是提供具体工作产品类型描述和定义的工作产品定义。Artifact 可以由其他 Artifact 组成([5])。在高层级,Artifact 表示为单个概念文件。 **AUTOSAR Tool(AUTOSAR 工具)** 这是支持方法论中定义为 AUTOSAR 任务的一个或多个任务的软件工具。根据受支持的任务,AUTOSAR 工具可用作 authoring tool、converter tool、processor tool 或它们的组合(参见单独的定义)。 **AUTOSAR Authoring Tool(AUTOSAR 创作工具)** 用于创建和修改 AUTOSAR XML 描述的 AUTOSAR 工具。示例:System Description Editor。 **AUTOSAR Converter Tool(AUTOSAR 转换工具)** 用于通过转换其他 AUTOSAR XML 文件中的信息来创建 AUTOSAR XML 文件的 AUTOSAR 工具。示例:ECU Flattener。 **AUTOSAR Definition(AUTOSAR 定义)** 这是可以具有值的参数的定义。可以说参数值是定义的实例。但在 AUTOSAR 的元模型层次结构中,定义也是元模型的实例,因此被视为描述。AUTOSAR 定义的示例包括:EcucParameterDef、PostBuildVariantCriterion、SwSystemconst。 **AUTOSAR XML Description(AUTOSAR XML 描述)** 在 AUTOSAR 中,这意味着"已填充的模板"。实际上,AUTOSAR XML 描述是 AUTOSAR 模型的 XML 表示形式。 AUTOSAR XML 描述可以由多个文件组成。每个单独的文件表示一个 AUTOSAR partial model,并且应成功根据 AUTOSAR XML 模式进行验证。 **AUTOSAR Meta-Model(AUTOSAR 元模型)** 这是定义用于描述 AUTOSAR 系统的语言的 UML2.0 模型。AUTOSAR 元模型是 AUTOSAR 模板的 UML 表示形式。UML2.0 类图用于描述属性及其相互关系。使用原型、UML 标签和 OCL 表达式(对象约束语言)来定义特定语义和约束。 **AUTOSAR Meta-Model Tool(AUTOSAR 元模型工具)** 这是生成 AUTOSAR 元模型的不同视图(类表、约束列表、图、XML 模式等)的工具。 **AUTOSAR Model(AUTOSAR 模型)** 这是 AUTOSAR 产品的表示形式。AUTOSAR 模型表示适用于 AUTOSAR 方法论中预期使用的方面。 严格来说,这是 AUTOSAR 元模型的实例。AUTOSAR 模型中包含的信息可以是根据 AUTOSAR 元模型可表示的任何内容。 **AUTOSAR Partial Model(AUTOSAR 部分模型)** 在 AUTOSAR 中,模型的可能分区在元模型中由 atpSplitable 标记。一个部分模型在 AUTOSAR XML 描述中由一个文件表示。部分模型不需要满足适用于 AUTOSAR 模型的所有语义约束。 **AUTOSAR Processor Tool(AUTOSAR 处理工具)** 用于通过处理 AUTOSAR XML 文件中的信息来创建非 AUTOSAR 文件的 AUTOSAR 工具。示例:RTE Generator。 **AUTOSAR Specification Element(AUTOSAR 规范元素)** 是作为 AUTOSAR 规范一部分的命名元素。示例:需求、约束、规范项、元模型中的类或属性、方法论、可交付物、方法论活动、模型元素、bsw 模块等。 **AUTOSAR Template(AUTOSAR 模板)** "模板"一词在 AUTOSAR 中用于描述不同种类描述的格式。"模板"一词源于这样的思想:AUTOSAR 定义了一种表格形式,应填写该表格以描述模型。已填写的表格称为描述。 实际上,AUTOSAR 模板现在定义为元模型。 **AUTOSAR Validation Tool(AUTOSAR 验证工具)** 专门的 AUTOSAR 工具,能够根据配置文件定义的规则检查 AUTOSAR 模型。 **AUTOSAR XML Schema(AUTOSAR XML 模式)** 这是定义用于交换 AUTOSAR 模型的语言的 W3C XML 模式。此模式源自 AUTOSAR 元模型。AUTOSAR XML 模式定义 AUTOSAR 数据交换格式。 **Blueprint(蓝图)** 这是可以通过复制和细化从中派生其他模型的模型。请注意,与元模型或类型不同,此过程不是实例化。 **Instance(实例)** 通常这是模型或类型的特定示例。 **Life Cycle(生命周期)** 生命周期是模型元素在其生命周期中的开发/演化阶段过程。 **Meta-Model(元模型)** 这定义了模型的构建块。从这个意义上讲,元模型表示用于构建模型的语言。 **Meta-Data(元数据)** 这包括有关数据的相关信息,包括有关作者、版本控制、访问权限、时间戳等信息。 **Model(模型)** 模型是现实的简化表示形式。模型表示适用于预期目的的方面。 **Partial Model(部分模型)** 这是模型的一部分,旨在保存在一个特定工件中。 **Pattern in GST(GST 中的模式)** 这是通过应用模型转换来简化元模型定义的方法。此转换从带注释的模型创建增强模型。 **Profile Authoring Support Data(配置文件创作支持数据)** 用于有效创作配置文件的数据。例如,可引用的约束、元类、元属性或其他可重用模型资产(蓝图)的列表。 **Profile Authoring Tool(配置文件创作工具)** 专注于为数据交换点创作配置文件的专门 AUTOSAR 工具。它例如提供从头开始创建配置文件、修改现有配置文件或组合现有配置文件的支持。 **Profile Compatibility Checker Tool(配置文件兼容性检查器工具)** 专注于检查数据交换配置文件兼容性的专门 AUTOSAR 工具。请注意,此兼容性检查包括工程师的手动兼容性检查和使用更正式算法的自动辅助。 **Profile Consistency Checker Tool(配置文件一致性检查器工具)** 专注于检查配置文件一致性的专门 AUTOSAR 工具。 **Property(属性)** 属性是对象的结构特征。例如,"connector"具有属性"receive port"和"send port"。 属性通过 atpVariation 实现变体化。 **Prototype(原型)** 这是在另一个类型的定义中实现类型的角色。换言之,类型可以包含反过来由"Types"键入的 Prototypes。当此类型被实例化时,这些原型中的每一个都成为一个实例。 **Type(类型)** 类型提供可以出现在此类型的各个角色中的特征。 **Value(值)** 这是分配给"Definition"的特定值。 **Variability(可变性)** 系统的可变性是其描述一组变体的质量。这些变体的特征在于变体特定的属性设置和/或选择。例如,这样的系统属性选择体现在连接的特定"receive port"中。 这使用 atpVariation 实现。 **Variant(变体)** 系统变体是系统的具体实现,因此其所有属性都已设置或选择。软件系统在绑定时间方面不再具有可变性。 这使用 EvaluatedVariantSet 实现。 **Variation Binding(变体绑定)** 变体是变体绑定过程的结果,该过程通过为系统的所有属性分配特定值/选择来解决系统的可变性。 这由 VariationPoint 实现。 **Variation Binding Time(变体绑定时间)** 变体绑定时间确定在方法论中由一组可变属性给出的可变性得到解决的步骤。 这由相关属性上的 vh.LatestBindingtime 实现。 **Variation Definition Time(变体定义时间)** 变体定义时间确定在方法论中定义变化点的步骤。 **Variation Point(变化点)** 变化点表示属性受变体控制。此外,它与条件和绑定时间相关联,条件和绑定时间定义用于具体变体的选择/设置的系统上下文。 这由 VariationPoint 实现。 ## B 引用的类表 **类** ARElement (abstract) **包** M2::AUTOSARTemplates::GenericStructure::GeneralTemplateClasses::ARPackage **说明** 可以独立定义(即不作为另一个元素的一部分(包除外))的元素。 **基类** ARObject, CollectableElement, Identifiable, MultilanguageReferrable, PackageableElement, Referrable **子类** AclObjectSet, AclOperation, AclPermission, AclRole, AliasNameSet, ApplicationPartition, AutosarDataType, BaseType, BlueprintMappingSet, BswEntryRelationshipSet, BswModuleDescription, BswModuleEntry, BuildActionManifest, CalibrationParameterValueSet, ClientIdDefinitionSet, ClientServerInterfaceToBswModuleEntryBlueprintMapping, Collection, CompuMethod, ConsistencyNeedsBlueprintSet, ConstantSpecification, ConstantSpecificationMappingSet, CryptoServiceCertificate, CryptoServiceKey, CryptoServicePrimitive, DataConstr, DataExchangePoint, DataTransformationSet, DataTypeMappingSet, DiagnosticCommonElement, DiagnosticConnection, DiagnosticContributionSet, DiagnosticMasterToSlaveEventMappingSet, Documentation, EcucDefinitionCollection, EcucDestinationUriDefSet, EcucModuleConfigurationValues, EcucModuleDef, EcucValueCollection, EndToEndProtectionSet, EvaluatedVariantSet, FMFeature, FMFeatureMap, FMFeatureModel, FMFeatureSelectionSet, FlatMap, GeneralPurposeConnection, HwCategory, HwElement, HwType, IPv6ExtHeaderFilterSet, Implementation, InterpolationRoutineMappingSet, J1939ControllerApplication, KeywordSet, LifeCycleInfoSet, LifeCycleStateDefinitionGroup, McFunction, McGroup, ModeDeclarationGroup, ModeDeclarationMappingSet, PhysicalDimension, PhysicalDimensionMappingSet, PortInterface, PortInterfaceMappingSet, PortPrototypeBlueprint, PostBuildVariantCriterion, PostBuildVariantCriterionValueSet, PredefinedVariant, RapidPrototypingScenario, SdgDef, SwAddrMethod, SwAxisType, SwComponentType, SwRecordLayout, SwSystemconst, SwSystemconstantValueSet, SwcBswMapping, System, SystemSignal, SystemSignalGroup, TcpOptionFilterSet, TimingExtension, TransformationPropsSet, Unit, UnitGroup, ViewMapSet **属性** 类型 基数 种类 说明 – – – – – **表 B.1: ARElement** **类** AdminData **包** M2::MSR::AsamHdo::AdminData **说明** AdminData 表示表达元素的管理信息的能力。此管理信息应被视为元数据,例如修订 ID 或文件状态。基本上有四种元数据: - 语言和/或使用的语言。 - 修订信息,例如修订号、状态、发布日期、变更。请注意,这些信息可以以一般形式或与特定公司相关的方式给出。 - 特定于公司的文档元数据 - 用作不同公司之间交换数据的语言和语言的详细说明。 **基类** ARObject **属性** 类型 基数 种类 说明 docRevision (ordered) DocRevision * aggr 这允许表示有关对象当前修订的信息。 请注意,有关以前修订的信息也可以记录在此处。条目应按日期降序排序以反映历史。因此,表示当前版本的最新条目首先被表示。 标签:xml.roleElement=true xml.roleWrapperElement=true xml.sequenceOffset=50 xml.typeElement=false xml.typeWrapperElement=false language LEnum 0..1 attr 此属性指定文档或文档片段的主语言。主语言是维护文档并从其派生其他语言的语言。特别是,在不一致的情况下,主语言中的信息具有优先级。 标签:xml.sequenceOffset=20 sdg Sdg * aggr 此属性允许保留标准模型中未表示的特殊数据。它可用于保留例如特定于工具的数据。 标签:xml.roleElement=true xml.roleWrapperElement=true xml.sequenceOffset=60 xml.typeElement=false xml.typeWrapperElement=false usedLanguages MultiLanguagePlainText 0..1 aggr 此属性指定文档中提供的语言。因此它应仅在顶层 admin data 中指定。对于文档中提供的每种语言,在 MultilanguagePlainText 中都有一个条目。每个条目的内容可用于说明语言。所用语言本身取决于条目中的 language 属性。 标签:xml.sequenceOffset=30 **表 B.2: AdminData** **类** «atpMixedString» ConditionByFormula **包** M2::AUTOSARTemplates::GenericStructure::VariantHandling **说明** 此类表示基于系统常量根据指定表达式计算的条件。预期结果被视为布尔值。表达式的结果被解释为条件: - "0" 表示 "false"; - 不同于零的值被视为 "true" **基类** ARObject, FormulaExpression, SwSystemconstDependentFormula **属性** 类型 基数 种类 说明 bindingTime BindingTimeEnum 1 attr 此属性指定条件最早可以在哪个时间点求值。在该时间点,所有引用的系统常量应具有值。 标签:xml.attribute=true **表 B.3: ConditionByFormula** **类** «atpMixedString» FormulaExpression (abstract) **包** M2::AUTOSARTemplates::GenericStructure::FormulaLanguage **说明** 此类表示公式语言的语法。该类被建模为抽象类,以便专门化为特定用例。对于每个用例,可引用的对象可以在专门化中指定。 **基类** ARObject **子类** CompuGenericMath, EcucConditionFormula, EcucParameterDerivationFormula, FMFormulaByFeaturesAndAttributes, SwSystemconstDependentFormula, TDEventOccurrenceExpressionFormula, TimingConditionFormula **属性** 类型 基数 种类 说明 atpReference Referrable * ref 可引用对象应产生数值/布尔值。 原型:atpAbstract atpStringReference Referrable * ref 可引用对象应产生字符串值。 原型:atpAbstract **表 B.4: FormulaExpression** **类** Identifiable (abstract) **包** M2::AUTOSARTemplates::GenericStructure::GeneralTemplateClasses::Identifiable **说明** 此类实例可以通过其标识符引用(在命名空间边界内)。除标识符外,Identifiables 是对 AUTOSAR 描述的整体结构有重大贡献的对象。特别是,Identifiables 可能包含其他 Identifiables。 **基类** ARObject, MultilanguageReferrable, Referrable **子类** ARPackage, AbstractEvent, AbstractImplementationDataTypeElement, AbstractServiceInstance, ApplicationEndpoint, ApplicationError, ApplicationPartitionToEcuPartitionMapping, AsynchronousServerCallResultPoint, AtpBlueprint, AtpBlueprintable, AtpClassifier, AtpFeature, AutosarOperationArgumentInstance, AutosarVariableInstance, BswInternalTriggeringPoint, BswModuleDependency, BuildActionEntity, BuildActionEnvironment, CanTpAddress, CanTpChannel, CanTpNode, Chapter, ClassContentConditional, ClientIdDefinition, ClientServerOperation, Code, CollectableElement, ComManagementMapping, CommConnectorPort, CommunicationConnector, CommunicationController, Compiler, ConsistencyNeeds, ConsumedEventGroup, CouplingPort, CouplingPortStructuralElement, CryptoServiceMapping, DataPrototypeGroup, DataTransformation, DependencyOnArtifact, DiagEventDebounceAlgorithm, DiagnosticConnectedIndicator, DiagnosticDataElement, DiagnosticFunctionInhibitSource, DiagnosticMasterToSlaveEventMapping, DiagnosticRoutineSubfunction, DoIpLogicAddress, ECUMapping, EOCExecutableEntityRefAbstract, EcuPartition, EcucContainerValue, EcucDefinitionElement, EcucDestinationUriDef, EcucEnumerationLiteralDef, EcucQuery, EcucValidationCondition, EndToEndProtection, ExclusiveArea, ExecutableEntity, ExecutionTime, FMAttributeDef, FMFeatureMapAssertion, FMFeatureMapCondition, FMFeatureMapElement, FMFeatureRelation, FMFeatureRestriction, FMFeatureSelection, FlatInstanceDescriptor, FlexrayArTpNode, FlexrayTpConnectionControl, FlexrayTpNode, FlexrayTpPduPool, FrameTriggering, GeneralParameter, GlobalTimeGateway, GlobalTimeMaster, GlobalTimeSlave, HeapUsage, HwAttributeDef, HwAttributeLiteralDef, HwPin, HwPinGroup, IPv6ExtHeaderFilterList, ISignalToIPduMapping, ISignalTriggering, IdentCaption, InternalTriggeringPoint, J1939SharedAddressCluster, J1939TpNode, Keyword, LifeCycleState, LinScheduleTable, LinTpNode, Linker, MacMulticastGroup, McDataInstance, MemorySection, ModeDeclaration, ModeDeclarationMapping, ModeSwitchPoint, NetworkEndpoint, NmCluster, NmEcu, NmNode, NvBlockDescriptor, PackageableElement, ParameterAccess, PduToFrameMapping, PduTriggering, PerInstanceMemory, PhysicalChannel, PortGroup, PortInterfaceMapping, PossibleErrorReaction, ResourceConsumption, RootSwCompositionPrototype, RptComponent, RptContainer, RptExecutableEntity, RptExecutableEntityEvent, RptExecutionContext, RptProfile, RptServicePoint, RunnableEntityGroup, SdgAttribute, SdgClass, SecureCommunicationAuthenticationProps, SecureCommunicationFreshnessProps, ServerCallPoint, ServiceNeeds, SocketAddress, SomeipTpChannel, SpecElementReference, StackUsage, StructuredReq, SwGenericAxisParamType, SwServiceArg, SwcServiceDependency, SwcToApplicationPartitionMapping, SwcToEcuMapping, SwcToImplMapping, SystemMapping, TcpOptionFilterList, TimingCondition, TimingConstraint, TimingDescription, TimingExtensionResource, TimingModeInstance, TlsCryptoCipherSuite, Topic1, TpAddress, TraceableText, TracedFailure, TransformationProps, TransformationTechnology, Trigger, VariableAccess, VariationPointProxy, ViewMap, VlanConfig, WaitPoint **属性** 类型 基数 种类 说明 desc MultiLanguageOverviewParagraph 0..1 aggr 这表示有关对象是什么的通用但简要(一段)描述。它仅是一段!Desc 旨在被收集到概览表中。此属性可帮助人类读者识别相关对象。 更详细的文档(特别是对象的构建或使用方式)应转到"introduction"。 标签:xml.sequenceOffset=-60 category CategoryString 0..1 attr category 是专门化 Identifiable 语义的关键字。它影响属性的预期存在和约束的适用性。 标签:xml.sequenceOffset=-50 adminData AdminData 0..1 aggr 这表示可标识对象的管理数据。 标签:xml.sequenceOffset=-40 annotation Annotation * aggr 在定义模型元素时提供附加注释的可能性(例如 ECU Configuration Parameter Values)。这些不作为文档,而是纯粹的设计注释。 标签:xml.sequenceOffset=-25 introduction DocumentationBlock 0..1 aggr 这表示有关如何构建或使用对象的更多信息。因此它是 DocumentationBlock。 标签:xml.sequenceOffset=-30 uuid String 0..1 attr 此属性的目的是为元类的实例提供全局唯一标识符。此属性的值应为以标识符类型为前缀的全局唯一字符串。例如,要包含 Open Group 定义的 DCE UUID,UUID 的前面应为"DCE:"。此属性的值可用于支持不同 AUTOSAR 模型的合并。 UUID(通用唯一标识符)的形式取自 Open Group(曾为 Open Software Foundation)定义的标准。该标准被广泛使用,包括 Microsoft 用于 COM(GUID)和许多公司用于基于 CORBA 的 DCE。 这些 128 位 ID 的生成方法在标准中发布,实际上这些 ID 的有效性和唯一性是没有争议的。 如果省略 id 命名空间,则假定为 DCE。 例如: "DCE:2fac1234-31f8-11b4-a222-08002b34c003"。 uuid 属性对 AUTOSAR 模型没有语义意义,并且 AUTOSAR 工具没有管理时间戳的要求。 标签:xml.attribute=true **表 B.5: Identifiable** **类** MultilanguageReferrable (abstract) **包** M2::AUTOSARTemplates::GenericStructure::GeneralTemplateClasses::Identifiable **说明** 此类实例可以通过其标识符引用(遵守命名空间边界)。它们还可以具有 longName。但它们不被视为对 AUTOSAR 描述的整体结构有重大贡献。特别是它不包含其他 Referrables。 **基类** ARObject, Referrable **子类** Caption, DefItem, DocumentationContext, Identifiable, SdgCaption, TraceReferrable, Traceable **属性** 类型 基数 种类 说明 longName MultilanguageLongName 0..1 aggr 这指定对象的长名称。长名称面向人类读者,作用类似于标题。 **表 B.6: MultilanguageReferrable** **原语** PositiveInteger **包** M2::AUTOSARTemplates::GenericStructure::GeneralTemplateClasses::PrimitiveTypes **说明** 这是一个正整数,可以以十进制、二进制、八进制和十六进制表示。 值介于 0 和 4294967295 之间。 标签:xml.xsd.customType=POSITIVE-INTEGER xml.xsd.pattern=[1-9][0-9]*|0[xX][0-9a-fA-F]+|0[bB][0-1]+|0[0-7]* xml.xsd.type=string **表 B.7: PositiveInteger** **类** PostBuildVariantCondition **包** M2::AUTOSARTemplates::GenericStructure::VariantHandling **说明** 此类指定必须将特定值分配给特定 variant criterion 才能绑定变化点。如果指定了多个 criterion/value 对,则它们必须全部匹配才能绑定变化点。 换句话说,绑定可以表示为 (criterion1 == value1) && (condition2 == value2) ... **基类** ARObject **属性** 类型 基数 种类 说明 matchingCriterion PostBuildVariantCriterion 1 ref 这是使 PostbuildVariantCondition 为真时需要与值匹配的标准。 value Integer 1 attr 这是 post-build variant criterion 的特定值。 原型:atpVariation 标签:vh.latestBindingTime=preCompileTime **表 B.8: PostBuildVariantCondition** **类** PostBuildVariantCriterion **包** M2::AUTOSARTemplates::GenericStructure::VariantHandling **说明** 此类指定一个特定的 PostBuildVariantSelector。 标签:atp.recommendedPackage=PostBuildVariantCriterions **基类** ARElement, ARObject, AtpDefinition, CollectableElement, Identifiable, MultilanguageReferrable, PackageableElement, Referrable **属性** 类型 基数 种类 说明 compuMethod CompuMethod 1 ref compuMethod 指定用作枚举器的 variant criterion 的可能值。 **表 B.9: PostBuildVariantCriterion** **类** PostBuildVariantCriterionValue **包** M2::AUTOSARTemplates::GenericStructure::VariantHandling **说明** 此类指定必须将特定值分配给特定 variant criterion 才能绑定变化点。如果指定了多个 criterion/value 对,则它们必须全部匹配才能绑定变化点。 **基类** ARObject **属性** 类型 基数 种类 说明 annotation Annotation * aggr 这提供了添加有关值设置方式的信息的能力。 标签:xml.sequenceOffset=30 value Integer 1 attr 这是 post-build variant criterion 的特定值。 原型:atpVariation 标签:vh.latestBindingTime=preCompileTime xml.sequenceOffset=20 variantCriterion PostBuildVariantCriterion 1 ref 此关联选择指定值的 variant criterion。 标签:xml.sequenceOffset=10 **表 B.10: PostBuildVariantCriterionValue** **类** PredefinedVariant **包** M2::AUTOSARTemplates::GenericStructure::VariantHandling **说明** 这指定一个预定义变体。它的特征在于所有引用的系统常量值集和 post-build variant criterion 值集以及所包含变体的值集中的系统常量值和 post-build variant criterion 值的并集。 标签:atp.recommendedPackage=PredefinedVariants **基类** ARElement, ARObject, CollectableElement, Identifiable, MultilanguageReferrable, PackageableElement, Referrable **属性** 类型 基数 种类 说明 includedVariant PredefinedVariant * ref 关联的变体被视为此 PredefinedVariant 的一部分。这意味着所包含变体的设置包含在引用 PredefinedVariant 的设置中。但是,所包含的变体可能包含在多个预定义变体中。 postBuildVariantCriterionValueSet PostBuildVariantCriterionValueSet * ref 这是对预定义变体有贡献的 postBuildVariantCriterionValueSet。 swSystemconstantValueSet SwSystemconstantValueSet * ref 这是对预定义变体有贡献的系统常量值集。 **表 B.11: PredefinedVariant** **类** Referrable (abstract) **包** M2::AUTOSARTemplates::GenericStructure::GeneralTemplateClasses::Identifiable **说明** 此类实例可以通过其标识符引用(遵守命名空间边界)。 **基类** ARObject **子类** AtpDefinition, BswDistinguishedPartition, BswModuleCallPoint, BswModuleClientServerEntry, BswVariableAccess, CouplingPortTrafficClassAssignment, DiagnosticDebounceAlgorithmProps, DiagnosticEnvModeElement, EthernetPriorityRegeneration, EventHandler, ExclusiveAreaNestingOrder, HwDescriptionEntity, ImplementationProps, LinSlaveConfigIdent, ModeTransition, MultilanguageReferrable, PncMappingIdent, SingleLanguageReferrable, SocketConnectionBundle, TimeSyncServerConfiguration, TpConnectionIdent **属性** 类型 基数 种类 说明 shortName Identifier 1 attr 这为对象指定一个标识 shortName。它需要在其上下文中是唯一的,并且面向人类,但更重要的是用于技术引用。 标签:xml.enforceMinMultiplicity=true xml.sequenceOffset=-100 shortNameFragment ShortNameFragment * aggr 这指定如何由多个 shortNameFragments 组成 Referrable.shortName。 标签:xml.sequenceOffset=-90 **表 B.12: Referrable** **类** Sdg **包** M2::MSR::AsamHdo::SpecialData **说明** Sdg(SpecialDataGroup)是一个通用模型,可用于保留元模型中未显式建模的任意信息。 Sdg 可以具有 sdgContentsType 定义的多种内容。特殊数据应仅适度使用,因为应在元模型中定义所有元素。 因此 SDG 应被视为没有显式模型可用的临时解决方案。如果 sdgCaption 可用,则可以建立对 sdg 结构的引用。 **基类** ARObject **属性** 类型 基数 种类 说明 gid NameToken 1 attr 此属性指定标识符。Gid 来自 SGML/XML 术语"Generic Identifier",它是 XML 中的元素名称。此属性的角色与 XML 元素的名称相同。 标签:xml.attribute=true sdgCaption SdgCaption 0..1 aggr 此聚合允许将 Identifiable 的属性分配给 sdg。通过这种方式,可以为 Sdg 分配 shortName 等。 标签:xml.sequenceOffset=20 sdgCaptionRef SdgCaption 0..1 ref 此关联允许重用已存在的 caption。 标签:xml.name=SDG-CAPTION-REF xml.sequenceOffset=25 sdgContentsType SdgContentsType 0..1 aggr 这是 Sdg 的内容。 标签:xml.roleElement=false xml.roleWrapperElement=false xml.sequenceOffset=30 xml.typeElement=false xml.typeWrapperElement=false **表 B.13: Sdg** **类** SwComponentPrototype **包** M2::AUTOSARTemplates::SWComponentTemplate::Composition **说明** 软件组件在组合中的角色。 **基类** ARObject, AtpFeature, AtpPrototype, Identifiable, MultilanguageReferrable, Referrable **属性** 类型 基数 种类 说明 type SwComponentType 1 tref 实例的类型。 原型:isOfType **表 B.14: SwComponentPrototype** **类** SwSystemconst **包** M2::MSR::DataDictionary::SystemConstant **说明** 此元素定义用作选择特定变化点的输入的系统常量。特别是,系统常量用作变化点中绑定函数 (swSyscond) 的操作数。 请注意,只有当为所引用的系统常量分配了值时,才能进行绑定过程。 标签:atp.recommendedPackage=SwSystemconsts **基类** ARElement, ARObject, AtpDefinition, CollectableElement, Identifiable, MultilanguageReferrable, PackageableElement, Referrable **属性** 类型 基数 种类 说明 swDataDefProps SwDataDefProps 0..1 aggr 这表示系统常量的数据定义属性。这支持表达系统常量的限制并可选地在内部值和物理值之间通过 compu method 进行转换。 标签:xml.sequenceOffset=40 **表 B.15: SwSystemconst** **类** «atpMixedString» SwSystemconstDependentFormula (abstract) **包** M2::AUTOSARTemplates::GenericStructure::VariantHandling **说明** 此类表示依赖于系统常量的表达式。 **基类** ARObject, FormulaExpression **子类** AttributeValueVariationPoint, BlueprintFormula, ConditionByFormula, FMFormulaByFeaturesAndSwSystemconsts **属性** 类型 基数 种类 说明 sysc SwSystemconst 1 ref 这引用系统常量。应使用系统常量的内部(编码)值。 标签:xml.sequenceOffset=50 syscString SwSystemconst 1 ref syscString 表示引用的系统常量应根据 [TPS_SWCT_01431] 作为字符串求值。 **表 B.16: SwSystemconstDependentFormula** **类** SwSystemconstValue **包** M2::AUTOSARTemplates::GenericStructure::VariantHandling **说明** 此元类将特定值分配给系统常量。 **基类** ARObject **属性** 类型 基数 种类 说明 annotation Annotation * aggr 这提供了添加有关值设置方式的信息的能力。 标签:xml.sequenceOffset=30 swSystemconst SwSystemconst 1 ref 这是值所应用的系统常量。 标签:xml.sequenceOffset=10 value Numerical 1 attr 这是系统常量的特定值。它被指定为 Numerical。进一步的限制可能由系统常量的定义应用。 value 属性定义 SwSystemconst 在公式语言中处理的内部值。 原型:atpVariation 标签:vh.latestBindingTime=preCompileTime xml.sequenceOffset=20 **表 B.17: SwSystemconstValue** **类** VariationPoint **包** M2::AUTOSARTemplates::GenericStructure::VariantHandling **说明** 此元类表示表达"结构性变化点"的能力。如果 swSyscond 求值为真且满足每个 postBuildVariantCriterion,则变化点的容器是所选变体的一部分。 **基类** ARObject **属性** 类型 基数 种类 说明 desc MultiLanguageOverviewParagraph 0..1 aggr 这允许简要描述变化点的目的。 标签:xml.sequenceOffset=20 blueprintCondition DocumentationBlock 0..1 aggr 这表示描述从蓝图派生对象时如何解析变化点的文档。 请注意,blueprintCondition 中不允许出现 variationPoints。 标签:xml.sequenceOffset=28 formalBlueprintCondition BlueprintFormula 0..1 aggr 这表示形式 blueprintCondition。它不应与 blueprintCondition 或 formalBlueprintGenerator 矛盾。建议仅使用这两者之一。 标签:atp.Status=obsolete xml.sequenceOffset=29 formalBlueprintGenerator BlueprintGenerator 0..1 aggr 这表示描述当使用 ARMQL 从蓝图派生对象时如何解析变化点的文档。 请注意,formalBlueprintGenerator 中不允许出现 variationPoints。 标签:atp.Status=draft xml.sequenceOffset=30 postBuildVariantCondition PostBuildVariantCondition * aggr 这是为(postbuild)绑定变化点而必须满足的一组 post build variant 条件。 标签:xml.sequenceOffset=40 sdg Sdg 0..1 aggr 可选的特殊数据组附加到每个变化点。这些数据可由外部软件系统用于附加应用程序特定数据。例如,变体管理系统可能添加标识符、URL 或特定分类器。 标签:xml.sequenceOffset=50 shortLabel Identifier 0..1 attr 这为特定变化点提供名称以支持 RTE 生成器。对于支持可拆分聚合以及绑定时间晚于 codeGenerationTime 以及某些 RTE 条件,它是必需的。它需要在具有相同 ShortName 的封闭 Identifiables 中唯一。 标签:xml.sequenceOffset=10 swSyscond ConditionByFormula 0..1 aggr 此条件用作变化点的绑定函数。 请注意,基数 0..1 是为了支持纯 postBuild 变体。 标签:xml.sequenceOffset=30 **表 B.18: VariationPoint** ## C 约束历史 ### C.1 AUTOSAR R4.1.1 的变更历史 #### C.1.1 R4.1.1 中新增的约束 | Id | 标题 | |------|------| | [constr_5001] | FMFeatureRelation 不应建立自引用 | | [constr_5002] | FMFeatureSelectionSet 的 include 关系不应有循环 | | [constr_5003] | FMFeatureSelectionSet 不应覆盖所含 Feature 的状态 | | [constr_5005] | FMFeature 不应从一个以上的 FMFeatureDecomposition 中被引用 | | [constr_5007] | FMFeature 应仅在一个 FMFeatureModel 的 role feature 中被引用 | | [constr_5008] | 如果存在 root feature,则它应属于特性模型 | | [constr_5009] | 当且仅当特性模型非空时才应存在 root feature | | [constr_5010] | FMFeatureDecomposition 可以引用另一个特性模型的 root feature,但只能引用一次。 | | [constr_5011] | FMFormulaByFeaturesAndAttributes 可以引用 FMFeature 和 FMAttributeDef,但不能引用系统常量 | | [constr_5013] | FMFeatureDecomposition 的属性 min 和 max 保留给 category MULTIPLEFEATURE | | [constr_5018] | FMFeatureSelectionSet 不应包含同一 Feature 两次 | | [constr_5019] | FMFeatureModel 不应包含同一 FMFeature 两次 | | [constr_5020] | 每个 FMFeature 都应包含在 FMFeatureModel 中 | | [constr_5021] | 特性模型的底层图应为树。 | | [constr_5022] | FMFeatureModel 的 root feature 引用底层树的根。 | | [constr_5023] | FMFeatureSelectionSet 只能引用关联 FMFeatureModel 中的 FMFeature | | [constr_5024] | FMFeatureSelectionSet 不应包含自身 | | [constr_5025] | FMFeatureSelectionSet 中的多个 include 应保持一致 | | [constr_5026] | 类 FMAttributeDef 中属性 max 和 min 的语义 | | [constr_5027] | 类 FMAttributeValue 中 FMAttributeDef 的属性 max 和 min 的语义 | | [constr_5028] | 每个 FMAttributeDef 仅有一个 FMAttributeValue | **表 C.1: 4.1.1 中变更的约束** #### C.1.2 R4.1.1 中变更的约束 无 #### C.1.3 R4.1.1 中删除的约束 无 #### C.1.4 R4.1.1 中新增的可追溯项 | Id | 标题 | |------|------| | [TPS_FMDT_00001] | 特性模型可以为空 | | [TPS_FMDT_00002] | Feature 定义 | | [TPS_FMDT_00003] | Feature Selection 定义 | | [TPS_FMDT_00004] | Feature Model 定义 | | [TPS_FMDT_00005] | Product Model 定义 | | [TPS_FMDT_00006] | Product Line Model 定义 | | [TPS_FMDT_00007] | Product 定义 | | [TPS_FMDT_00008] | Product Line 定义 | | [TPS_FMDT_00009] | FMFeatureSelectionSet 的 Feature 集定义 | | [TPS_FMDT_00012] | 属性 min 和 max 的默认值 | | [TPS_FMDT_00013] | 特性模型是可选的 | | [TPS_FMDT_00014] | Parent Feature、Child Feature 定义 | | [TPS_FMDT_00015] | MANDATORYFEATURE | | [TPS_FMDT_00016] | OPTIONALFEATURE | | [TPS_FMDT_00017] | ALTERNATIVEFEATURE | | [TPS_FMDT_00018] | MULTIPLEFEATURE | | [TPS_FMDT_00019] | FMFeatureRelation 的 category 的预定义值 | | [TPS_FMDT_00020] | FMFeatureRelation 的结构 | | [TPS_FMDT_00021] | FMFeatureRelation 的 category 属性 | | [TPS_FMDT_00023] | FMFeatureRelation 的 category 属性的可扩展性 | | [TPS_FMDT_00024] | 属性 maximumIntendedBindingTime 和 minimumIntendedBindingTime 仅是提示 | | [TPS_FMDT_00025] | FMFeatureMapElement 的受影响变化点集合 | | [TPS_FMDT_00030] | 有效的特性选择定义 | | [TPS_FMDT_00032] | FMFeatureSelectionSet 的包含图 | | [TPS_FMDT_00033] | 特性模型的特殊数据 | | [TPS_FMDT_00034] | FMFeatureModel 的底层图定义 | | [TPS_FMDT_00035] | FMFeatureModel 的 Feature 定义 | | [TPS_FMDT_00036] | FMFeatureModel 的 Root Feature 定义 | | [TPS_FMDT_00037] | FMFeatureMapElement 的语义 | | [TPS_FMDT_00038] | FMFeature 的受影响变化点定义 | | [TPS_FMDT_00039] | FMFeature 的名称 | | [TPS_FMDT_00040] | FMFeature 的描述 | | [TPS_FMDT_00041] | FMFeatureDecomposition 的用途 | | [TPS_FMDT_00042] | FMFeature 的用途 | | [TPS_FMDT_00043] | FMFeatureModel 的用途 | | [TPS_FMDT_00044] | FMFeatureRelation 的语义 | | [TPS_FMDT_00045] | FMFeatureRestriction 的语义 | | [TPS_FMDT_00046] | FMFeatureDecomposition 的语义 | | [TPS_FMDT_00047] | 特性模型是可拆分的 | | [TPS_FMDT_00048] | FMFormulaByFeaturesAndSwSystemconsts 可以引用 Feature 和系统常量 | | [TPS_FMDT_00049] | FMConditionByFeaturesAndAttributes 的结果被解释为布尔值。 | | [TPS_FMDT_00050] | FMConditionByFeaturesAndSwSystemconsts 的结果被解释为布尔值。 | | [TPS_FMDT_00051] | FMAttributeDef 的用途 | | [TPS_FMDT_00052] | FMFeatureRelation 的标识 | | [TPS_FMDT_00053] | FMAttributeValue 的语义 | | [TPS_FMDT_00054] | 属性 minimumIntendedBindingTime 和 maximumIntendedBindingTime 的语义 | | [TPS_FMDT_00055] | minimumSelectedBindingTime 和 maximumSelectedBindingTime 的语义 | | [TPS_FMDT_00056] | minimumSelectedBindingTime 和 maximumSelectedBindingTime 仅是提示 | | [TPS_FMDT_00057] | 求值使用 Feature 和 Attribute 的表达式 | | [TPS_FMDT_00058] | FMFeature 在 FMFeatureSelectionSet 中的状态定义 | | [TPS_FMDT_00059] | FMFeatureSelectionSet 的递归 Feature 集定义 | | [TPS_FMDT_00060] | FMFeatureSelectionSet 的用途 | | [TPS_FMDT_00061] | FMFeatureRelation 的文档化 | | [TPS_FMDT_00062] | FMFeatureRestriction 的标识 | | [TPS_FMDT_00063] | FMFeatureRestriction 的文档化 | **表 C.2: 4.1.1 中变更的可追溯项** #### C.1.5 R4.1.1 中变更的可追溯项 无 #### C.1.6 R4.1.1 中删除的可追溯项 无 ### C.2 AUTOSAR R4.2.1 相对于 R4.1.3 的变更历史 #### C.2.1 4.2.1 中新增的约束 无 #### C.2.2 4.2.1 中变更的约束 无 #### C.2.3 4.2.1 中删除的约束 无 #### C.2.4 4.2.1 中新增的可追溯项 | Id | 标题 | |------|------| | [TPS_FMDT_00064] | 生命周期的使用 | **表 C.3: 4.2.1 中新增的可追溯项** #### C.2.5 4.2.1 中变更的可追溯项 无 #### C.2.6 4.2.1 中删除的可追溯项 无 ### C.3 AUTOSAR R4.2.2 相对于 R4.2.1 的变更历史 #### C.3.1 4.2.2 中新增的约束 无 #### C.3.2 4.2.2 中变更的约束 无 #### C.3.3 4.2.2 中删除的约束 无 #### C.3.4 4.2.2 中新增的可追溯项 无 #### C.3.5 4.2.2 中变更的可追溯项 无 #### C.3.6 4.2.2 中删除的可追溯项 无 ### C.4 AUTOSAR R4.3.0 相对于 R4.2.2 的变更历史 #### C.4.1 4.3.0 中新增的约束 无 #### C.4.2 4.3.0 中变更的约束 无 #### C.4.3 4.3.0 中删除的约束 无 #### C.4.4 4.3.0 中新增的可追溯项 无 #### C.4.5 4.3.0 中变更的可追溯项 无 #### C.4.6 4.3.0 中删除的可追溯项 无 ### C.5 AUTOSAR R4.3.1 相对于 R4.3.0 的变更历史 #### C.5.1 4.3.1 中新增的约束 无 #### C.5.2 4.3.1 中变更的约束 无 #### C.5.3 4.3.1 中删除的约束 无 #### C.5.4 4.3.1 中新增的可追溯项 无 #### C.5.5 4.3.1 中变更的可追溯项 无 #### C.5.6 4.3.1 中删除的可追溯项 无 ### C.6 AUTOSAR R4.4.0 相对于 R4.3.1 的变更历史 #### C.6.1 4.4.0 中新增的约束 无 #### C.6.2 4.4.0 中变更的约束 无 #### C.6.3 4.4.0 中删除的约束 无 #### C.6.4 4.4.0 中新增的可追溯项 无 #### C.6.5 4.4.0 中变更的可追溯项 无 #### C.6.6 4.4.0 中删除的可追溯项 无 ## 翻译说明 本文档为 AUTOSAR 特性模型交换格式的中文翻译,遵循以下翻译规范: 1. **保留**:所有 API 标识符(如 `FMFeatureModel`、`FMFeature`、`FMAttributeDef`、`SwSystemconst` 等类名)、AUTOSAR 模块缩写、协议名(CAN、LIN、BSW、RTE 等)保持英文原样。 2. **保留**:所有需求 ID(如 `[TPS_FMDT_00001]`、`[constr_5001]`)、文档 ID、UML 类名、属性名、ARXML 标签保持英文。 3. **保留**:AUTOSAR 方框符 `⌈d⌋`(约束开始)和 `⌈c⌋`(约束结束)保留。 4. **保留**:文档间交叉引用(如 `[1]`、`[TPS_FMDT_00001]`)。 5. **翻译**:所有标题、描述性文字、表格内容翻译为中文。 6. **格式**:采用 Markdown 格式,包括标题、表格、代码块。 7. **类表格式**:将原 PDF 中的类表转换为 Markdown 表格形式。 8. **附录**:保留了所有附录内容,包括术语表(Appendix A Glossary)和约束历史(Appendix C Constraint History)。