FMEA
====

The FMEA is done on the "first zoom level" of the architecture,

- the :ref:`main workflow of the command line <workflow_main>` usage and
- the :ref:`main workflow of the scripting <workflow_scripting_main>` usage.

The relevant elements are annotated by oval labels, see also the :ref:`diagram legend <legend>`.

Fault Model
-----------

The following analysis is based on this generic *fault model* for activity diagrams:

.. list-table::
   :header-rows: 1
   :widths: 20 15 65
   :width: 100%

   * - Element Type
     - Error ID
     - Generic Error Description
   * - Data storage
     - DS1
     - Stored data changed before read operation
   * -
     - DS2
     - New data not stored / keeps old data / stuck at specific value
   * - Data flow
     - DF1
     - Transferred data changed
   * -
     - DF2
     - Transferred data lost
   * -
     - DF3
     - Data stored at / read from wrong location in data store
   * -
     - DF4
     - Data transferred to wrong data store
   * - Processing
     - PR1
     - Calculates wrong results
   * -
     - PR2
     - Processing is skipped
   * -
     - PR3
     - Processing too slow/fast
   * - Control flow
     - CF1
     - Control flow stops
   * -
     - CF2
     - Control flow proceeds to wrong process

If more than one error is identified for the same element with the same error ID, a counter is
added, e.g. `PR1.1`, `PR1.2`, etc.

In the following sections, references to files are shown which end with ``_spec.rb``. These files
are test files which can be found in the ``spec`` folder of the *Dim* tool, e.g.
``<Dim root>/spec/options_spec.rb``.

Generalized Errors
------------------

The following errors are analyzed generically and not on architectural element level.

.. csv-table::
   :file: fmea/general.csv
   :header-rows: 1
   :widths: 12 30 32
   :width: 100%
   :delim: ,

.. _fmea_command_line_workflow:

Command Line Workflow
---------------------

This analysis is done on the :numref:`workflow_main_fig` with the :ref:`use_cases` in mind.

.. csv-table::
   :file: fmea/dynamic.csv
   :header-rows: 1
   :widths: 5 5 25 35 25
   :width: 100%
   :delim: ,

.. _fmea_scripting_workflow:

Scripting Workflow
------------------

This analysis is done on the :numref:`scripting_main_fig` with the :ref:`use_cases` in mind.

The basic idea (loading, processing, writing) is the same as in the
:ref:`fmea_command_line_workflow`. Therefore references to the analysis of that workflow are added
here to avoid unnecessary duplication.

.. csv-table::
   :file: fmea/scripting.csv
   :header-rows: 1
   :widths: 5 5 25 35 25
   :width: 100%
   :delim: ,