Commit 6cfce3ab authored by Thanassis Tsiodras's avatar Thanassis Tsiodras

Update descriptions

parent cb91936e
......@@ -3,50 +3,92 @@
TASTE Data Modelling Tools
==========================
These are all the tools used by the [TASTE toolchain](https://taste.tuxfamily.org/)
to automate handling of the Data Modelling challenges. They include more than two
dozen codegenerators that create the 'glue' ; that is, the code allowing code
generated by modelling tools (Simulink, SCADE, OpenGeode, etc) to "speak" to
one another via ASN.1 marshalling. For the encoders and decoders of the messages
themselves, we use [ASN1SCC](https://github.com/ttsiodras/asn1scc) - an ASN.1
compiler geared for safety-critical environments.
These are the tools used by the European Space Agency's [TASTE toolchain](https://taste.tuxfamily.org/)
to automate handling of the Data Modelling. They include more than two
dozen codegenerators that automatically create the 'glue'; the run-time translation
bridges that allow code generated by modelling tools (Simulink, SCADE, OpenGeode, etc)
to "speak" to one another, via ASN.1 marshalling.
For the encoders and decoders of the messages
themselves, TASTE uses [ASN1SCC](https://github.com/ttsiodras/asn1scc) - an ASN.1
compiler specifically engineered for safety-critical environments.
For more details, visit the [TASTE site](https://taste.tuxfamily.org/).
Installation
------------
For using the tools, this should suffice:
$ sudo apt-get install libxslt-dev libxml2-dev python3-pip
$ pip3 install --user -r requirements.txt
$ make flake8 # optional, check for pep8 compliance
$ make pylint # optional, static analysis with pylint
$ make mypy # optional, type analysis with mypy
$ pip3 install --user --upgrade .
For developing the tools, the packaged Makefile allow for easy static-analysis
via the dominant Python static analyzers and syntax checkers:
$ make flake8 # check for pep8 compliance
$ make pylint # static analysis with pylint
$ make mypy # type analysis with mypy
Contents
--------
What is packaged:
- **commonPy** (*library*)
Contains the basic API for parsing ASN.1 (via invocation of
[ASN1SCC](https://github.com/ttsiodras/asn1scc) and simplification
of the generated XML AST representation to the Python classes
inside `asnAST.py`.
inside `asnAST.py`. The class diagram with the AST classes:
+----------------+
| AsnBasicNode |
+------->|----------------|<-------------------------+
| | | |
+-----------+ +----------------+ +--------------------+
| AsnBool | ^ ^ | AsnString |
|-----------| | | |--------------------|
| | | +--------------------+ | _range: [min, max] |
+-----------+ | | AsnReal | +--------------------+
+--------------------+ |--------------------|
| AsnInt | | _range: [min, max] |
|--------------------| +--------------------+
| _range: [min, max] |
+--------------------+ +----------------+
| AsnComplexNode |
+---------------->|----------------|<----------+
| | | |
| +----------------+ |
+-----------------------------+ ^ |
| AsnEnumerated | | +------------------------+
|-----------------------------| | | AsnSequenceOf/AsnSetOf |
| _members list:(name, value) | | |------------------------|
+-----------------------------+ | | _containedType |
+-----------------------------+ | value: string, |
| AsnSequence/AsnSet | | AsnBasicNode, |
|-----------------------------| | AsnEnumerated |
| _members list:(name, value) | +------------------------+
| value: AsnBasicNode, |
| AsnEnumerated, |
| AsnMetaMember |
+-----------------------------+
- **asn2aadlPlus** (*utility*)
Converts the type declarations inside ASN.1 grammars to AADL
declarations (used by the Ellidiss tools to design the final systems)
declarations, that are used by [Ocarina](https://github.com/OpenAADL/ocarina)
to generate the executable containers.
- **asn2dataModel** (*utility*)
Reads the ASN.1 specification of the exchanged messages, and generates
the semantically equivalent Modeling tool/Modeling language declarations
(e.g. SCADE/Lustre, Matlab/Simulink statements, etc).
(e.g. SCADE/Lustre, Matlab/Simulink, etc).
The actual mapping logic exists in plugins, called *A mappers*
(`simulink_A_mapper.py` handles Simulink/RTW, `scade6_A_mapper.py`
handles SCADE5, `ada_A_mapper.py` generates Ada types,
handles SCADE6, `ada_A_mapper.py` generates Ada types,
`sqlalchemy_A_mapper.py`, generates SQL definitions via SQLAlchemy, etc)
- **aadl2glueC** (*utility*)
......@@ -54,8 +96,8 @@ Contents
Reads the AADL specification of the system, and then generates the runtime
bridge-code that will map the message data structures from those generated
by [ASN1SCC](https://github.com/ttsiodras/asn1scc) to/from those generated
by the modeling tool used to functionally model the subsystem (e.g. SCADE,
ObjectGeode, Matlab/Simulink, C, Ada, etc).
by the modeling tool (that is used to functionally model the subsystem -
e.g. SCADE, ObjectGeode, Matlab/Simulink, C, Ada, etc).
Contact
-------
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment