The Lightweight Open BMW Software Traceability Evidence Report allows you to demonstrate software traceability and requirements coverage, which is essential for meeting standards such as ISO 26262.
This repository contains the prototype for LOBSTER, which is a key ingredient to make TRLC and other supported tools more useful.
It has tools to extract tracing tags from a variety of sources to combine them and produce a tracing report. The TRLC tracing report from the TRLC Project is a reasonable example of what is possible when lobster is used in combination with TRLC or any of the other supported tools.
All tools can be installed separately from PyPI, but there is a
convenient meta-package bmw-lobster
which installs everything.
$ pip3 install bmw-lobster
For the HTML Report graphviz
is also used to generate the tracing policy diagram. More on that on the user manual.
$ sudo apt-get install -y graphviz
The lobster-cpp
converter tool needs a specific version of clang-tidy
. Please see here to create it.
The following requirements frameworks are supported:
- TRLC (only some use cases supported right now)
- Codebeamer (only some use cases supported right now)
The following programming languages are supported:
- C/C++
- Python3
- SIMULINK and MATLAB using the 3rd-party tool MISS_HIT; supports both code and tests
The following verification and miscellaneous frameworks are supported:
- GoogleTest
- JSON useful if your test framework is encoded in JSON
- Writing configuration files for LOBSTER.
- It is easy to expand the languages and activities supported by LOBSTER by adding new tracing tools, as long as they create data in the common interchange format for LOBSTER.
(More to come...)
The individual PyPI packages that bmw-lobster
depends on are:
bmw-lobster-core
the core API and various report generators. All other tools depend on this Linkbmw-lobster-tool-codebeamer
(for requirements in Codebeamer) Linkbmw-lobster-tool-cpp
(for C/C++ code) Linkbmw-lobster-tool-cpptest
(for C/C++ code) Linkbmw-lobster-tool-gtest
(for GoogleTest tests) Linkbmw-lobster-tool-json
(for activities in JSON) Linkbmw-lobster-tool-python
(for Python3 code) Linkbmw-lobster-tool-trlc
(for TRLC code) Linkmiss_hit
(for MATLAB/Octave code or Simulink models) Link
Here are the links to the individual html requirements coverage reports:
- Requirement Coverage Report TRLC
- Requirement Coverage Report Python
- Requirement Coverage Report Json
- Requirement Coverage Report Gtest
- Requirement Coverage Report Cpptest
- Requirement Coverage Report Cpp
- Requirement Coverage Report Core CI Report
- Requirement Coverage Report Core HTML Report
- Requirement Coverage Report Core Online Report
- Requirement Coverage Report Core Report
- Requirement Coverage Report Codebeamer
- A simple example can be found in the repository: lobster-demo
The lobster tool uses several steps to accomplish a fully modular software traceability and requirements coverage report. You can consider lobster as a set of 1) conversion tools, 2) a common interchange format, 3) the report creation tool and 4) a renderer for the tracing report.
For a more detailed description please read our user guide.
These steps are in the following diagram and go from left to right side:
graph LR
subgraph "Converter-Tools"
direction TB
A1[Lobster-python]
A2[Lobster-trlc]
A3[Lobster-json]
A4[Lobster-cpp]
A5[Lobster-codebeamer]
A6[Lobster-gtest]
end
subgraph "Common inter. format"
direction TB
B1[Python.lobster]
B2[Trlc.lobster]
B3[Json.lobster]
B4[Cpp.lobster]
B5[Codebeamer.lobster]
B6[Gtest.lobster]
end
subgraph "Generate lobster report"
direction TB
D1[Lobster-online-report]
D1 ---> D2
D2[Lobster-report -> report.lobster]
D3[Tracing policy -> lobster.conf]
D3 ---> D2
end
subgraph "Renderer"
direction TB
C1[html]
C2[CI]
C3["..."]
end
%% Main connections
A1 ---> B1
A2 ---> B2
A3 ---> B3
A4 ---> B4
A5 ---> B5
A6 ---> B6
%% Connect all schema elements to Lobster-report -> report.lobster
B1 ----> D2
B2 ----> D2
B3 ----> D2
B4 ----> D2
B5 ----> D2
B6 ----> D2
%% Connect Lobster-report -> report.lobster to renderers
D2 ---> C1
D2 ---> C2
D2 ---> C3
The following inputs are planned but not implemeted yet:
lobster-java
: Java codelobster-kotlin
: Kotlin code
The copyright holder of LOBSTER is the Bayerische Motoren Werke Aktiengesellschaft (BMW AG), and LOBSTER is published under the GNU Affero General Public License, Version 3.