全部学习汇总: https:///GreyZhang/hack_autosar
继续学习AUTOSAR,看一下官方的文档。

3 概述:软件组件、端口和接口
3.1 简介
一步一步详细介绍软件组件模板的各个方面,被认为过于复杂。 因此,本章概述了软件组件、端口和接口的主要概念方面。 然后,概述将在第 4 章中进一步细分。
AUTOSAR 概念的目标之一是支持应用软件级别的可重用性。 换句话说:应该可以重用现有的工件来创建更多的模型元素,而不是被迫从头开始创建每个建模细节。 这种方法的结果之一是应用了所谓的类型原型模式 [12]。
除此之外,这个概念允许创建具有任意复杂性的软件组件的层次结构。 但是,层次结构的创建本身不会对整个系统的运行时行为产生影响。 实际行为完全在各个软件组件中定义。
这一结论得到了以下理解的支持:软件组件是针对所谓的虚拟功能总线 (VFB) 开发的,VFB 是一种抽象的通信通道,不直接依赖于 ECU 和通信总线。 VFB 不提供任何表示软件组件层次结构的方法。
当然,VFB 的使用对不应直接调用操作系统或通信硬件的软件组件的设计有进一步的影响。 因此,可以在开发过程的较晚阶段将软件组件部署到实际的 ECU。
为了使描述更加准确,下面的文字最好使用准确的元模型术语,而不是“组合”和“软件组件”等比较含糊的术语。

3.2 软件组件
3.2.1 概述
AUTOSAR 中的应用软件被组织在称为 AtomicSwComponentTypes 的独立单元中。 此类 AtomicSwComponentType 封装了其功能和行为的实现,并且仅向外界公开了定义良好的连接点,称为 PortPrototype。

根据 [3] 的 AUTOSAR 软件组件的图形外观如图 3.1 所示。


AUTOSAR 软件组件的基类。

3.2.2 PortPrototype
请注意,SwComponentType 的 PortPrototype 应该用于连接 SwConnector,从而在 SwComponentPrototype 之间建立实际连接(参见第 3.3 章)。
SwComponentTypes 只能通过它们的 PortPrototypes 进行交互
AtomicSwComponentTypes(以及更通用的 SwComponentTypes 可能只能通过它们的 PortPrototypes 进行交互)。 严格禁止未通过 PortPrototypes 表达的隐藏通信依赖项。
因此,只要软件组件实现相同的功能并为其余系统提供相同的公共通信接口,它们理论上就可以互换。


AUTOSAR 软件组件端口的基类。
PortPrototypes 的聚合受制于可变性,目的是支持端口的有条件存在。


PortPrototypes 需要一个额外的模型工件,PortInterface
请注意 PortPrototypes 实际上需要一个额外的模型工件 PortInterface 来完整描述 PortPrototype 的细节。 PortInterface 的概念作为另一种建立高度可重用性的方法在第 3.4 章中描述。

PortPrototype 的语义
如图 3.2 所示,PortPrototypes 可以具有以下语义:
• require-port(技术术语:RPortPrototype)需要某些服务或数据。
• 另一方面,提供端口(或 PPortPrototype)提供服务或数据。
• 提供-要求-端口(或PRPortPrototype)结合了在一个实体中提供和要求服务或数据的能力。

PRPortPrototype 永远不会被认为是未连接的
PRPortPrototype 永远不会被认为是未连接的,即使实际上没有 SwConnector 引用它。
请注意,[TPS_SWCT_01573] 表示 [TPS_SWCT_01112] 中定义的语义的直接后果。
批注:其实,这个是容易理解的。PR类型其实是可以被认为有自引用功能的,这样是否是连接状态也就不是很好判断了。

连接两个 PortPrototype
两个 SwComponentPrototype 最终通过将一个 SwComponentPrototype 的 PPortPrototype 或 PRPortPrototype 连接到其他 SwComponentPrototype 的兼容 RPortPrototype 或 PRPortPrototype 来连接。 请在第 6 节中找到有关“兼容性”定义的更多信息。

这个抽象类提供了成为必需的 PortPrototype 的能力。

这个抽象类提供了成为提供的 PortPrototype 的能力。

需要特定端口接口的组件端口。

组件端口提供一定的端口接口。

这种 PortPrototype 可以同时充当必需的和提供的 PortPrototype。

端口组
PortPrototypes 可以在逻辑上分组为 PortGroups。 该机制用于实现模式管理功能,并在第 4.6 章中进一步解释。

3.2.3 AtomicSwComponentType
AtomicSwComponentType 的附加值
如前所述,术语 AtomicSwComponentType 是 SwComponentType 的一般概念的特定形式。 AtomicSwComponentType 的附加值是它可以聚合一个 InternalBehavior(参见第 7 章)。

在后面的流程步骤中添加 SwcInternalBehavior
SwcInternalBehavior 的聚合是原型 atpSplitable 以允许在后面的流程步骤中添加 SwcInternalBehavior。 换句话说,可以完全开发软件组件的 VFB 视图,然后添加更多细节,如 InternalBehavior。

原子软件组件是原子的,因为它不能被进一步分解和分布在多个 ECU 之间。

有几个专门的 SwComponentTypes 来描述在 AUTOSAR 分层架构 [6] 的不同部分中使用的特定软件组件。 更多细节在第 10 章和第 11 章中提到。

ApplicationSwComponentType 是 AtomicSwComponentType 的特化,用于表示与硬件无关的应用软件。 ParameterSwComponentType 是 SwComponentType 的特化,与 AtomicSwComponentType 相比,它可以不聚合 SwcInternalBehavior。
NvBlockSwComponentType 的用途在 11.5.2 节中有详细描述。 ServiceSwComponentType 在 11.3 节中描述。 此外,第 10 节详细讨论了 EcuAbstractionSwComponentType 和 ComplexDeviceDriverSwComponentType。
ServiceProxySwComponentType 的描述可以在第 11.4 节中找到,而 SensorActuatorSwComponentType 在第 10.4 节中描述。
ApplicationSwComponentType 用于表示应用软件。
这部分,主要是梳理了软件组件、端口、接口部分的概述,着重看了简介以及软件组件的概述和端口圆形以及原子组件类型。
















