The purpose of this studio is to provide an integrated workspace for the users interested in hybrid system verification tools. Once deployed, it provides an editor combined with the HyST translator as the central functionality that can provide different input model formats to the chosen verification method. The bundle also includes configuration for several tools that are readily available with the basic deployment. It also provides an easy and seamless way to extend the toolset with just a few necessary steps.
The whole deployment - for easy upgradeability and security - is built on docker containers. The base elements are bound together with docker-compose. As these containers are separated from the host machine, no other pre-installation is necessary - however, for easy upgrades a git installation would serve the user. For a seamless access to available tool images, one should also get a dockerhub account.
Once everything set up, the following single command will start up the studio (the command should be
executed from the main directory of the repository which contains the docker-compose.yml
file):
docker-compose -f docker-compose.local.yml up -d
By default, the server will function at port 80 of the host computer.
For a fully functional and secure (release) deployment there are a few additional steps that should be done:
- instead of starting it right away, you only build the docker images with
docker-compose build
command - make sure the proper certbot is installed
- generate certificates for your deployment
(nginx and ubuntu should be selected as that will be the
container's environment where nginx will run) with the
certbot certonly -d yourDomainName
command - make sure that no application listens to port 80 and 443 on the host machine (usually nginx which service should be stopped)
- copy the
privkey.pem
andfullchain.pem
files from the host machine (normally in/etc/letsencrypt/live/${HOSTNAME}
directory) to the ssl volume of hysteditor (docker volume inspect hysteditor_ssl
will give you the mounting point on the host machine) - once everything is done, a simple
docker-compose up -d
should start the server.
This version of the deployment accepts connections on ports 80 and 443, and forwards everything through 443 for security purposes.
To allow execution of a given verification tool, some preliminary install steps might be required
as those tools will run in their dedicated containers. Further information on this can be found
in the config
and core-dockerfiles
directories.
The initial entry-point of the studio is a standard WebGME editor where the user
can create projects using the HySTBase
project seed. This seed contains an implementation of the
SpaceEx meta-model and integrates many plugin for easy manipulation of
hybrid system models.
When the user is in the correct context - in a model, the first item on the toolbar A
is a
drop-down button listing all the configured verification tools. Once the user clicks on one of them,
the system initiates a verification of the model with the tool. It starts with a translation step
executed with the HyST plugin to get the model into the correct input format. After it, the dedicated
docker container is started and the tool is executed. The result is then packaged and provided in the
form of a link to the user - pop-up notification in the top middle portion of the screen.
The last item in the drop-down list is - last-result -
helps to bring back the latest execution
result as the notification disappears after a certain amount of time.
A short description about the plugins that implements useful features to help the user.
- ImportSpaceEx: Imports a model from a spaceex file. The plugin is only accessible in the
Models
container context. - ImportSpaceExConfig: Imports a configuration associated with the given model from a cfg file. Can be
run in the context of a
model
. - HyST: Translates the given model to the resuired output format. Though this plugin is part of the
automated verification, the user can use it in a standalone mode to generate the necessary format out
of the model. The plugin can be initiated in any
model
context. - ExportSapceEx: Exports the given model into a spaceex file. Can be run at a
model
. - ExportSpaceExConfig: Prints out the given configuration into a cfg file. It can be initiated in any
configuration
element.