PLASMA Lab has been conceived as a Statistical Model Checking library. The objective is to provide user with a collection of SMC algorithm that they can use with their own tool chain.
The following figure presents a schematic view of PLASMA Lab's design. PLASMA Lab core is in red. This is were the SMC Algorithm library is. Tools use the Controler API, in green, to launch SMC experiment. Simulator and Checker are represented in blue. Thanks to our plugin system, users can integrate their own into PLASMA Lab.
PLASMA Lab tools (PLASMA Lab, PLASMA2Simulink, ...) are using the Controler API to use the SMC library as would an external tool.
PLASMA Lab can also be seen as implementing the Model-View-Controler (MVC) pattern. Here, View components use the Controler API to communicate with the Controler component. In turn, the Controler controls the Model components.
In the following section we details which PLASMA Lab project correspond to which type of components and what is their purpose.
The view is made of several independant project. The main one being the GUI project. Here is a list of view and their associated project.
This is the main view of PLASMA Lab. It incorporates all functionalities of PLASMA Lab and allows to open and edit PLASMA files (project files).
This view is a terminal interface for PLASMA Lab which only gives experiment and simulation functionalities.
This view is a graphical or terminal interface for PLASMA Lab distributed service. This is tha part deployed on a distant computer to help run a distributed experiment.
This is a small "App" running from Matlab to use PLASMA Lab SMC algorithms with a Simulink model. The eclipse project (fr.inria.plasmalab.matlab_UI) is a callback interface to the "GUIDE" project (plasma_lab_2_simulink).
The Model part contains three type of components. Algorithm, Simulator (Model) and Checker (Requirement/Property). They all are related by a simple workflow. An Algorithm ask a Checker to check a property. The Checker will in turn ask the Simulator to run a simulation and will use the trace returned to decide the property. The decision will be returned to the Algorithm.
Checker and Simulator components are plugins that can be loaded on startup. Algorithms were designed to be plugins too but this feature was discarded. The plugin system use the Java Simple Plugin Framework (JSPF).
The concept behind PLASMA Lab is to provide a SMC Library while end-users can use (and plug-in) there Simulator and Checker.
Here is a list of project for each of these categories.
Algorithm
Checker
Simulator
The Controler component (project fr.inria.plasmalab.controler) act as an interface between the Model and the View. The second purpose of the Controler is to initialize PLASMA Lab with configuration files and load plugins.
Note: The project GUI have their own Controler object to deal with file management, interface callback, etc.
Various projects define classes and interfaces used by several component. The main one is the Workflow (project fr.inria.plasmalab.workflow) which contains definition of several interfaces and class as well as a set of PLASMA Lab Exception.
Here is a list of common project
Interface and class definitions used by several components, in particular Data and Factory interfaces for Simulator and Checker components. Definitions of PLASMALabException classes.
Defines Data and Factory interfaces for Algorithm components.
Defines the Restlet architecture and components used in all distributed Algorithms as well as a Heartbeat mechanism to detect loss of connection from Workers.