Autosar4.4:软件组件模板-软件组件、端口和接口简介(3/3)
一口气对软件组件模板的各个方面进行详细介绍被认为过于复杂。因此,本章概述了软件组件,端口和接口的主要概念。然后在以后将概述细分为更多详细信息。
AUTOSAR概念的目标之一是在应用程序软件级别上支持可重用性。
换句话说:应该有可能重新使用现有的工件来创建更多的模型元素,而不是被迫从头开始创建每个单独的模型细节。这种方法的后果之一是应用了所谓的类型原型模式(见Generic Structure Template)。
除其他事项外,该概念允许创建具有任意复杂度的软件组件的分层结构。但是,层次结构的创建本身不会对整个系统的运行时行为产生影响。实际行为是在各个软件组件中完全定义的。
该结论基于以下理解:软件组件是针对所谓的虚拟功能总线(VFB)开发的,虚拟功能总线是一种抽象的通信通道,而无需直接依赖ECU和通信总线。 VFB不提供任何表达软件组件层次结构的方法。
当然,VFB的使用会对软件组件的设计产生进一步的影响,这些组件不应直接调用操作系统或通信硬件。结果,可以在开发过程的后期将软件组件部署到实际的ECU。
为了使描述更加精确,以下文本优选使用准确的元模型术语,而不是模糊的术语“组合”和“软件组件”。
本章有三节:
1、Software Component(软件组件)
2、Composition(组合)
3、Port Interface(端口接口)
本章分三部分讲解:
3、Port Interface(端口接口)
Port Interface 端口接口
PortPrototypes在AUTOSAR体系结构中的作用
PortPrototype主要提供了作为AUTOSAR概念的连接点的功能。由PortInterface定义细节,即有关在两个PortPrototype之间实际传输哪种信息的信息。
PortInterfaces在AUTOSAR体系结构中的作用
PortInterfaces用于支持按合同设计的工作流程,即PortInterface提供了正式验证软件组件之间结构和动态兼容性的方法。
换句话说:PortInterfaces表示AUTOSAR概念中的关键点。
请注意,PortInterface为包含的信息创建一个名称空间。这样就可以定义特定PortInterface的细节,而不必考虑其他PortInterfaces可能产生的副作用。同样,AUTOSAR概念的此属性直接支持可重用性。
不同类型的PortInterfaces
在AUTOSAR概念中,定义了PortInterfaces的不同样式:
• SenderReceiverInterface
• NvDataInterface
• ParameterInterface
• ModeSwitchInterface
• ClientServerInterface
• TriggerInterface
DataInterface定义为抽象基类
请注意,SenderReceiverInterface,NvDataInterface和ParameterInterface的概念关系由抽象基类DataInterface的定义表示。
PortInterface充当PortPrototype的类型
从抽象的角度来看,PortInterface充当PortPrototype的类型。 这尤其意味着可以通过同一PortInterface键入多个PortPrototype。
当然,这方面极大地促进了软件组件之间有效连接的创建。 通过使用特定的PortInterface键入特定的PortPrototype,后者可以通过定义相互连接。
但是,创建有效连接不必基于相同PortInterfaces的用法。 也可以使用其他但兼容的PortInterfaces。
连接各种PortInterfaces
连接不同类型的PortInterfaces类型的PortPrototypes应该是不可能的。 DataInterface的子类是此规则的一个例外,可以用于创建彼此的连接。
为了澄清起见,在SenderReceiverInterface类型的PortPrototype与ClientServerInterface类型的PortPrototype之间将不可能建立连接。 但是,支持在SenderReceiverInterface类型的PortPrototype和ParameterInterface类型的PortPrototype之间创建连接。
ParameterInterface的适用性
由ParameterInterface键入的PPortPrototype只能由ParameterSwComponentType拥有。
请注意,PortInterfaces在定义所谓的AUTOSAR服务方面也起着重要作用。 特别是,通过属性isService,PortInterface可以定义是否应在AUTOSAR服务的上下文中使用它,除此之外,它还可以(通过属性serviceKind)定义打算使用的服务类型。
serviceKind中包含的信息可以以多种方式使用。主要目的是区分标准AUTOSAR服务的使用与供应商特定服务的使用。此信息可能会影响使用PortInterface的软件组件的开发和构建过程。
另外,还可以使用serviceKind中包含的信息来过滤AUTOSAR创作工具中的AUTOSAR模型的表示,例如独立于相应PortInterface的内容,显示服务PortPrototypes的性质。
与serviceKind的值和PortInterface的实际实现有关的不一致
如果serviceKind的值与PortInterface的实际实现不一致,则PortInterface的实现将赢得属性PortInterface.serviceKind的值(出于预期目的,应将其视为注释,而不是语义绑定信息)。
如果未定义serviceKind,则为默认值
如果未在特定PortInterface的上下文中定义属性serviceKind,则默认值为anyStandardized。
在CompositionSwComponentTypes上下文中使用的PortInterfaces不能引用AUTOSAR服务
CompositionSwComponentTypes不应拥有在属性isService设置为true的情况下由PortInterfaces键入的PortPrototypes。