IscasMC has three main components: the frontend web interface, the backend for handling requests from the frontend, and the model checker engine. A database engine is used to store information. We describe these components in detail.
The Frontend Web Interface: The frontend allows for logging into the system, either as a guest or as a registered user. Guest users can experiment with most of the features of the tool, but they have limited resources, for instance small timeout values.
After logging into the system, it offers several views, including:
- Message Centre. The message centre provides the user recent news. Particularly, one can post messages, send models to other users as well as receive models shared by other users.
- Model Centre. The model management centre lists available models, their type (currently only PRISM models are supported), comments, options, last updated snap- shot and all available operations for the model. From the menu above one can also upload or create new models. The properties are associated to models. For each model, one can create and analyse these properties. Currently, IscasMC supports Markov chains and MDPs and properties in PCTL*. Once one clicks on one of the models in the list, one enters the editing page. In the editing page, models can be edited, and properties can be added, modified, or removed. A model may have more than one associated properties.
- Task Centre. In the model centre, the user can choose to check selected properties or all properties. This is referred to as a task. Note that a task is created as a snapshot of the current model, (selected) properties and options. This allows the user to modify the model/properties and submit several tasks without having to wait for the termi- nation of the previous submitted tasks. The task, together with the corresponding options, will be sent to the server side to be handled. In the task centre, one can find a list of all submitted tasks from the user. For each task, one can track the current status, find the final results once available, see the complete log generated by the model checker, or remove the task.
- Option Centre. From the option centre the user can set the user level options. Moreover, for each model to be analysed, one may modify certain options and get model level options. The model level options have higher priority and will overwrite user level options.
- Example Centre. From the example centre, the user can directly import several examples together with associated properties into her own account.
The Interface. While the frontend does not play a role in the evaluation of the model, it includes a fast syntax check that allows for checking the syntactical correctness of the model while interacting with the editor.
The part available to the frontend is a stand-alone program (on the server side) that makes use of only a small part of the classes in the model checker engine. This lightweight version is only used for checking the syntactical correctness of models from the client side, while the full version on the model checker site also constructs the respective models and automata. These syntactical correctness checks are simple and can thus be done efficiently on-demand, bypassing the scheduling queue.
The Database, powered by MySQLTM, contains all information needed to elaborate the models: besides the user details, it stores the models and the relative properties defined by the user, as well as the tasks the user creates by requiring an operation on the model. Each task is created by the frontend DBMS module as snapshot of the model and the corresponding properties and options, such that it is not affected by subsequent changes. Once a task is completed, it is updated by the backend DBMS module with the evaluation of the properties (or with an error message), according to the model checker outcome. The tasks are kept until the user explicitly removes them via the task centre.
The Backend. The main job of the backend is to poll tasks from the database and evaluate them. It currently adopts a FIFO approach to retrieve the tasks from the DBMS module. These tasks are then sent to several instances of ISCASMC that run in parallel in independent worker threads w1 , . . . , wn . Once a worker wi completes her task, she sends the outcome to the data store, whose main jobs are to keep track of busy workers and to collect the results. Since the evaluation of a task may take some time, the worker periodically sends status updates to the data store. The result collector retrieves the available results from the data store and forwards them to the database via the backend DBMS module.
The Model Checker Engine. The model checker is the working horse of the system. Each work thread will parse and translate the model and the specification it is going to be checked against. For complex LTL subformulas (that is, for each linear part φ of PCTL* outside of the simple PCTL operators), we first use SPOT to generate the generalised Bu ̈chi automaton. Unless this is already deterministic, we then use the layered approach from BIB_NOT_FOUND, which uses first subset constructions (with an over- and underapproximation of the acceptance condition), and subsequently refines them (where necessary) first to a breakpoint con- struction (again with an over- and underapproximation of the acceptance condition) and then to the deterministic Rabin automata. The product of the automaton and model is an MDP equipped with accepting conditions. These accepting conditions are used to identify accepting states in the product, after which the problem reduces to a proba- bilistic reachability problem for MDPs. The reachability problem is a central problem in probabilistic model checking, and is well studied. One can apply value iteration or policy iteration to solve it. Currently, IscasMC uses a value iteration approach based on Gauss-Seidel or Jacobi method. After the evaluation, it returns the results to the backend.