Skip to content

TOSCA Software-Defined Car (SofDCar) Profile 1.0 Release Candidate

This document specifies the TOSCA Software-Defined Car (SofDCar) profile. This profile includes normative TOSCA types for the domain of software-defined cars. Standardizing such normative TOSCA types improves interoperability. For example, an ECU supplier can model and distribute the deployment and management of their ECUs using these types. Various OEMs can then import provided models and integrate them into their cars. The specification is under active development and is not backwards compatible with any previous versions.

TOSCA SofDCar Core Profile

The core normative TOSCA type definitions contain high-level type definitions which are mainly derived from the normative TOSCA type definitions of the TOSCA Simple Profile in YAML 1.3. These types mainly concern the following topics.

  • Hardware and software of electronic computing units (ECUs) which are typically microcontrollers
  • Hardware and software of high performance computing platforms (HPCs) which are typically microprocessors
  • Sensors and actuators
  • Communication channels

Considering the modeling communication, the TOSCA modeling approach is application centric meaning that, e.g., a CAN communication is modeled by relationships between the communicating software components. Thus, no (physical) CAN bus is modeled between the ECUs. However, this might not provide all required information. This issue is also discussed in the networking section of the TOSCA specification. In this section, the authors of TOSCA propose to have a TOSCA model for the application and a second separate one for the networking. Therefore, we provide type definitions to model such an automotive TOSCA networking model which includes, e.g., a physical CAN bus.

Artifact Types

We specify the following normative artifact types. An overview is given in Figure C1.

Artifact Types

Figure C1: TOSCA SofDCar Core Artifact Types

sofdcar.artifacts.Root

The artifact all other artifacts are derived from.

sofdcar.artifacts.Root:
    derived_from: tosca.artifacts.Root

sofdcar.artifacts.Deployment

The artifact all other deployment artifacts are derived from.

sofdcar.artifacts.Deployment:
    derived_from: tosca.artifacts.Deployment

sofdcar.artifacts.Implementation

The artifact all other implementation artifacts are derived from.

sofdcar.artifacts.Implementation:
    derived_from: tosca.artifacts.Implementation

Capability Types

We specify the following normative capability types. An overview is given in Figure C2.

Capability Types

Figure C2: TOSCA SofDCar Core Capability Types

sofdcar.capabilities.Root

The capability all other capabilities are derived from.

sofdcar.capabilities.Root:
    derived_from: tosca.capabilities.Root

sofdcar.capabilities.Host.ECU.Software

The capability to host an ECU software.

sofdcar.capabilities.Host.ECU.Software:
    derived_from: tosca.capabilities.Container

sofdcar.capabilities.OperatingSystem.RealTime

The capability to provide a real-time operating system.

sofdcar.capabilities.OperatingSystem.RealTime:
    derived_from: tosca.capabilities.OperatingSystem
    properties:
        time_guarantee:
            type: integer
            required: false
        guarantee_type:
            type: string
            constraints:
                - valid_values:
                      - hard
                      - firm
                      - soft

sofdcar.capabilities.Endpoint

The capability to provide an endpoint to which a client can connect to.

sofdcar.capabilities.Endpoint:
    derived_from: sofdcar.capabilities.Root

Data Types

We specify the following normative data types. An overview is given in Figure C3.

Data Types

Figure C3: TOSCA SofDCar Core Data Types

sofdcar.data.Root

The data all other data are derived from.

sofdcar.data.Root:
    derived_from: tosca.datatypes.Root

Group Types

We specify the following normative group types. An overview is given in Figure C4.

Group Types

Figure C4: TOSCA SofDCar Core Group Types

sofdcar.groups.Root

The group all other groups are derived from.

sofdcar.groups.Root:
    derived_from: tosca.groups.Root

sofdcar.groups.Location

The geographical location of nodes.

sofdcar.groups.Location:
    derived_from: sofdcar.groups.Root

sofdcar.groups.Domain

The domain in a domain-oriented architecture.

sofdcar.groups.Domain:
    derived_from: sofdcar.groups.Root

sofdcar.groups.Zone

The zone in a zone-oriented architecture.

sofdcar.groups.Zone:
    derived_from: sofdcar.groups.Root

Interface Types

We specify the following normative interface types. An overview is given in Figure C5.

Interface Types

Figure C5: TOSCA SofDCar Core Interface Types

sofdcar.interfaces.Root

The interface all other interfaces are derived from.

sofdcar.interfaces.Root:
    derived_from: tosca.interfaces.Root

sofdcar.interfaces.Nodes

The standard management interface of nodes.

1
2
3
4
5
sofdcar.interfaces.Nodes:
    derived_from: tosca.interfaces.node.lifecycle.Standard
    operations:
        build:
            description: Builds deployment artifacts.

sofdcar.interfaces.Relationship

The standard management interface for relationships.

sofdcar.interfaces.Relationship:
    derived_from: tosca.interfaces.relationship.Configure

Node Types

We specify the following normative node types. An overview is given in Figure C6.

Node Types

Figure C6: TOSCA SofDCar Core Node Types

sofdcar.nodes.Root

The node all other nodes are derived from.

sofdcar.nodes.Root:
    derived_from: tosca.nodes.Root

sofdcar.nodes.Vehicle

The node all other vehicles are derived from.

sofdcar.nodes.Vehicle:
    derived_from: sofdcar.nodes.Root

sofdcar.nodes.Cloud

The node all other clouds are derived from.

sofdcar.nodes.Cloud:
    derived_from: sofdcar.nodes.Root

sofdcar.nodes.ECU.Hardware

The hardware of an ECU.

1
2
3
4
5
6
7
sofdcar.nodes.ECU.Hardware:
    derived_from: sofdcar.nodes.Root
    capabilities:
        host:
            type: sofdcar.capabilities.Host.ECU.Software
            valid_source_types:
                - sofdcar.nodes.ECU.Software

sofdcar.nodes.ECU.Software

The software running on an ECU.

1
2
3
4
5
6
sofdcar.nodes.ECU.Software:
    derived_from: sofdcar.nodes.Root
    requirements:
        - host:
              capability: sofdcar.capabilities.Host.ECU.Software
              relationship: tosca.relationships.HostedOn

sofdcar.nodes.ECU.Runtime

The runtime for an ECU software.

sofdcar.nodes.ECU.Runtime:
    derived_from: sofdcar.nodes.ECU.Software
    capabilities:
        host:
            type: sofdcar.capabilities.Host.ECU.Software
            valid_source_types:
                - sofdcar.nodes.ECU.Software
    requirements:
        - host:
              capability: sofdcar.capabilities.Host.ECU.Software
              relationship: tosca.relationships.HostedOn

sofdcar.nodes.HPC.Software

The software running on an HPC.

sofdcar.nodes.HPC.Software:
    derived_from: tosca.nodes.SoftwareComponent

sofdcar.nodes.HPC.Hardware

The hardware of an HPC.

1
2
3
4
5
6
7
sofdcar.nodes.HPC.Hardware:
    derived_from: sofdcar.nodes.Root
    capabilities:
        host:
            type: tosca.capabilities.Compute
            valid_source_types:
                - tosca.nodes.SoftwareComponent

sofdcar.nodes.Actuator

The node all other actuators are derived from.

sofdcar.nodes.Actuator:
    derived_from: sofdcar.nodes.Root

sofdcar.nodes.Accelerator

The node all other accelerators are derived from.

sofdcar.nodes.Accelerator:
    derived_from: sofdcar.nodes.Actuator

sofdcar.nodes.Brake

The node all other brakes are derived from.

sofdcar.nodes.Brake:
    derived_from: sofdcar.nodes.Actuator

sofdcar.nodes.Steering

The node all other steerings are derived from.

sofdcar.nodes.Steering:
    derived_from: sofdcar.nodes.Actuator

sofdcar.nodes.Light

The node all other lights are derived from.

sofdcar.nodes.Light:
    derived_from: sofdcar.nodes.Actuator

sofdcar.nodes.Cooling

The node all other coolings are derived from.

sofdcar.nodes.Cooling:
    derived_from: sofdcar.nodes.Actuator

sofdcar.nodes.Airbag

The node all other airbags are derived from.

sofdcar.nodes.Airbag:
    derived_from: sofdcar.nodes.Actuator

sofdcar.nodes.Sensor

The node all other sensors are derived from.

sofdcar.nodes.Sensor:
    derived_from: sofdcar.nodes.Root

sofdcar.nodes.RADAR

The node all other RADAR are derived from.

sofdcar.nodes.RADAR:
    derived_from: sofdcar.nodes.Sensor

sofdcar.nodes.Camera

The node all other cameras are derived from.

sofdcar.nodes.Camera:
    derived_from: sofdcar.nodes.Sensor

sofdcar.nodes.LIDAR

The node all other LIDAR are derived from.

sofdcar.nodes.LIDAR:
    derived_from: sofdcar.nodes.Sensor

sofdcar.nodes.Ultrasonic

The node all other ultrasonics are derived from.

sofdcar.nodes.Ultrasonic:
    derived_from: sofdcar.nodes.Sensor

sofdcar.nodes.Microphone

The node all other microphones are derived from.

sofdcar.nodes.Microphone:
    derived_from: sofdcar.nodes.Sensor

sofdcar.nodes.Channel

The node all other communication channels are derived from.

1
2
3
4
5
6
7
8
sofdcar.nodes.Channel:
    derived_from: sofdcar.nodes.Root
    capabilities:
        endpoint:
            type: sofdcar.capabilities.Endpoint
            occurrences:
                - 0
                - UNBOUNDED

sofdcar.nodes.Battery

The node all other batteries are derived from.

sofdcar.nodes.Battery:
    derived_from: sofdcar.nodes.Root

sofdcar.nodes.Feature

The node all other features are derived from.

sofdcar.nodes.Feature:
    derived_from: sofdcar.nodes.Root

Policy Types

We specify the following normative policy types. An overview is given in Figure C7.

Policy Types

Figure C7: TOSCA SofDCar Core Policy Types

sofdcar.policies.Root

The policy all other policies are derived from.

sofdcar.policies.Root:
    derived_from: tosca.policies.Root

sofdcar.policies.Security

The policy all other security-related policies are derived from.

sofdcar.policies.Security:
    derived_from: sofdcar.policies.Root

sofdcar.policies.Safety

The policy all other safety-related policies are derived from.

sofdcar.policies.Safety:
    derived_from: sofdcar.policies.Root

Relationship Types

We specify the following normative relationship types. An overview is given in Figure C8.

Relationship Types

Figure C8: TOSCA SofDCar Core Relationship Types

sofdcar.relationships.Root

The relationship all other relationships are derived from.

sofdcar.relationships.Root:
    derived_from: tosca.relationships.Root

TOSCA SofDCar Extended Profile

The extended normative TOSCA type definitions contain additional high-level type definitions which are derived from the core type definitions. These types mainly concern specific communications, such as CAN or FlexRay, but also ECUs and HPCs, such as Arduino or Raspberry Pi.

Capability Types

We specify the following normative capability types. An overview is given in Figure E1.

Capability Types

Figure E1: Capability Types

sofdcar.capabilities.Endpoint.CAN

The capability to provide a CAN endpoint.

sofdcar.capabilities.Endpoint.CAN:
    derived_from: sofdcar.capabilities.Endpoint

sofdcar.capabilities.Endpoint.CAN-FD

The capability to provide a CAN-FD endpoint.

sofdcar.capabilities.Endpoint.CAN-FD:
    derived_from: sofdcar.capabilities.Endpoint.CAN

sofdcar.capabilities.Endpoint.LIN

The capability to provide a LIN endpoint.

sofdcar.capabilities.Endpoint.LIN:
    derived_from: sofdcar.capabilities.Endpoint

sofdcar.capabilities.Endpoint.MOST

The capability to provide a MOST endpoint.

sofdcar.capabilities.Endpoint.MOST:
    derived_from: sofdcar.capabilities.Endpoint

sofdcar.capabilities.Endpoint.GPIO

The capability to provide a GPIO endpoint.

sofdcar.capabilities.Endpoint.GPIO:
    derived_from: sofdcar.capabilities.Endpoint

sofdcar.capabilities.Endpoint.FlexRay

The capability to provide a FlexRay endpoint.

sofdcar.capabilities.Endpoint.FlexRay:
    derived_from: sofdcar.capabilities.Endpoint

sofdcar.capabilities.Endpoint.Ethernet

The capability to provide an Ethernet endpoint.

sofdcar.capabilities.Endpoint.Ethernet:
    derived_from: sofdcar.capabilities.Endpoint

sofdcar.capabilities.Endpoint.OBD

The capability to provide an OBD endpoint.

sofdcar.capabilities.Endpoint.OBD:
    derived_from: sofdcar.capabilities.Endpoint.CAN

sofdcar.capabilities.Endpoint.SOME/IP

The capability to provide a SOME/IP endpoint.

sofdcar.capabilities.Endpoint.SOME/IP:
    derived_from: sofdcar.capabilities.Endpoint.Ethernet

Data Types

We specify the following normative data types. An overview is given in Figure E2.

Data Types

Figure E2: Data Types

sofdcar.data.GPIO.Pin

The GPIO pin used, e.g., when connecting using GPIO.

sofdcar.data.GPIO.Pin:
    derived_from: sofdcar.data.Root
    properties:
        pin:
            type: integer
        direction:
            type: string
            constraints:
                - valid_values:
                      - in
                      - out
                      - in/out

Node Types

We specify the following normative node types. An overview is given in Figure E3.

Node Types

Figure E3: Node Types

sofdcar.nodes.CAN

The CAN channel all other CAN channels are derived from.

sofdcar.nodes.CAN:
    derived_from: sofdcar.nodes.Channel
    properties:
        bitrate:
            type: integer
            required: false
    capabilities:
        endpoint:
            type: sofdcar.capabilities.Endpoint.CAN
            occurrences:
                - 0
                - UNBOUNDED

sofdcar.nodes.CAN-FD

The CAN-FD channel all other CAN-FD channels are derived from.

1
2
3
4
5
6
7
8
sofdcar.nodes.CAN-FD:
    derived_from: sofdcar.nodes.CAN
    capabilities:
        endpoint:
            type: sofdcar.capabilities.Endpoint.CAN-FD
            occurrences:
                - 0
                - UNBOUNDED

sofdcar.nodes.LIN

The LIN channel all other LIN channels are derived from.

1
2
3
4
5
6
7
8
sofdcar.nodes.LIN:
    derived_from: sofdcar.nodes.Channel
    capabilities:
        endpoint:
            type: sofdcar.capabilities.Endpoint.LIN
            occurrences:
                - 0
                - UNBOUNDED

sofdcar.nodes.MOST

The MOST channel all other MOST channels are derived from.

1
2
3
4
5
6
7
8
sofdcar.nodes.MOST:
    derived_from: sofdcar.nodes.Channel
    capabilities:
        endpoint:
            type: sofdcar.capabilities.Endpoint.MOST
            occurrences:
                - 0
                - UNBOUNDED

sofdcar.nodes.GPIO

The GIP channel all other GIP channels are derived from.

1
2
3
4
5
6
7
8
sofdcar.nodes.GPIO:
    derived_from: sofdcar.nodes.Channel
    capabilities:
        endpoint:
            type: sofdcar.capabilities.Endpoint.GPIO
            occurrences:
                - 2
                - 2

sofdcar.nodes.FlexRay

The FlexRay channel all other FlexRay channels are derived from.

1
2
3
4
5
6
7
8
sofdcar.nodes.FlexRay:
    derived_from: sofdcar.nodes.Channel
    capabilities:
        endpoint:
            type: sofdcar.capabilities.Endpoint.FlexRay
            occurrences:
                - 0
                - UNBOUNDED

sofdcar.nodes.Ethernet

The ethernet channel all other ethernet channels are derived from.

1
2
3
4
5
6
7
8
sofdcar.nodes.Ethernet:
    derived_from: sofdcar.nodes.Channel
    capabilities:
        endpoint:
            type: sofdcar.capabilities.Endpoint.Ethernet
            occurrences:
                - 2
                - 2

sofdcar.nodes.SOME/IP

The SOME/IP channel all other SOME/IP channels are derived from.

1
2
3
4
5
6
7
8
sofdcar.nodes.SOME/IP:
    derived_from: sofdcar.nodes.Ethernet
    capabilities:
        endpoint:
            type: sofdcar.capabilities.Endpoint.SOME/IP
            occurrences:
                - 2
                - 2

sofdcar.nodes.Python.Application

Non-normative python application running on an HPC. This application requires a python runtime.

1
2
3
4
5
6
sofdcar.nodes.Python.Application:
    derived_from: sofdcar.nodes.HPC.Software
    requirements:
        - host:
              capability: tosca.capabilities.Compute
              relationship: tosca.relationships.HostedOn

sofdcar.nodes.Python.Runtime

Non-normative python runtime running on an HPC. This runtime is able to host python applications and requires a host.

sofdcar.nodes.Python.Runtime:
    derived_from: sofdcar.nodes.HPC.Software
    capabilities:
        host:
            type: tosca.capabilities.Compute
            valid_source_types:
                - sofdcar.nodes.Python.Application
    requirements:
        - host:
              capability: tosca.capabilities.Compute
              relationship: tosca.relationships.HostedOn

sofdcar.nodes.RaspberryPi.Hardware

The hardware of a Raspberry Pi serving as an HPC hardware. This Raspberry Pi is able to host HPC software. Furthermore, the Raspberry Pi is able to directly host python applications without explicit python runtime since a python runtime is already installed on the Raspberry Pi.

1
2
3
4
5
6
7
8
sofdcar.nodes.RaspberryPi.Hardware:
    derived_from: sofdcar.nodes.HPC.Hardware
    capabilities:
        host:
            type: tosca.capabilities.Compute
            valid_source_types:
                - sofdcar.nodes.HPC.Software
                - sofdcar.nodes.Python.Application

sofdcar.nodes.Arduino.Software

The software running on an Arduino.

sofdcar.nodes.Arduino.Software:
    derived_from: sofdcar.nodes.ECU.Software

sofdcar.nodes.Arduino.Software.C++

C++ software running on an Arduino.

sofdcar.nodes.Arduino.Software.C++:
    derived_from: sofdcar.nodes.Arduino.Software

sofdcar.nodes.Arduino.Hardware

The hardware of an Arduino serving as ECU hardware. The Arduino is able to host Arduino software.

1
2
3
4
5
6
7
sofdcar.nodes.Arduino.Hardware:
    derived_from: sofdcar.nodes.ECU.Hardware
    capabilities:
        host:
            type: sofdcar.capabilities.Host.ECU.Software
            valid_source_types:
                - sofdcar.nodes.Arduino.Software

Policy Types

We specify the following normative policy types. An overview is given in Figure E4.

Policy Types

Figure E4: Policy Types

sofdcar.policies.ASIL

The policy that all other ASIL policies are derived from.

sofdcar.policies.ASIL:
    derived_from: sofdcar.policies.Safety

sofdcar.policies.ASIL.A

The policy that represents the ASIL level A.

sofdcar.policies.ASIL.A:
    derived_from: sofdcar.policies.ASIL

sofdcar.policies.ASIL.B

The policy that represents the ASIL level B.

sofdcar.policies.ASIL.B:
    derived_from: sofdcar.policies.ASIL

sofdcar.policies.ASIL.C

The policy that represents the ASIL level C.

sofdcar.policies.ASIL.C:
    derived_from: sofdcar.policies.ASIL

sofdcar.policies.ASIL.D

The policy that represents the ASIL level D.

sofdcar.policies.ASIL.D:
    derived_from: sofdcar.policies.ASIL

Relationship Types

We specify the following normative relationship types. An overview is given in Figure E5.

Relationship Types

Figure E5: Relationship Types

sofdcar.relationships.CAN

The relationship for CAN connections.

sofdcar.relationships.CAN:
    derived_from: sofdcar.relationships.Root
    properties:
        interface:
            type: string
            description: The interface name at the source at which the CAN bus is available.
            default: can0
        target_interface:
            type: string
            description: The interface name at the target at which the CAN bus is available.
            required: false
        bitrate:
            type: integer
            description: The bitrate of the CAN bus.
            required: false

sofdcar.relationships.CAN-FD

The relationship for CAN-FD connections.

sofdcar.relationships.CAN-FD:
    derived_from: sofdcar.relationships.CAN

sofdcar.relationships.LIN

The relationship for LIN connections.

sofdcar.relationships.LIN:
    derived_from: sofdcar.relationships.Root

sofdcar.relationships.MOST

The relationships for MOST connections.

sofdcar.relationships.MOST:
    derived_from: sofdcar.relationships.Root

sofdcar.relationships.GPIO

The relationship for GPIO connections.

1
2
3
4
5
6
7
sofdcar.relationships.GPIO:
    derived_from: sofdcar.relationships.Root
    properties:
        pins:
            type: list
            entry_schema:
                type: sofdcar.data.GPIO.Pin

sofdcar.relationships.FlexRay

The relationship for FlexRay connections.

sofdcar.relationships.FlexRay:
    derived_from: sofdcar.relationships.Root

sofdcar.relationships.Ethernet

The relationship for Ethernet connections.

sofdcar.relationships.Ethernet:
    derived_from: sofdcar.relationships.Root

sofdcar.relationships.OBD

The relationship for OBD connections.

sofdcar.relationships.OBD:
    derived_from: sofdcar.relationships.CAN

sofdcar.relationships.SOME/IP

The relationship for SOME/IP connections.

sofdcar.relationships.SOME/IP:
    derived_from: sofdcar.relationships.Ethernet

Appendix A "TOSCA SofDCar Profile"

This appendix contains the TOSCA SofDCar profile. The profile is also available as download.

tosca_definitions_version: tosca_simple_yaml_1_3
description: TOSCA Profile for Software-Defined Cars.
metadata:
    template_name: TOSCA SofDCar Profile
    template_author: Miles Stötzner
    template_contact: miles.stoetzner@iste.uni-stuttgart.de
    template_link: https://vintner.opentosca.org
    template_version: 1.0.0-draft
    template_id: tosca-sofdcar-profile
    template_license: https://www.apache.org/licenses/LICENSE-2.0
    acknowledgments: Partially funded by the [German Federal Ministry for Economic Affairs and Climate Action (BMWK)](https://www.bmwk.de) as part of the research project [SofDCar (19S21002)](https://sofdcar.de).

imports:
    - ./tosca-sofdcar-profile-core.yaml
    - ./tosca-sofdcar-profile-extended.yaml

Appendix B "TOSCA SofDCar Core Profile"

This appendix contains the TOSCA SofDCar Core profile. The profile is also available as download.

tosca_definitions_version: tosca_simple_yaml_1_3
description: TOSCA Profile for Software-Defined Cars (Core).
metadata:
    template_name: TOSCA SofDCar Profile (Core)
    template_author: Miles Stötzner
    template_contact: miles.stoetzner@iste.uni-stuttgart.de
    template_link: https://vintner.opentosca.org
    template_version: 1.0.0-draft
    template_id: tosca-sofdcar-profile-core
    template_license: https://www.apache.org/licenses/LICENSE-2.0
    abbreviations: |
        - ASIL: Automotive Safety Integrity Level
        - CAN: Controller Area Network
        - CAN-FD: Controller Area Network Flexible Data-Rate
        - ECU: Electronic Control Unit
        - GPIO: General-Purpose Input/ Output
        - HPC: High Performance Computer
        - LIDAR: Light Detection and Ranging
        - LIN: Local Interconnect Network
        - MOST: Media-Oriented Systems Transport
        - OBD: On-Board Diagnostics
        - RADAR: Radio Detection and Ranging
        - SOME/IP: Scalable Service-Oriented Middleware over IP
    acknowledgments: Partially funded by the [German Federal Ministry for Economic Affairs and Climate Action (BMWK)](https://www.bmwk.de) as part of the research project [SofDCar (19S21002)](https://sofdcar.de).

artifact_types:
    sofdcar.artifacts.Root:
        description: The artifact all other artifacts are derived from.
        derived_from: tosca.artifacts.Root

    sofdcar.artifacts.Deployment:
        description: The artifact all other deployment artifacts are derived from.
        derived_from: tosca.artifacts.Deployment

    sofdcar.artifacts.Implementation:
        description: The artifact all other implementation artifacts are derived from.
        derived_from: tosca.artifacts.Implementation

capability_types:
    sofdcar.capabilities.Root:
        description: The capability all other capabilities are derived from.
        derived_from: tosca.capabilities.Root

    sofdcar.capabilities.Host.ECU.Software:
        description: The capability to host an ECU software.
        derived_from: tosca.capabilities.Container

    sofdcar.capabilities.OperatingSystem.RealTime:
        description: The capability to provide a real-time operating system.
        derived_from: tosca.capabilities.OperatingSystem
        properties:
            time_guarantee:
                type: integer
                required: false
            guarantee_type:
                type: string
                constraints:
                    - valid_values:
                          - hard
                          - firm
                          - soft

    sofdcar.capabilities.Endpoint:
        description: The capability to provide an endpoint to which a client can connect to.
        derived_from: sofdcar.capabilities.Root

data_types:
    sofdcar.data.Root:
        description: The data all other data are derived from.
        derived_from: tosca.datatypes.Root

group_types:
    sofdcar.groups.Root:
        description: The group all other groups are derived from.
        derived_from: tosca.groups.Root

    sofdcar.groups.Location:
        description: The geographical location of nodes.
        derived_from: sofdcar.groups.Root

    sofdcar.groups.Domain:
        description: The domain in a domain-oriented architecture.
        derived_from: sofdcar.groups.Root

    sofdcar.groups.Zone:
        description: The zone in a zone-oriented architecture.
        derived_from: sofdcar.groups.Root

interface_types:
    sofdcar.interfaces.Root:
        description: The interface all other interfaces are derived from.
        derived_from: tosca.interfaces.Root

    sofdcar.interfaces.Nodes:
        description: The standard management interface of nodes.
        derived_from: tosca.interfaces.node.lifecycle.Standard
        operations:
            build:
                description: Builds deployment artifacts.

    sofdcar.interfaces.Relationship:
        description: The standard management interface for relationships.
        derived_from: tosca.interfaces.relationship.Configure

node_types:
    sofdcar.nodes.Root:
        description: The node all other nodes are derived from.
        derived_from: tosca.nodes.Root

    sofdcar.nodes.Vehicle:
        description: The node all other vehicles are derived from.
        derived_from: sofdcar.nodes.Root

    sofdcar.nodes.Cloud:
        description: The node all other clouds are derived from.
        derived_from: sofdcar.nodes.Root

    sofdcar.nodes.ECU.Hardware:
        description: The hardware of an ECU.
        derived_from: sofdcar.nodes.Root
        capabilities:
            host:
                type: sofdcar.capabilities.Host.ECU.Software
                valid_source_types: [sofdcar.nodes.ECU.Software]

    sofdcar.nodes.ECU.Software:
        description: The software running on an ECU.
        derived_from: sofdcar.nodes.Root
        requirements:
            - host:
                  capability: sofdcar.capabilities.Host.ECU.Software
                  relationship: tosca.relationships.HostedOn

    sofdcar.nodes.ECU.Runtime:
        description: The runtime for an ECU software.
        derived_from: sofdcar.nodes.ECU.Software
        capabilities:
            host:
                type: sofdcar.capabilities.Host.ECU.Software
                valid_source_types: [sofdcar.nodes.ECU.Software]
        requirements:
            - host:
                  capability: sofdcar.capabilities.Host.ECU.Software
                  relationship: tosca.relationships.HostedOn

    sofdcar.nodes.HPC.Software:
        description: The software running on an HPC.
        derived_from: tosca.nodes.SoftwareComponent

    sofdcar.nodes.HPC.Hardware:
        description: The hardware of an HPC.
        derived_from: sofdcar.nodes.Root
        capabilities:
            host:
                type: tosca.capabilities.Compute
                valid_source_types: [tosca.nodes.SoftwareComponent]

    sofdcar.nodes.Actuator:
        description: The node all other actuators are derived from.
        derived_from: sofdcar.nodes.Root

    sofdcar.nodes.Accelerator:
        description: The node all other accelerators are derived from.
        derived_from: sofdcar.nodes.Actuator

    sofdcar.nodes.Brake:
        description: The node all other brakes are derived from.
        derived_from: sofdcar.nodes.Actuator

    sofdcar.nodes.Steering:
        description: The node all other steerings are derived from.
        derived_from: sofdcar.nodes.Actuator

    sofdcar.nodes.Light:
        description: The node all other lights are derived from.
        derived_from: sofdcar.nodes.Actuator

    sofdcar.nodes.Cooling:
        description: The node all other coolings are derived from.
        derived_from: sofdcar.nodes.Actuator

    sofdcar.nodes.Airbag:
        description: The node all other airbags are derived from.
        derived_from: sofdcar.nodes.Actuator

    sofdcar.nodes.Sensor:
        description: The node all other sensors are derived from.
        derived_from: sofdcar.nodes.Root

    sofdcar.nodes.RADAR:
        description: The node all other RADAR are derived from.
        derived_from: sofdcar.nodes.Sensor

    sofdcar.nodes.Camera:
        description: The node all other cameras are derived from.
        derived_from: sofdcar.nodes.Sensor

    sofdcar.nodes.LIDAR:
        description: The node all other LIDAR are derived from.
        derived_from: sofdcar.nodes.Sensor

    sofdcar.nodes.Ultrasonic:
        description: The node all other ultrasonics are derived from.
        derived_from: sofdcar.nodes.Sensor

    sofdcar.nodes.Microphone:
        description: The node all other microphones are derived from.
        derived_from: sofdcar.nodes.Sensor

    sofdcar.nodes.Channel:
        description: The node all other communication channels are derived from.
        derived_from: sofdcar.nodes.Root
        capabilities:
            endpoint:
                type: sofdcar.capabilities.Endpoint
                occurrences: [0, UNBOUNDED]

    sofdcar.nodes.Battery:
        description: The node all other batteries are derived from.
        derived_from: sofdcar.nodes.Root

    sofdcar.nodes.Feature:
        description: The node all other features are derived from.
        derived_from: sofdcar.nodes.Root

policy_types:
    sofdcar.policies.Root:
        description: The policy all other policies are derived from.
        derived_from: tosca.policies.Root

    sofdcar.policies.Security:
        description: The policy all other security-related policies are derived from.
        derived_from: sofdcar.policies.Root

    sofdcar.policies.Safety:
        description: The policy all other safety-related policies are derived from.
        derived_from: sofdcar.policies.Root

relationship_types:
    sofdcar.relationships.Root:
        description: The relationship all other relationships are derived from.
        derived_from: tosca.relationships.Root

Appendix C "TOSCA SofDCar Extended Profile"

This appendix contains the TOSCA SofDCar Extended profile. The profile is also available as download.

tosca_definitions_version: tosca_simple_yaml_1_3
description: TOSCA Profile for Software-Defined Cars (Extended).
metadata:
    template_name: TOSCA SofDCar Profile (Extended)
    template_author: Miles Stötzner
    template_contact: miles.stoetzner@iste.uni-stuttgart.de
    template_link: https://vintner.opentosca.org
    template_version: 1.0.0-draft
    template_id: tosca-sofdcar-profile-extended
    template_license: https://www.apache.org/licenses/LICENSE-2.0
    abbreviations: |
        - ASIL: Automotive Safety Integrity Level
        - CAN: Controller Area Network
        - CAN-FD: Controller Area Network Flexible Data-Rate
        - ECU: Electronic Control Unit
        - GPIO: General-Purpose Input/ Output
        - HPC: High Performance Computer
        - LIDAR: Light Detection and Ranging
        - LIN: Local Interconnect Network
        - MOST: Media-Oriented Systems Transport
        - OBD: On-Board Diagnostics
        - RADAR: Radio Detection and Ranging
        - SOME/IP: Scalable Service-Oriented Middleware over IP
    acknowledgments: Partially funded by the [German Federal Ministry for Economic Affairs and Climate Action (BMWK)](https://www.bmwk.de) as part of the research project [SofDCar (19S21002)](https://sofdcar.de).

imports:
    - ./tosca-sofdcar-profile-core.yaml

capability_types:
    sofdcar.capabilities.Endpoint.CAN:
        description: The capability to provide a CAN endpoint.
        derived_from: sofdcar.capabilities.Endpoint

    sofdcar.capabilities.Endpoint.CAN-FD:
        description: The capability to provide a CAN-FD endpoint.
        derived_from: sofdcar.capabilities.Endpoint.CAN

    sofdcar.capabilities.Endpoint.LIN:
        description: The capability to provide a LIN endpoint.
        derived_from: sofdcar.capabilities.Endpoint

    sofdcar.capabilities.Endpoint.MOST:
        description: The capability to provide a MOST endpoint.
        derived_from: sofdcar.capabilities.Endpoint

    sofdcar.capabilities.Endpoint.GPIO:
        description: The capability to provide a GPIO endpoint.
        derived_from: sofdcar.capabilities.Endpoint

    sofdcar.capabilities.Endpoint.FlexRay:
        description: The capability to provide a FlexRay endpoint.
        derived_from: sofdcar.capabilities.Endpoint

    sofdcar.capabilities.Endpoint.Ethernet:
        description: The capability to provide an Ethernet endpoint.
        derived_from: sofdcar.capabilities.Endpoint

    sofdcar.capabilities.Endpoint.OBD:
        description: The capability to provide an OBD endpoint.
        derived_from: sofdcar.capabilities.Endpoint.CAN

    sofdcar.capabilities.Endpoint.SOME/IP:
        description: The capability to provide a SOME/IP endpoint.
        derived_from: sofdcar.capabilities.Endpoint.Ethernet

data_types:
    sofdcar.data.GPIO.Pin:
        description: The GPIO pin used, e.g., when connecting using GPIO.
        derived_from: sofdcar.data.Root
        properties:
            pin:
                type: integer
            direction:
                type: string
                constraints:
                    - valid_values:
                          - in
                          - out
                          - in/out

node_types:
    sofdcar.nodes.CAN:
        description: The CAN channel all other CAN channels are derived from.
        derived_from: sofdcar.nodes.Channel
        properties:
            bitrate:
                type: integer
                required: false
        capabilities:
            endpoint:
                type: sofdcar.capabilities.Endpoint.CAN
                occurrences: [0, UNBOUNDED]

    sofdcar.nodes.CAN-FD:
        description: The CAN-FD channel all other CAN-FD channels are derived from.
        derived_from: sofdcar.nodes.CAN
        capabilities:
            endpoint:
                type: sofdcar.capabilities.Endpoint.CAN-FD
                occurrences: [0, UNBOUNDED]

    sofdcar.nodes.LIN:
        description: The LIN channel all other LIN channels are derived from.
        derived_from: sofdcar.nodes.Channel
        capabilities:
            endpoint:
                type: sofdcar.capabilities.Endpoint.LIN
                occurrences: [0, UNBOUNDED]

    sofdcar.nodes.MOST:
        description: The MOST channel all other MOST channels are derived from.
        derived_from: sofdcar.nodes.Channel
        capabilities:
            endpoint:
                type: sofdcar.capabilities.Endpoint.MOST
                occurrences: [0, UNBOUNDED]

    sofdcar.nodes.GPIO:
        description: The GIP channel all other GIP channels are derived from.
        derived_from: sofdcar.nodes.Channel
        capabilities:
            endpoint:
                type: sofdcar.capabilities.Endpoint.GPIO
                occurrences: [2, 2]

    sofdcar.nodes.FlexRay:
        description: The FlexRay channel all other FlexRay channels are derived from.
        derived_from: sofdcar.nodes.Channel
        capabilities:
            endpoint:
                type: sofdcar.capabilities.Endpoint.FlexRay
                occurrences: [0, UNBOUNDED]

    sofdcar.nodes.Ethernet:
        description: The ethernet channel all other ethernet channels are derived from.
        derived_from: sofdcar.nodes.Channel
        capabilities:
            endpoint:
                type: sofdcar.capabilities.Endpoint.Ethernet
                occurrences: [2, 2]

    sofdcar.nodes.SOME/IP:
        description: The SOME/IP channel all other SOME/IP channels are derived from.
        derived_from: sofdcar.nodes.Ethernet
        capabilities:
            endpoint:
                type: sofdcar.capabilities.Endpoint.SOME/IP
                occurrences: [2, 2]

    sofdcar.nodes.Python.Application:
        description: >
            Non-normative python application running on an HPC.
            This application requires a python runtime.
        derived_from: sofdcar.nodes.HPC.Software
        requirements:
            - host:
                  capability: tosca.capabilities.Compute
                  relationship: tosca.relationships.HostedOn

    sofdcar.nodes.Python.Runtime:
        description: >
            Non-normative python runtime running on an HPC.
            This runtime is able to host python applications and requires a host.
        derived_from: sofdcar.nodes.HPC.Software
        capabilities:
            host:
                type: tosca.capabilities.Compute
                valid_source_types: [sofdcar.nodes.Python.Application]
        requirements:
            - host:
                  capability: tosca.capabilities.Compute
                  relationship: tosca.relationships.HostedOn

    sofdcar.nodes.RaspberryPi.Hardware:
        description: >
            The hardware of a Raspberry Pi serving as an HPC hardware.
            This Raspberry Pi is able to host HPC software.
            Furthermore, the Raspberry Pi is able to directly host python applications without explicit python runtime since a python runtime is already installed on the Raspberry Pi.
        derived_from: sofdcar.nodes.HPC.Hardware
        capabilities:
            host:
                type: tosca.capabilities.Compute
                valid_source_types: [sofdcar.nodes.HPC.Software, sofdcar.nodes.Python.Application]

    sofdcar.nodes.Arduino.Software:
        description: The software running on an Arduino.
        derived_from: sofdcar.nodes.ECU.Software

    sofdcar.nodes.Arduino.Software.C++:
        description: C++ software running on an Arduino.
        derived_from: sofdcar.nodes.Arduino.Software

    sofdcar.nodes.Arduino.Hardware:
        description: >
            The hardware of an Arduino serving as ECU hardware.
            The Arduino is able to host Arduino software.
        derived_from: sofdcar.nodes.ECU.Hardware
        capabilities:
            host:
                type: sofdcar.capabilities.Host.ECU.Software
                valid_source_types: [sofdcar.nodes.Arduino.Software]

policy_types:
    sofdcar.policies.ASIL:
        description: The policy that all other ASIL policies are derived from.
        derived_from: sofdcar.policies.Safety

    sofdcar.policies.ASIL.A:
        description: The policy that represents the ASIL level A.
        derived_from: sofdcar.policies.ASIL

    sofdcar.policies.ASIL.B:
        description: The policy that represents the ASIL level B.
        derived_from: sofdcar.policies.ASIL

    sofdcar.policies.ASIL.C:
        description: The policy that represents the ASIL level C.
        derived_from: sofdcar.policies.ASIL

    sofdcar.policies.ASIL.D:
        description: The policy that represents the ASIL level D.
        derived_from: sofdcar.policies.ASIL

relationship_types:
    sofdcar.relationships.CAN:
        description: The relationship for CAN connections.
        derived_from: sofdcar.relationships.Root
        properties:
            interface:
                type: string
                description: The interface name at the source at which the CAN bus is available.
                default: can0

            target_interface:
                type: string
                description: The interface name at the target at which the CAN bus is available.
                required: false

            bitrate:
                type: integer
                description: The bitrate of the CAN bus.
                required: false

    sofdcar.relationships.CAN-FD:
        description: The relationship for CAN-FD connections.
        derived_from: sofdcar.relationships.CAN

    sofdcar.relationships.LIN:
        description: The relationship for LIN connections.
        derived_from: sofdcar.relationships.Root

    sofdcar.relationships.MOST:
        description: The relationships for MOST connections.
        derived_from: sofdcar.relationships.Root

    sofdcar.relationships.GPIO:
        description: The relationship for GPIO connections.
        derived_from: sofdcar.relationships.Root
        properties:
            pins:
                type: list
                entry_schema:
                    type: sofdcar.data.GPIO.Pin

    sofdcar.relationships.FlexRay:
        description: The relationship for FlexRay connections.
        derived_from: sofdcar.relationships.Root

    sofdcar.relationships.Ethernet:
        description: The relationship for Ethernet connections.
        derived_from: sofdcar.relationships.Root

    sofdcar.relationships.OBD:
        description: The relationship for OBD connections.
        derived_from: sofdcar.relationships.CAN

    sofdcar.relationships.SOME/IP:
        description: The relationship for SOME/IP connections.
        derived_from: sofdcar.relationships.Ethernet

Acknowledgments

This specification is developed for the purpose of research by the Institute of Software Engineering (ISTE) and the Institute of Architecture of Application Systems (IAAS) of the University of Stuttgart, Germany. The development is partially funded by the German Federal Ministry for Economic Affairs and Climate Action (BMWK) as part of the Software-Defined Car (SofDCar) project (19S21002).

Correspondence

Please address all correspondence concerning this specification to Miles Stötzner <miles.stoetzner@iste.uni-stuttgart.de, https://miles.stoetzner.de>.

Disclaimer of Warranty

Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.


Last update: December 4, 2024