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).