Formal methods used to validate software designs, like Alloy, OCL, and B, are powerful tools to analyze complex structures (e.g., software architectures, object-relational mappings) captured as sets of relational constraints. However, their applicability is limited when software is subject to uncertainty (derived, e.g., from lack of control over third-party components, interaction with physical elements). In contrast, quantitative verification has emerged as a powerful way of providing quantitative guarantees about the performance, cost, and reliability of systems operating under uncertainty. However, quantitative verification methods do not retain the flexibility of relational modeling in describing structures, forcing engineers to trade structural exploration for analytic capabilities that concern probabilistic and other quantitative guarantees.
HaiQ is a tool that enhances structural modeling/synthesis with quantitative guarantees in the style provided by quantitative verification.
It includes:
You can read more about these languages and see some examples in this paper.
haiq-analyzer folder as a project into your Eclipse development environment.haiq.jar into the dist-bin/lib directory.haiq in the dist-bin directory, setting the value of the HAIQ_DIR variable to point to your dist-bin directory.dist-bin directory to your path environment variable.Alternatively, you can download and install a pre-built binary version, which can be downloaded from here.
haiq in the dist-bin directory, setting the value of the HAIQ_DIR variable to point to your dist-bin directory.dist-bin directory to your path environment variable.Every example contains a script to run analysis of different properties. To do that, go into the right example directory, and type
./run.sh
Alternatively, you can run the analysis directly from the command line. For instance, you can run the following command for the analysis of the simple client-server example
haiq -model[clientserver.haiq] -properties[0]
The command above run from the client-server example folder will analyze the first M-PCTL property defined in the haiq model file (assuming that the haiq binary folder is in your path environment variable).