Component Architecture#

[Your Component Name] Architecture
status: draft
security: NO
safety: ASIL_B
tags: template, component_name

Attention

The above directive must be updated according to your needs.

  • Modify Your Component Name to be your Component Name

  • Modify id to be your Component Name in upper snake case preceded by doc__ and followed by _architecture

  • Adjust status to be valid

  • Adjust safety and tags according to your needs

Overview#

<Brief summary>

Requirements Linked to Component Architecture#

.. needtable:: Overview of Component Requirements
   :style: table
   :columns: title;id
   :filter: search("comp_arch_sta__archdes$", "fulfils_back")
   :colwidths: 70,30

Description#

<General Description>

<Design Decisions - For the documentation of the decision the Decision Record Template can be used.>

<Design Constraints>

Rationale Behind Architecture Decomposition#

Mandatory: A motivation for the decomposition or reason for not further splitting it into internal components.

Note

Common decisions across components / cross cutting concepts is at the higher level.

Static Architecture#

The components are designed to cover the expectations from the feature architecture (i.e. if already exists a definition it should be taken over and enriched).

A component can optional also consist of subcomponents to further structure the architecture. The component and its static views can also optionally use interfaces provided by other components.

The live component architecture template is maintained in the module template documentation.

.. comp:: Component Name
   :id: comp__component_name_template
   :security: YES
   :safety: ASIL_B
   :status: invalid
   :implements: logic_arc_int__feature_name__interface_name1
   :consists_of: comp__component_name_internal_1, comp__component_name_internal_2, comp__component_name_internal_3
   :belongs_to: feat__feature_name

.. comp_arc_sta:: Component Name (Static View)
   :id: comp_arc_sta__component_name__static_view
   :security: YES
   :safety: ASIL_B
   :status: invalid
   :belongs_to: comp__component_name_template
   :uses: logic_arc_int__feature_name__interface_name1
   :fulfils: comp_req__component_name__some_title

   .. needarch::
      :scale: 50
      :align: center

      {{ draw_component(need(), needs) }}

Dynamic Architecture#

.. comp_arc_dyn:: Dynamic View
   :id: comp_arc_dyn__component_name__dynamic_view
   :security: YES
   :safety: ASIL_B
   :status: invalid
   :belongs_to: comp__component_name_template
   :fulfils: comp_req__component_name__some_title

   Put here a sequence diagram

Interfaces#

.. real_arc_int:: <Title>
   :id: real_arc_int__<component>__<Title>
   :security: <YES|NO>
   :safety: <QM|ASIL_B>
   :fulfils: <link to component requirement id>
   :language: cpp

Internal Components#

.. comp_arc_sta:: Component Name Static View
   :id: comp_arc_sta__component_name__2
   :status: invalid
   :safety: ASIL_B
   :security: YES
   :fulfils: comp_req__component_name__some_title
   :belongs_to: comp__component_name_template

   No architecture but detailed design

.. comp:: Internal Component 1
   :id: comp__component_name_internal_1
   :status: invalid
   :safety: ASIL_B
   :security: YES
   :belongs_to: feat__feature_name

.. comp:: Internal Component 2
   :id: comp__component_name_internal_2
   :status: invalid
   :safety: ASIL_B
   :security: YES
   :belongs_to: feat__feature_name

.. comp:: Internal Component 3
   :id: comp__component_name_internal_3
   :status: invalid
   :safety: ASIL_B
   :security: YES
   :belongs_to: feat__feature_name

Note

Architecture can be split into multiple files. At component level the public interfaces to be used by the user and tester to be shown.

Attention

The above directives must be updated according to your component architecture.

  • Replace the example content by the real content (according to Architectural Design Guideline)

  • Set the status to valid and start the review/merge process