The Hessel Observer Framework (HOF) consists of several C++ software libraries. All code is pure C++ and thus easy to port.
The HOF Observer library implements a unique Observer Automata modeling language. The Observer Automata observes and reports behavior of a monitored system from which it gets "traps". These traps are defined by the application, thus the observer language has maximal flexibility. The language is a blend of Petri-Nets and UML. As Petri-Nets the observer language works with tokens called items that can been seen as processes that carries its own data. The language supports parallel workflows, i.e., several items that are linked together such that they can be joined.
The library is self-contained such that it only reference interfaces that is define by it self. The Utilities are, e.g., implementations of storage and timers. There is an example implementation that is possible to use as default. Otherwise the application using the Hessel Observer Framework is free to implement its own utilities. The observer specification is given to the HOF Observer library in an intermediate format specified by the Hessel Observer Framework.
The HOF Parser is able to parse a textual representation of the language. It adapts to the traps and domains the application using HOF has configured. The parser produces an intermediate representation that can be used to create an observer. The parser is optional as the application that uses the observer framework may include other ways to specify an observer, e.g. by using a drawing tool.
The HOF Test Case Generation library implements a test case generation algorithm based on a user specified coverage criterion (i.e., an observer) and an external model implementing the needed interfaces. For test of the library a model implementation has been made. This model should be replaced by an implementaion that use the model type from which test cases should be generated, e.g., UML, SyncML, SDL, or timed automata (as in UPPAAL). Basically a state "successor" function is needed and that the model generate traps for the observer. The HOF Test Case Generation library is dependent on the HOF Observer and the HOF Coverage libraries.
The HOF Coverage library is used by the HOF Test Case Generation library to store the state of the coverage, i.e., observer state and "ticked off" coverage. The library is able to compare different coverage efficiently. There are also a set of example implementations and test case libraries.
Use Today
There are currently two projects that using the Hessel Observer Framework. First there is a redesign of the test case generation tool UPPAAL CoVer (a.k.a. 2.0). This is work in progress, which has currently low priority.
Second a new project has started where the Hessel Observer Framework will be used in the xTrade Alarm Server, by Xware AB. For the Alarm Server a fully integrated prototype has been demonstrated (July 2012). The prototype includes features as: timers, developer defined function calls automatically added to the language, and domain definitions.
Usage of HOF in UPPAAL CoVer
In this project all libraries are used except the example implementations. The model type is timed automata and UPPAAL's verification engine is used. No utilities library is needed as the model checker saves the states and coverage itself. There is no persistence or real timer that is needed.
Usage in xTrade Alarm Server
In this case only the case observer library is used. The utilities interface are implemented in the xTrade Alarm Server itself. In this way both persistent storage and timers can be used. No parser is needed as the xTrade Administration tool will be able to specify the observers.