:3 Application Design(1~3节))

Posted 玄道公子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了:3 Application Design(1~3节))相关的知识,希望对你有一定的参考价值。

AUTOSAR AP的版本为: 19-11

因为pdf文档一共八百多页,只有13章的样子,因此基本平均每章都有一百多页,都很长,所以在这里将其拆分开来记录。

3 Application Design

3.1 Overview

本章描述了适用于在AUTOSAR自适应平台上创建应用程序软件的所有与设计相关的建模。这也扩展到AUTOSAR经典平台上使用的现有建模的扩展,例如引入属性类别的新值。

特别是,本节将重点介绍以下几个方面:

  • AUTOSAR自适应平台SwComponentType专用子类的定义(section 3.2) 。
  • AUTOSAR自适应平台专用数据类型的定义(section 3.3)。
  • 服务接口是面向服务通信的关键要素 (section 3.4)。
  • 服务接口映射作为内部和外部通信之间的中介 (section 3.5)。
  • 服务接口元素映射作为内部和外部通信之间的中介 (section 3.6)。
  • 持久接口作为与持久数据存储交互的基础(section 3.8)。
  • 从软件组件内部看与“外部世界”交互的细粒度配置(section 3.13)。
  • Executable作为最小可执行单元(section 3.14)。
  • 转换属性的配置(section 3.16)。

3.2 Software Component

原则上,可以直接接管ApplicationSwComponentType的定义,以便在AUTOSAR自适应平台上使用。但是,这会使关于AUTOSAR自适应平台专有的模型元素(例如:数据类型,如第3.3节中所述)的存在的约束条件的制定变得复杂。因此,AdaptiveApplicationSwComponentType被定义为AUTOSAR自适应平台上软件组件的表示。

AdaptiveApplicationSwComponentType的存在提供了一种便捷的方法(请参见[constr_1492]),从而可以从AUTOSAR自适应平台上的使用中锁定为AUTOSAR经典平台定义的大多数软件组件。

相反方向的澄清(即AdaptiveApplicationSwComponentType的错误使用)不太明显。

换句话说,可以在系统中使用AdaptiveApplicationSwComponentType作为AUTOSAR经典平台和AUTOSAR自适应平台上软件的某种总体设计模型。

但是,到目前为止,这一方面还没有得到澄清,也没有限制AdaptiveApplicationSwComponentType出现在系统上下文中。本规范的较新版本可能会修复缺少的规则。

Class AdaptiveApplicationSwComponentType
PackageM2::AUTOSARTemplates::AdaptivePlatform::ApplicationDesign::ApplicationStructure
Note这个元类表示在AUTOSAR自适应平台上支持应用软件形式化建模的能力。因此,只能在AUTOSAR自适应平台上使用。
Tags: atp.Status = draft
    atp.recommendedPackage=AdaptiveApplicationSwComponentTypes
BaseARElement, ARObject, AtpBlueprint, AtpBlueprintable, AtpClassifier, AtpType, CollectableElement, Identifiable, MultilanguageReferrable, PackageableElement, Referrable, SwComponentType
AttributeTypeMult.KindNote
internalBehaviorAdaptiveSwcInternal Behavior0..1aggr此聚合表示AUTOSAR自适应平台的
AdaptiveApplicationSwComponentType的内部行为。
Stereotypes:  atpSplitable; atpVariation
Tags: atp.Splitkey=internalBehavior, variationPoint.shortLabel
    atp.Status=draft
    vh.latestBindingTime=preCompileTime
Table 3.1: AdaptiveApplicationSwComponentType
Class AdaptiveSwcInternalBehavior
PackageM2::AUTOSARTemplates::AdaptivePlatform::ApplicationDesign::AdaptiveInternalBehavior
Note这个元类表示定义AUTOSAR自适应平台上使用的AtomicSwComponentType的内部行为的能力
请注意,本例中的内部行为模型与AUTOSAR经典平台的情况形成鲜明对比,是非常小的
Tags: atp.Status = draft
BaseARObject, Identifiable, MultilanguageReferrable, Referrable
AttributeTypeMult.KindNote
serviceDependencySwcServiceDependency*aggr这表示AdaptiveInternalBehavior拥有的SwcServiceDependencys的集合
Tags: atp.Status=draft
Table 3.2: AdaptiveSwcInternalBehavior

3.3 Data Type

3.3.1 Overview

AUTOSAR自适应平台上的数据类型规范遵循与AUTOSAR经典平台上的数据类型相同的模式:数据类型定义在不同的抽象级别上,这些抽象级别相互补充。在本文中,重点讨论ApplicationDataTypes和cpppimplementationdatatypes。

一般来说,关于数据类型定义的大多数概念可以从AUTOSAR经典平台上的现有规范中获得。但是,某些方面是AUTOSAR自适应平台特有的,因此在本文档的范围内进行了讨论,而不是AUTOSAR软件组件模板的规范[1]。

可以从AUTOSAR经典平台沿用的方面之一是初始值的定义。虽然初始值的效用在AUTOSAR自适应平台上肯定是有限的,但是在所谓的Fields的上下文中有机会利用初始值的定义(参见[TPS_MANI_01034])。

3.3.2 ApplicationDataType

AUTOSAR经典平台支持的ApplicationDataTypes的完整建模范围也可以直接用于AUTOSAR自适应平台。

除了AUTOSAR经典平台支持的ApplicationDataTypes之外,还有更多的ApplicationDataTypes(原则上也可以在AUTOSAR经典平台上使用)主要用于AUTOSAR自适应平台并为其设计。

Class ApplicationDataType (abstract)
PackageM2::AUTOSARTemplates::SWComponentTemplate::Datatype::Datatypes
Noteapplication data type从应用程序的角度定义数据类型。尤其是当“物理”受限时应该使用它。
ApplicationDataType代表在应用程序模型中看到的一组值,例如度量单位。 它不考虑实现细节,例如位大小,字节序等。
应该可以只使用ApplicationData类型对VFB系统的应用程序级方面进行建模。
BaseARElement, ARObject, AtpBlueprint, AtpBlueprintable, AtpClassifier, AtpType, AutosarDataType, CollectableElement, Identifiable, MultilanguageReferrable, PackageableElement, Referrable
SubclassesApplicationCompositeDataType, ApplicationPrimitiveDataType
AttributeTypeMult.KindNote
-----
Table 3.3: ApplicationDataType

3.3.2.1 String Data Type

虽然对于表示文本字符串的数据类型的处理与AUTOSAR经典平台和AUTOSAR自适应平台上ApplicationDataTypes的定义非常相似,但对于AUTOSAR自适应平台上cpppimplementationdatatypes的级别,有特殊的规定。

有关在cpppimplementationdatatype级别上对字符串数据类型建模的更多信息,请参阅第3.3.3.4节。

为了保持一致性,本章总结了ApplicationDataTypes的建模,以便对AUTOSAR自适应平台所涉及的表示文本字符串的数据类型进行建模。

用于定义类别STRING的ApplicationPrimitiveDataType的元类如图3.1所示。

Figure 3.1: Specification of textual strings

请注意,由于使用的编程语言的数据类型比普通C语言更丰富,因此在AUTOSAR自适应平台上为给定的语言绑定预定义了类别字符串的ApplicationPrimitiveDataType的实现。

[TPS_MANI_01047]DRAFT 存在类别STRING的ApplicationPrimitiveDataType的SwRecordLayout:对于在AUTOSAR自适应平台上使用类别STRING的ApplicationPrimitiveDataType,存在applicationionPrimitiveDataType.swDataDefProps. 应忽略swRecordLayout。(RS_MANI_00016)

请注意**[TPS_MANI_01047]**故意不禁止SwRecordLayout的存在,是因为同一个类别STRING的ApplicationPrimitiveDataType可以在AUTOSAR自适应平台和AUTOSAR经典平台上都能正确地使用。

Class ApplicationPrimitiveDataType
PackageM2::AUTOSARTemplates::SWComponentTemplate::Datatype::Datatypes
Note基本数据类型定义了一组允许的值。
Tags:atp.recommendedPackage=ApplicationDataTypes
BaseARElement, ARObject, ApplicationDataType, AtpBlueprint, AtpBlueprintable, AtpClassifier, AtpType, AutosarDataType, CollectableElement, Identifiable, MultilanguageReferrable, PackageableElement, Referrable
AttributeTypeMult.KindNote
-----
Table 3.4: ApplicationPrimitiveDataType
Class SwTextProps
PackageM2::MSR::DataDictionary::DataDefProperties
Note这个元类表示适用于变量或校准参数中字符串的特定属性。
Tags:atp.recommendedPackage=ApplicationDataTypes
BaseARObject
AttributeTypeMult.KindNote
arraySizeSemanticsArraySizeSemanticsEnum1attr此属性控制表示实现数据类型中字符串的数组的数组大小的语义。
它支持ApplicationDatatype和ImplementationDatatype之间的安全转换,
即使是需要的可变长度字符串,例如支持SAE J1939
baseTypeSwBaseType0..1ref这是字符串中一个字符的基类型。特别是,此baseType表示
ApplicationData类型级别上字符串中字符的预期编码
Tags:xml.sequenceOffset=30
swFillCharacterInteger0..1attr填充最大长度swMaxTextSize的文本参数的填充字符
该值将根据数据对象的相关基类型中指定的编码进行解释,
例如0x30(十六进制)表示ASCII字符零作为填充字符,
0(十进制)表示字符串的结束作为填充字符
填充字符的使用取决于数组化语义。
Tags:xml.sequenceOffset=40
swMaxTextSizeInteger1attr指定最大文本大小(以字符为单位)。注意字节的大小取决于相应基类型中的编码。
Stereotypes:atpVariation
Tags:
vh.latestBindingTime=preCompileTime
xml.sequenceOffset=20
Table 3.5: SwTextProps

3.3.2.2 Associative Map Data Type

[TPS_MANI_01027]DRAFT ApplicationAssocMapDataType的语义: ApplicationAssocMapDataType表示关联数据结构,即所谓的键(形式化为ApplicationAssocMapDataType.key,依次由ApplicationDataType键入)与值(形式化为ApplicationAssocMapDataType.value,也由ApplicationDataType键入)关联的数据结构。(RS_MANI_00016)

[constr_3349] DRAFTApplicationAssocMapDataType的使用是受到限制的: ApplicationAssocMapDataType的使用仅限于在可执行文件上下文中定义的AdaptiveApplicationSwComponentTypes和CompositionSwComponentTypes的上下文,即此类数据类型不应在AUTOSAR classic平台上使用。

[constr_3349] 是一种形式化的方法,用于表示ApplicationAssocMapDataType只能在AUTOSAR自适应平台上使用。

[TPS_MANI_01016]DRAFTApplicationAssocMapDataType 的类别:ApplicationAssocMapDataType.category 的值应设置为属性的关联映射(ASSOCIATIVE_MAP)。

图3.2描述了ApplicationAssocMapDataType的结构示例。

如图3.2所示,分类图的ApplicationDataType的概念不应与ApplicationAssocMapDataType混淆。

在运行时使用关联数据结构有许多技术含义,例如,在整个数据结构的上下文中,每个键的内容应是唯一的。另一方面,如果值端的内容包含重复项,则完全没有问题,例如,两个唯一键与具有完全相同内容的值相关联。但是,这些方面对ApplicationAssocMapDataType的形式化模型没有任何影响,因此本文档中不考虑这些方面。

ApplicationAssocMapDataType的建模有点简单,其动机主要是需要定义键和值的数据类型。

没有假设关联映射的实现的结构可能是什么样子的。例如,在C++(它是目前唯一支持的AutoSar自适应平台上的语言绑定)中,使用关联映射的直接方式是利用容器ara::core::Map(其中实现对客户端程序员不透明)。

Class ApplicationAssocMapDataType
PackageM2::AUTOSARTemplates::AdaptivePlatform::ApplicationDesign::ApplicationDataType
Note 一种应用程序的数据类型,它是一个映射,由一个键和一个值组成。
Tags:
atp.Status=draft
atp.recommendedPackage=ApplicationDataTypes
BaseARElement, ARObject, ApplicationCompositeDataType, ApplicationDataType, AtpBlueprint, Atp Blueprintable, AtpClassifier, AtpType, AutosarDataType, CollectableElement, Identifiable, Multilanguage Referrable, PackageableElement, Referrable
AttributeTypeMult.KindNote
keyApplicationAssocMapElement1aggr 用于唯一标识映射值的映射的键元素。
Tags:atp.Status=draft
valueApplicationAssocMapElement1aggr存储与键关联的内容的映射的值元素。
Tags:atp.Status=draft
Table 3.6: ApplicationAssocMapDataType
Class ApplicationAssocMapElement
PackageM2::AUTOSARTemplates::AdaptivePlatform::ApplicationDesign::ApplicationDataType
Note描述应用程序映射数据类型的元素的属性。
Tags:atp.Status=draft
BaseARObject, ApplicationCompositeElementDataPrototype, AtpFeature, AtpPrototype, DataPrototype, Identifiable, MultilanguageReferrable, Referrable
AttributeTypeMult.KindNote
-----
Table 3.7: ApplicationAssocMapElement

清单3.1提供了一个ApplicationAssocMapDataType的建模草图示例。

图3.4包含模型的相应图形表示。

Figure 3.4: Example of the model of an associative map
Listing 3.1: Example for the definition of an ApplicationAssocMapDataType
<APPLICATION-ASSOC-MAP-DATA-TYPE>
<SHORT-NAME>MyAssociativeMap</SHORT-NAME>
<KEY>
<SHORT-NAME>MyKey</SHORT-NAME>
<TYPE-TREF DEST="APPLICATION-PRIMITIVE-DATA-TYPE">keyType</TYPE-TREF>
</KEY>
<VALUE>
<SHORT-NAME>MyValue</SHORT-NAME>
<TYPE-TREF DEST="APPLICATION-PRIMITIVE-DATA-TYPE">valueType</TYPE-TREF>
</VALUE>
</APPLICATION-ASSOC-MAP-DATA-TYPE>

<APPLICATION-PRIMITIVE-DATA-TYPE>
<SHORT-NAME>keyType</SHORT-NAME>
<CATEGORY>VALUE</CATEGORY>
</APPLICATION-PRIMITIVE-DATA-TYPE>

<APPLICATION-PRIMITIVE-DATA-TYPE>
<SHORT-NAME>valueType</SHORT-NAME>
<CATEGORY>VALUE</CATEGORY>
</APPLICATION-PRIMITIVE-DATA-TYPE>

但是,需要澄清ApplicationAssocMapDataType的初始化,因为它通常(使用RecordValueSpecification和ArrayValueSpecification的组合)在技术上可以定义多个语义相同的不同结构的ValueSpecifications。

为了使这种不确定因素不符合AUTOSAR标准,通过[constr_1488]阐明了由ApplicationAssocMapDataType类型化的DataPrototype的初始化。

[constr_1488]DRAFT初始化由ApplicationAssocMapDataType类型化的数据原型(DataPrototype): 由ApplicationAssocMapDataType类型化的数据原型(DataPrototype)只能由ApplicationAssocMapValueSpecification初始化。

如前所述,有一个语义需求,即关联映射的关键元素需要在一个关联映射容器的上下文中唯一。

显然,模型对运行时发生的事情没有影响。另一方面,对ApplicationAssocMapDataType的初始化有隐含潜在的影响,请参见[constr_1489]

[constr_1489]DRAFT ApplicationAssocMapValueSpecification.mapElementTuple.key 的唯一性: 在给定的ApplicationAssocMapValueSpecification上下文中,所有mapElementTuple.key元素的值都应该是唯一的。

Class ApplicationAssocMapValueSpecification
PackageM2::AUTOSARTemplates::AdaptivePlatform::ApplicationDesign::ApplicationDataType
Note这个元类表示定义ApplicationAssocMapDataType初始化的能力。
Tags:atp.Status=draft
BaseARObject, CompositeValueSpecification, ValueSpecification
AttributeTypeMult.KindNote
mapElementTuple (ordered)ApplicationAssocMapElementValueSpecification*aggr此聚合表示ApplicationAssocMapValueSpecification元素的初始值。
Tags:atp.Status=draft
Table 3.8: ApplicationAssocMapValueSpecification
Class ApplicationAssocMapElementValueSpecification
PackageM2::AUTOSARTemplates::AdaptivePlatform::ApplicationDesign::ApplicationDataType
Note这个元类表示定义ApplicationAssocMapDataType的元素初始化的能力。
Tags:atp.Status=draft
BaseARObject
AttributeTypeMult.KindNote
keyValueSpecification1aggr此聚合表示AssociationEventValueSpecification的键(key)部分的初始化。
Tags:atp.Status=draft
valueValueSpecification1aggr此聚合表示AssociationEventValueSpecification的值(value)部分的初始化。
Tags:atp.Status=draft
Table 3.9: ApplicationAssocMapElementValueSpecification

3.3.2.3 Attributes of SwDataDefProps

[constr_1478]DRAFTSwDataDefProps适用于AUTOSAR自适应平台专用的ApplicationDataTypes: 表3.10列出了给定类别允许的SwDataDefProps和其他属性及其多重性的完整列表。

[constr_1478]的一个结论是,表3.10仅显示了仅限于AUTOSAR自适应平台的类别值。有关AUTOSAR classic平台上也支持的所有其他类别值,请参阅软件组件模板规范中包含的类似表。

Attributes of SwDataDefPropsRoot Elem.Attribute Existence per Category
ApplicationAssocMapDataTypeApplicationAssocMapElementASSOCIATIVE_MAP
additionalNativeTypeQualifier
annotationxx*
baseType
compuMethod
dataConstr
displayFormatxx0..1
implementationDataType
invalidValue
stepSize
swAddrMethod
swAlignment
swBitRepresentation
swCalibrationAccess
swCalprmAxisSet
swComparisonVariable
swDataDependency
swHostVariable
swImplPolicy
swIntendedResolution
swInterpolationMethod
swIsVirtual
swPointerTargetProps
swRecordLayout
swRefreshTiming
swTextProps
swValueBlockSize
unit
valueAxisDataType
Other Attributes below the Root Element
key: ApplicationAssocMapElementx1
value: ApplicationAssocMapElementx1
Table 3.10: Allowed Attributes vs. category for ApplicationDataTypes

3.3.3 CppImplementationDataType

3.3.3.1 Overview

在AUTOSAR标准中,数据类型代表了整个开发方法中最重要的资产。因此,AUTOSAR实现了一种多层次的数据类型建模方法。所谓的实现数据层(Implementation Data Level)是所描述的一个层次,其目标是在AUTOSAR自适应平台的客厅中(in the parlor of
the AUTOSAR adaptive platform不知道怎么翻译,肯定不能翻译为”客厅“
)建立一个可以称为“语言绑定”的层次上的建模。

对于AUTOSAR经典平台,通过创建Implementation Data type来处理实现数据级别,该数据类型专门用于覆盖C编程语言的数据类型行为。

与AutoSar经典平台相比,AutoSar自适应平台目前不预见C语言的使用,相反(至少在可预见的将来)定义了与C++语言的语言绑定。

因此,有必要提供一种建模方法,在实现数据级的同时,对C++语言的能力进行适当的支持。虽然在技术上可行的是,将实现数据的语义扩展为C++语言绑定的支持,但这将大大降低实现数据的清晰度和表达能力。

因此,添加一个额外的元类系统似乎是合理的,特别是支持使用与C++语言绑定的数据类型。

[TPS_MANI_01166]DRAFTcpppimplementationdatatype的语义: 抽象元类cpppimplementationdatatype支持对支持C++语言绑定的数据类型进行专门建模。(RS_MANI_-00039)

[TPS_MANI_03197]DRAFTStdCppImplementationDataType 的语义: 元类STDCPPPACTION DATABATYPE支持将被映射到C++语言绑定中的C++标准库特征的数据类型的建模。(RS_MANI_00039)

请注意,为了简化起见,结构(category=STRUCTURE)和类型别名(category=type_REFERENCE)也被建模为StdCppImplementationDataTypes。

[TPS_MANI_03198]DRAFTCustomCppImplementationDataType的语义: 元类CustomCppImplementationDataType支持将映射到头文件中声明的C++语言绑定中自定义实现的数据类型的建模。

请注意,customcpppimplementationdatatype的category值受 [constr_1578] 限制。

这意味着只有StdCppImplementationDataTypes才能对原始数据类型和字符串进行建模。原因是AUTOSAR中为SOME/IP和DDS定义的序列化规则是基于标准库定义的数据类型。

Class CppImplementationDataType (abstract)
PackageM2::AUTOSARTemplates::AdaptivePlatform::ApplicationDesign::CppImplementationDataType
Note这个元类表示指定一个可重用的数据类型定义的方式,它是C++语言绑定的基础。
Tags:atp.Status=draft
BaseARElement, ARObject, AbstractImplementationDataType, AtpBlueprint, AtpBlueprintable, AtpClassifier, AtpType, AutosarDataType, CollectableElement, CppImplementationDataTypeContextTarget, Identifiable, MultilanguageReferrable, PackageableElement, Referrable
SubClasses CustomCppImplementationDataType, StdCppImplementationDataType
AttributeTypeMult.KindNote
arraySizePositiveInteger0..1attr如果封闭的CppImplementationDataType具有数组语义,则此属性可用于指定数组大小。
Stereotypes: atpVariation
Tags: vh.latestBindingTime=preCompileTime
namespace(ordered)SymbolProps*aggr此聚合允许定义为封闭的cpppimplementationdata类型提供自己的命名空间。
Tags:atp.Status=draft
subElement(ordered)CppImplementationDataTypeElement*aggr这表示封闭cpppimplementationdatatype的子元素的集合
Tags:atp.Status=draft
templateArgument(ordered)CppTemplateArgument*aggr此聚合允许指定模板参数的属性
Tags:atp.Status=draft
typeEmitterNameToken0..1attr此属性可用于控制如何将相应的CppImplementationDataType贡献给语言绑定。
typeReferenceCppImplementationDataType0..1ref此引用应定义为定义类型引用(也称为typedef)。
Tags:atp.Status=draft
Table 3.11: CppImplementationDataType
Class StdCppImplementationDataType
PackageM2::AUTOSARTemplates::AdaptivePlatform::ApplicationDesign::CppImplementationDataType
Note该元类表示指定数据类型定义的方式,该数据类型定义是C++语言与C++标准库特征绑定的基础。
Tags:
atp.Status=draft
atp.recommendedPackage=CppImplementationDataTypes
BaseARElement, ARObject, AbstractImplementationDataType, AtpBlueprint, AtpBlueprintable, AtpClassifier, AtpType, AutosarDataType, CollectableElement, CppImplementationDataType, CppImplementationData TypeContextTarget, Identifiable, MultilanguageReferrable, PackageableElement, Referrable
AttributeTypeMult.KindNote
-----
Table 3.12: StdCppImplementationDataType
Class CustomCppImplementationDataType
PackageM2::AUTOSARTemplates::AdaptivePlatform::ApplicationDesign::CppImplementationDataType
Note该元类表示指定数据类型定义的方式,该数据类型定义是C++语言与在配置的头文件中声明的自定义实现绑定的基础。此customcpppimplementationdatatype的短名称定义自定义实现的类名(Class-Name)
Tags:
atp.Status=draft
atp.recommendedPackage=CppImplementationDataTypes
BaseARElement, ARObject, AbstractImplementationDataType, AtpBlueprint, AtpBlueprintable, AtpClassifier, AtpType, AutosarDataType, CollectableElement, CppImplementationDataType, CppImplementationData TypeContextTarget, Identifiable, MultilanguageReferrable, PackageableElement, Referrable
AttributeTypeMult.KindNote
headerFileString1attr使用自定义类声明配置头文件。
Table 3.13: CustomCppImplementationDataType

[constr_1571]DRAFTCppImplementationDataType是受限制的: cpppimplementationdatatype的使用仅限于在可执行文件上下文中定义的AdaptiveApplicationSwComponentTypes和compositionswcomponenttypes的上下文。

[TPS_MANI_01167]DRAFTAbstractImplementationDataType : 元类CppImplementationDataType继承自抽象基类AbstractImplementationDataType,以便成为来自其他想要引用**“通用 ImplementationDataType”**的其他元类的特定引用的有效目标。(RS_MANI_00039)

Class AbstractImplementationDataType(abstract)
PackageM2::AUTOSARTemplates::CommonStructure::ImplementationDataTypes
Note这个元类表示不同类型ImplementationDataType的抽象基类
BaseARElement, ARObject, AtpBlueprint, AtpBlueprintable, AtpClassifier, AtpType, AutosarDataType, CollectableElement, Identifiable, MultilanguageReferrable, PackageableElement, Referrable
AttributeTypeMult.KindNote
-----
Table 3.14: AbstractImplementationDataType

在元类DataTypeMap中可以找到一个突出的例子来说明引用 “通用ImplementationDataType ” 的想法。DataTypeMap存在的目的是将ApplicationDataType映射到ImplementationDataType或cppplementationdatatype。

通过建立参考模型DataTypeMap.implementationDataType作为对AbstractImplementationDataType的引用,两个选项都可以在单个角色中使用。

Figure 3.7: CppImplementationDataType overview

与C语言相反,C++支持程序中命名空间的定义。这个特性也可以在AUTOSAR自适应平台上开发,因此需要在建模方法中表示出来。

[TPS_MANI_01168]DRAFTCppImplementationDataType的命名空间规范: 为CppImplementationDataType定义命名空间的能力是通过在角色命名空间中的CppImplementationDataType处聚合SymbolProps 来表示的。(RS_MANI_00039)

[constr_3443]DRAFTStdCppImplementationDataType的命名空间规范: 不允许为类别VALUE的StdCppImplementationDataType定义名称空间。 对于类别的此值,已使用StdCppImplementationDataType来假定std名称空间。

[TPS_MANI_01176]DRAFT属性CppImplementationDataType.typeEmitter 的标准值: AUTOSAR标准为属性CppImplementationDataType.typeEmitter保留以下值 :

  • TYPE_EMITTER_ARA

最重要的是,AUTOSAR为数据类型定义保留了典型头文件的标准名称,作为CppImplementationDataType.typeEmitter的其他可能值(例如,在Adaptive Platform的平台类型规范中定义的CppImplementationDataTypes的Platform_Types.h)(RS_MANI_00039)

[TPS_MANI_01177]DRAFT属性CppImplementationDataType.typeEmitter 的语义: 以下规则适用于属性CppImplementationDataType.typeEmitter的使用:

  • 如果属性typeEmitter设置为值TYPE_EMITTER_ARA ,则ARA生成器应生成相应的数据类型定义。
  • 如果属性typeEmitter被设置为除TYPE_EMITTER_ARA之外的任何值,则ARA生成器将不自动生成相应的数据类型定义。
  • 对于与基本数据类型float(参见 [SWS_APT_00043] )、double(参见 [SWS_APT_00046] )和bool(参见 [SWS_APT_00049] )相对应的CppImplementationDataTypes ,不应定义属性typeEmitter。

(RS_MANI_00039)

[TPS_MANI_01212]DRAFT在customcpppimplementationdatatype上下文中使用属性typeEmitter: 属性typeEmitter不必在customcpppimplementationdatatype的上下文中使用。如果使用typeEmitter,则属性的值应设置为包含相应customcpppimplementationdatatype的语言绑定的头文件的名称。(RS_MANI_00039)

[TPS_MANI_01169]DRAFT支持模板数据类型: 元类CppImplementationDataType 支持使用引用CppImplementationDataType.TimePlaGuess对C++程序中数据类型定义的模板的使用。模板中参数的顺序很重要,因此templateArgument被建模为有序集合。(RS_MANI_00039)

[TPS_MANI_01174]DRAFT角色CppTemplateArgument.templateType中的引用语义: 属性CppTemplateArgument.templateType指定要在语言绑定中模板的相应位置填充的数据类型。(RS_MANI_00039)

[TPS_MANI_01175]DRAFTCppTemplateArgument.allocator角色中的引用语义: 属性cpptTemplateArgument.allocator指定要在语言绑定中模板的相应位置填充的分配器类(allocator)的行为。(RS_MANI_00039)

[constr_1576]DRAFTCppTemplateArgument.templateType 和CppTemplateArgument.allocator的存在对比: 对于任何给定的CppTemplateArgument,最多只能存在一个引用

  • CppTemplateArgument.templateType 或
  • CppTemplateArgument.allocator

[TPS_MANI_01201]DRAFT属性CppTemplateArgument.category的标准化值: AUTOSAR为属性CppTemplateArgument.category保留以下值:

  • ASSOC_MAP_KEY : 特定的CppTemplateArgument表示关联映射的键数据类型。
  • ASSOC_MAP_VALUE :特定的CppTemplateArgument表示关联映射的值数据类型。

(RS_MANI_00039)

Class CppTemplateArgument
PackageM2::AUTOSARTemplates::AdaptivePlatform::ApplicationDesign::CppImplementationDataType
Note此元类具有为模板参数定义属性的能力
Tags: atp.Status=draft
BaseARObject
AttributeTypeMult.KindNote
allocatorAllocator0..1ref此引用标识适用的分配器。
Tags: atp.Status=draft
categoryCategoryString0..1attr该属性将用于进一步阐明有关CppTemplateArgument的语义。
inplaceBoolean0..1attr此属性指定是在代码生成中使用引用的templateType的shortName,还是在封闭的CppImplementationDataType之外定义类型声明(true),还是将类型定义嵌入在封闭的CppImplementationDataType内,并且忽略shortName(false) 。
templateTypeCppImplementationDataType0..1ref此引用标识语言绑定所需的特定模板参数的数据类型。
Tags: atp.Status=draft
Table 3.15: CppTemplateArgument

[TPS_MANI_01171]DRAFT结构化数据类型的建模: 元类CppImplementationDataType支持通过角色subElement中的CppImplementationDataTypeElement的聚合来创建嵌套数据类型。由于结构化数据类型中子元素的顺序很重要,因此将聚合子元素建模为有序集合。(RS_MANI_00039)

请注意,虽然结构的建模是使用cpppimplementationdatatype正式完成的,但实际上只有使用StdCppImplementationDataType才能实现此目的(请参见**[constr_1578]**)

Class CppImplementationDataTypeElement
PackageM2::AUTOSARTemplates::AdaptivePlatform::ApplicationDesign::CppImplementationDataType
Note声明一个在本地聚合的数据对象。 这样的元素只能在聚合的范围内使用。 CppImplementationDataTypeElement用于表示结构的元素,定义其类型。
Tags: atp.Status=draft
BaseARObject, AbstractImplementationDataTypeElement, AtpClassifier, AtpFeature, AtpStructureElement,CppImplementationDataTypeContextTarget, Identifiable, MultilanguageReferrable, Referrable
AttributeTypeMult.KindNote
isOptionalBoolean0..1attr 此属性表示将封闭的CppImplementationDataTypeElement声明为可选的能力。这意味着,在运行时, CppImplementationDataTypeElement可能有也可能没有有效值,因此应被忽略。 底层运行时软件提供了在通信的发送端将CppImplementationDataTypeElement设置为无效并在接收端确定其有效性的方法。
typeReferenceCppImplementationDataTypeElementQualifier0..1aggr此聚合定义CppImplementationDataTypeElement的类型,并确定在C ++中是否 CppImplementationDataTypeElement在封闭的CppImplementationDataType的内部或外部定义
Tags: atp.Status=draft
Table 3.16: CppImplementationDataTypeElement

请注意,没有支持支持结构化数据类型的“混合”建模的方法,这样C++级的结果数据类型将由C++中的数据类型和C子系统的数据类型组成。

虽然这在技术上在代码级是可能的,但在建模级却需要付出巨大的努力,而且普遍的共识是,对于这种“混合”数据类型没有真正的用例。

C++数据类型系统可以在AutoSar自适应平台的实现上完全取代C++中的“遗留”C数据类型。

[constr_1572]DRAFTCppImplementationDataType中SwDataDefProps.implementationDataType的用法: 在cpppimplementationdatatype的范围内,引用CppImplementationDataType.swDataDefProps.implementationDataType 不应存在。

这一方面也由 [Const_1579] 以更通用的形式表达。

由于 [constr_1572] ,类型引用必须在AUTOSAR自适应平台上以不同的方式进行。为此,可提供专门的参考资料。

[TPS_MANI_01172]DRAFTCppImplementationDataType范围内类型引用的说明: 引用CppImplementationDataType.typeReference可以用于创建从封闭的CppImplementationDataType到另一个CppImplementationDataType的类型引用。(RS_MANI_00039)

[TPS_MANI_01173]DRAFTCppImplementationDataTypeElement范围内类型引用的说明: CppImplementationDataTypeElement.typeReference可用于创建对CppImplementationDataType的引用,该引用应适用于封闭的CppImplementationDataTypeElement。(RS_MANI_00039)

请注意,CppImplementationDataTypeElement.typeReference是实现为允许将inplace属性添加到typeReference的关联类。

Class CppImplementationDataTypeElementQualifier
PackageM2::AUTOSARTemplates::AdaptivePlatform::ApplicationDesign::CppImplementationDataType
Note此元素将CppImplementationDataTypeElement的类型引用限定为CppImplementationDataType。
Tags: atp.Status=draft
BaseARObject
AttributeTypeMult.KindNote
inplaceBoolean0..1attr此属性定义C ++中CppImplementationDataTypeElement的成员类型是封闭结构内部的嵌入式类型元素(true)还是类型声明是在结构外部定义的
typeReferenceCppImplementationDataType1ref此引用定义类型引用。
Tags: atp.Status=draft
Table 3.17: CppImplementationDataTypeElementQualifier

[TPS_MANI_03196]DRAFT属性CppImplementationDataTypeElementQualifier.inplace 的语义: CppImplementationDataTypeElementQualifier.inplace属性定义C ++语言绑定中CppImplementationDataTypeElement的数据类型是否从引用的CppImplementationDataType的名称或属性派生。

具体而言,应遵循以下规则:

  • 如果CppImplementationDataTypeElement.typeReference.inplace设置为False,则在C ++语言绑定中应使用在角色CppImplementationDataTypeElement.typeReference.typeReference中引用的CppImplementationDataType的shortName。
  • 如果CppImplementationDataTypeElement.typeReference.inplace设置为True,则在C ++语言绑定中仅使用在角色CppImplementationDataTypeElement.typeReference.typeReference中引用的CppImplementationDataType的属性,而忽略shortName。

(RS_MANI_00039)

请注意,图3.13显示了一个结构示例,其中一个子元素的typeReference被分类为inplace。

[constr_1659]DRAFT使用CppImplementationDataTypeElementQualifier.inplace的限制: 仅当角色CppImplementationDataTypeElementQualifier.typeReference中引用的目标是StdCppImplementationDataType且属性类别设置为以下值中的任意一个时,属性CppImplementationDataTypeElementQualifier.inplace才存在。

  • ARRAY
  • VECTOR
  • ASSOCIATIVE_MAP
  • VARIANT
  • STRUCTURE
  • STRING

[constr_1659]存在的理由:通过应用排除原理,在三种情况下属性CppImplementationDataTypeElementQualifier.inplace不存在:

  • 类别VALUE的StdCppImplementationDataType
  • CustomCppImplementationDataType
  • 类别TYPE_REFERENCE的CppImplementationDataType

它们都不能用作CppImplementationDataTypeElementQualifier.typeReference的目标,其中CppImplementationDataTypeElementQualifier.inplace被设置为True,因为在这些情况下,已经有一个有效的名称可直接用于语言绑定,并且通过using子句可能的间接寻址显然需要一个额外的名称,而该名称在模型中不可用。

毕竟,定义TYPE_REFERENCE的动机与使用属性CppImplementationDataTypeElementQualifier.inplace控制语言绑定的动机正好相反。 因此,这种情况也被排除在外。

[TPS_MANI_03201]DRAFT属性CppTemplateArgument.inplace 的语义: CppTemplateArgument.inplace属性定义C ++语言绑定中templateType引用的数据类型是否从引用的CppImplementationDataType的名称或属性派生。

具体来说,应遵循以下规则:

  • 如果CppTemplateArgument.inplace设置为False,则在C ++语言绑定中应使用在角色CppTemplateArgument.templateType中引用的CppImplementationDataType的shortName。
  • 如果CppTemplateArgument.inplace设置为True,则在C ++语言绑定中只能使用在角色CppTemplateArgument.templateType中引用的CppImplementationDataType的属性,而忽略shortName。

(RS_MANI_00039)

[constr_1660]DRAFTCppTemplateArgument.inplace的使用限制: 仅当角色CppTemplateArgument.templateType中引用的目标是StdCppImplementationDataType且属性类别设置为以下值中的任意一个时,属性CppTemplateArgument.inplace才存在。

  • ARRAY
  • VECTOR
  • ASSOCIATIVE_MAP
  • VARIANT
  • STRUCTURE
  • STRING

[constr_1660]存在的理由:通过应用排除原理,在三种情况下属性CppTemplateArgument.inplace将不存在:

  • 类别VALUE的StdCppImplementationDataType
  • CustomCppImplementationDataType
  • 类别TYPE_REFERENCE的CppImplementationDataType

它们都不能用作CppTemplateArgument.templateType的目标,其中CppTemplateArgument.inplace设置为True,因为在这些情况下,已经有一个有效的名称可直接用于语言绑定,并且通过using子句可能的间接寻址显然需要模型中不可用的附加名称。

毕竟,定义TYPE_REFERENCE的动机与使用属性CppTemplateArgument.inplace控制语言绑定的动机直接相反。 因此,这种情况也被排除在外。

请注意,对于引用类别STRUCTURE的StdCppImplementationDataType的CppTemplateArgument.templateType而言,属性CppTemplateArgument.inplace的值问题由**[constr_3462]**规范。

[constr_1708]DRAFTCppImplementationDataTypeElement.isopolatial和CppImplementationDataTypeElementQualifier.inplace的组合: 如果使用类别STRUCTURE的CppImplementationDataType键入CppImplementationDataTypeElement,则属性的组合
将CppImplementationDataTypeElement.isOptional设置为True,不允许将CppImplementationDataTypeElement.typeReference.inplace设置为True。

[constr_1708]存在的理由:“可选”语义是通过模板实现的,不可能将“ inplace”结构作为模板参数传递。

[constr_3462]DRAFT对类别STRUCTURE和inplace标志的StdCppImplementationDataType的CppTemplateArgument.templateType引用: 指向类别STRUCTURE的StdCppImplementationDataType的CppTemplateArgument.templateType必须将inplace属性设置为false。

[constr_3462]的原因是ISO C ++ 11/14/17不允许将未命名结构用作模板参数。

[constr_3446]DRAFT带有分配器引用和inplace标志的CppTemplateArgument: 一个带有分配引用的CppTemplateArgument 不应给inplace标志设置一个值。

Class Allocator
PackageM2::AUTOSARTemplates::AdaptivePlatform::ApplicationDesign::CppImplementationDataType
Note这个元类表示能够影响对象在内存中的分配方式,例如,可以控制对象是在堆上还是在堆栈上分配。
Tags:
atp.Status=draft
atp.recommendedPackage=Allocators
BaseARElement, ARObject, CollectableElement, Identifiable, MultilanguageReferrable, PackageableElement, Referrable
AttributeTypeMult.KindNote
namespace(ordered)SymbolProps*aggr此聚合允许定义分配器的命名空间。
Tags: atp.Status=draft
Table 3.18: Allocator

[TPS_MANI_01100]DRAFTAllocator 的语义: 元类Allocator具有定义内存分配属性的能力。内存分配的一般方法是通过属性类别来表示的。

AUTOSAR对以下Allocator.category值进行了标准化:

  • MAX_SIZE_HEAP :使用此分配器时,有意在堆上分配固定大小的块。 该分配器为ara :: core :: Vector的默认分配器的语义增加了定义最大元素数的能力。
  • MAX_SIZE_STACK :使用这个分配器时,打算在堆栈上分配一个固定大小的块。堆栈上的内存总是需要根据最大大小进行限制。换句话说,几乎没有任何情况下应该在堆栈上分配无限量的内存。
  • MAX_SIZE_DATASEGMENT: 当使用这个分配器时,打算在数据段中分配一个固定大小的块。

(RS_MANI_00016)

[constr_1578]DRAFT适用的数据类别: 表3.19定义了适用的类别与元类。

  • AADT: ApplicationArrayDataType
  • ARDT: ApplicationRecordDataType
  • APDT: ApplicationPrimitiveDataType
  • ARE: ApplicationRecordElement
  • AAE: ApplicationArrayElement
  • AVS: ApplicationValueSpecification
  • SCDT: StdCppImplementationDataType
  • CCDT: CustomCppImplementationDataType
CategoryApplicable to ...Description
AADTARDTAPDTAREAAEAVSSCDTCCDT
VALUExxxxx包含单个值。另见[TPS_MANI_03192]。
TYPE_REFERENCEx该元素是通过引用另一种数据类型(通过CppImplementationDataType.typeReference来定义的)。
STRUCTURExxxx包含一个或几个其他元素,这些元素可以具有不同的AutosarDataType。 另请参阅[TPS_MANI_03180]
VARIANTxx可以容纳不同数据类型的值。 它与STRUCTURE类似,不同之处在于其所有成员均始于内存中的同一位置
VARIANT数据原型一次只能包含其元素之一,并且代表类型安全的联合。 VARIANT的大小至少是最大成员的大小。 另请参阅[TPS_MANI_03189]。
ARRAYxxxxx固定大小的相同类型子元素数组。 另请参阅[TPS_MANI_03169]。
VECTORxx一系列元素的数组,同时可以在运行时增加长度的数据结构,另请参阅[TPS_MANI_03174]。
ASSOCIATIVE_MAPxx键值对的关联数组。 另请参阅[TPS_MANI_03183]
STRINGxxxx

以上是关于:3 Application Design(1~3节))的主要内容,如果未能解决你的问题,请参考以下文章

ant design框架学习

破性改进Stat-Ease Design-Expert v10.0.0.3

错误:(30,18)无法解决:com.android.support:design-v7:25.3.1

design_model(24)分类与备注

如何使用 Webpack 3 配置 Ant Design

前端学习(3180):ant-design介绍3

(c)2006-2024 SYSTEM All Rights Reserved IT常识