Technical topic: OpenGEODE, an SDL editor for TASTE
Contents |
Introduction
SDL (Specification and Description Language) is a powerful modelling language for visually yet formally describing state machines. In contrast to UML state machines, SDL has a formal textual syntax in addition to the graphical notation, as well as well-defined semantics. This makes it a very good candidate for describing the behaviour of embedded, real-time systems.
The standard has been established by ITU-T under reference Z100. Among others, it is widely used in the telecommunication industry. See www.sdl-forum.org for more information.
We strongly encourage the use of SDL as it is complete language allowing to model the behaviour of a system in a non-ambiguous, complete way. SDL enables many verifications due to its well defined concepts and ease of use. These verifications are usually provided in commercial SDL tools.
TASTE now includes an open-source SDL graphical editor that generates Ada code. It is free software, implemented with the Qt bindings for Python: Pyside. It is called OpenGEODE, in reference to the ObjectGEODE tool from a former company called Verilog, and is very much inspired from it for its ergonomy and approach to the SDL language. However OpenGEODE is a limited tool in comparison, mostly focused on the graphical editor and simple code generator.
Important notice:
We are developing OpenGEODE as a technology demonstrator. Please consider it as such, and use it for your lab experiments, discovery of SDL, and for general hacking purpose. SDL and ASN.1 are powerful and fun languages. They are also excellent languages that can be studied to concretely get what state machines and data types are about.
Feel free to browse the source code, that was also meant to show how Python and Qt allow, with little effort, to create amazing applications.
For professional applications, we recommend the use of the Pragmadev RTDS tool in combination with TASTE. It is a complete, large scale tool that comes with commercial support. Among other features, RTDS has a formal verifier module based on the IF technology from Verimag, that checks behavioural properties using an exhaustive simulation technique.
OpenGEODE Features
- Graphical editor of SDL processes and procedures. The communication diagram is captured with the TASTE interface view editor.
- Reads and save .pr files (textual SDL notation), with CIF support for the graphical information
- Supports ASN.1 data types, including the Value notation
- Supports a subset of symbols that are sufficient to develop real-time applications
- Generates Ada code with ASN.1 types using TASTE ASN.1 "space-certified" (SPARK) compiler
- Supports semantic checks
- Automatic conversion to Statechart diagrams
- Save the complete or parts of the model to PNG files
- Supports hyperlinks
- Zoom in, zoom-out
- Context-depenent text auto-completion
- Syntax highlighting
- Undo/Redo, Copy-Paste
Standalone installation
You can install and execute OpenGEODE on any Linux, FreeBSD, Mac, or Windows machine, using the standard Python packaging system (pip)
$ pip install opengeode
If you are not familiar with pip, you can find more information on the PyPI webpage: http://pypi.python.org/pypi/opengeode/
How to use it in TASTE
In the interface view, select the SDL language for the implementation of the blocks you want to model using OpenGEODE. Then generate your function skeletons:
$ taste-generate-skeletons
This command has the effect of creating an empty SDL model that already contains signal and procedure declarations.
The model is made of two files: "system_structure.pr" (fixed name, read-only) and "functionName.pr" (your function name, as specified in the TASTE interface view). The reason for separating the model in two files is that it allows changes of interfaces in the TASTE model without affecting the state machine you are editing. If you need to re-generate the function skeleton, you will not loose your work or the graphical formatting of your diagram.
Run opengeode and open BOTH FILES (otherwise you will not have access to the data types and signals). You can open it from the command line:
$ opengeode system_structure.pr functionName.pr
You can regularly check using F7 (or the top-level menu). When you are done editing your model, go to the top-level menu and select Generate Ada code. Then quit the application, and build your system normally.
$ ./build-script.sh
Example and screenshots
A complete TASTE system including an OpenGEODE subsystem is provided in the following directory of the TASTE VM:
tool-src/misc/opengeode/examples/taste-demo
This example shows most of the features currently supported by the tool
- Overview of the editor
The editor is meant to be simple and straightforward to use.
Based on the example you can find in the VM here are the main capabilities of the tool:
- Local declarations and comments
- Adavanced support for ASN.1 constructs to work with data
- State with various constructs, loops, printf, hyperlinks
- Another state, with additional constructs (in/out parameters, modulo)
Credits
Designed and implemented by Maxime Perrotin (European Space Agency)
The ASN.1 Compiler was developed by George Mamais (Neuropublic) with F# and ANTLR
The background pattern was downloaded from www.subtlepatterns.com
The tool is developed using Python, PySide (Qt bindings for Python), and ANTLR (parser)
Special thanks and greetings to Thanassis Tsiodras
Licence
Licence for OpenGEODE is LGPL
