Detailed Design#
[Your Component Name] Detailed Design
|
status: draft
security: NO
safety: ASIL_B
|
||||
Attention
The above directive must be updated according to your Component.
Modify
Your Component Nameto be your Component NameModify
idto be your Component Name in upper snake case preceded bydoc__and followed by_detailed_designAdjust
statusto bevalidAdjust
safetyandtagsaccording 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 ....