Detailed Design#

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

Attention

The above directive must be updated according to your Component.

  • 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 _detailed_design

  • Adjust status to be valid

  • Adjust safety and tags according to your needs

Detailed Design for Component: <Component Name>#

Description#

Design Decisions - For the documentation of the decision the Decision Record Template (gd_temp__change_decision_record) can be used.
Design Constraints

Rationale Behind Decomposition into Units#

mandatory: a motivation for the decomposition into one or more units.

Note

Reason for split into multiple units could be- - Based on design principles like SOLID,DRY etc - Based on design pattern’s etc.

Static Diagrams for Unit Interactions#

.. dd_sta:: <Title>
   :id: dd_sta__<Component>__<Title>
   :security: <YES|NO>
   :safety: <QM|ASIL_B>
   :status: <valid|invalid>
   :implements: <link to component requirement id>
   :satisfies: <link to component architecture id>
   :belongs_to: <link to component id>
   :includes: <link to sw_unit id>, <link to sw_unit interface id>

   .. needarch:: or .. image:: <link to drawio image>

Dynamic Diagrams for Unit Interactions#

.. dd_dyn:: <Title>
   :id: dd_dyn__<Component>__<Title>
   :security: <YES|NO>
   :safety: <QM|ASIL_B>
   :status: <valid|invalid>
   :implements: <link to component requirement id>
   :satisfies: <link to component architecture id>
   :belongs_to: <link to component id>
   :includes: <link to sw_unit id>, <link to sw_unit interface id>

   .. needarch:: or .. image:: <link to drawio image>

Units within the Component#

In your rst file:

.. sw_unit:: cpp unit
   :id: sw_unit__<Component>__<title>
   :belongs_to: <link to component id>

   This implements the ....

In your source file, any programming language, here with C++:

# need-Id: sw_unit__<Component>__<title>
class <class name> {
   public:

};

Interface View#

In your rst file:

.. sw_unit_int:: <here InterfaceDemo - change it>
   :id: sw_unit_int__<Component>__<title>
   :belongs_to: <link to sw_unit id>
   :implements: <real_arc_int, real_arc_int_op>

   This implements the ....

In your source file, any programming language, here with C++:

# need-Id: sw_unit__<Component>__<title>
class InterfaceDemo
{
   public:
      virtual ~InterfaceDemo() {}
      virtual void OverrideMe() = 0;
};
  • For cpp using doxygen comments

/**
   * @rst
   * .. sw_unit_int:: cpp unit
   *    :id: sw_unit_int__<Component>__<title>
   *    :belongs_to: <link to sw_unit id>
   *    :implements: <real_arc_int, real_arc_int_op>
   *
   *    This implements the ....
   * @endrst
*/
  • For rust

//! .. sw_unit_int:: rust unit
//!     :id: sw_unit_int__<Component>__<title>
//!     :belongs_to: <link to sw_unit id>
//!     :implements: <real_arc_int, real_arc_int_op>
//!
//!     This implements the ....