Hessel Observer Framework

C++ Libraries that Makes Model-Based Testing and Monitoring Easy

New features and semantics 2012-07-04

What is the Hessel Observer Framework?

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.

This site is under construction, please see the FAQ and the Publications.

About Me

Condensed CV

I am a Ph.D. in Computer Science from Uppsala University (2007). Prior to Ph.D. studies, I have been a Developer and a Technical Project Manager at ISD Datasystem AB (1994-2000), and a Consultant at Ericsson (2000-2001). My Master thesis "Timing analysis of an SDL subset in Uppaal" got an honorable mentioning by the SNART board. At Uppsala University I worked with Model-Based Testing and developed the UPPAAL CoVer tool with UPPAAL as a starting point. I have taught project methodology during my years at Uppsala University, and I am now a Certified SCRUM master. I joined ENEA 2007 as a tool developer for ENEA Optima, an Eclipse based tool for system debugging. I also worked as a Process Developer in combination with research in the model-based testing area. Now I am on leave from a Software Architect position at Xware AB. During 2011 I worked part time in Hi5's Mobility project at Mälardalen University. I currently work as a postdoc researcher at CRIM in the Distributed Systems Analysis team.

Since 2010 I am a member of the technical committee of QA and Test

See my profile at LinkedIn or Skype me anders.hessel.


Frequently Asked Questions

For what purposes can the Hessel Observer Framework be used?

The Hessel Observer Library can be used for any pattern matching also including parameters and many simultaneous matches at the same time. Various application areas can use the framework, including many formal checks. Some natural examples are coverage in Model-Based Testing but also all types of pattern control following paths in source code. The observer automata gives you a far more powerful tool than regular expressions when, e.g., analyzing logs. Finding patterns in sequences of events is another application area for the observer libs.

Where is the COAml described?

So far the COAml language is only described in the paper "Monitoring and Testing with Case Observer Automata: an Industry Report by Anders Hessel.

What is a the latest news?

The language (called COAml above) has been developed and many new features has been added or are planned to be added. Currently an example tool is developed for demonstration purposes. Plesase contact cover@hessel.nu if you want to use the demonstrator or be kept informed of the plans.

Moving to Canada


I will move to Montreal ASAP. I will work as a Model-Based Testing researcher (post-doc) at CRIM with Alexandre Petrenko. I am very exited about this opportunity.

New Language Demonstrated fully integrated with the xTrade Alarm Server


I made a presentation for the Xware developers at 2012-07-02, showing what the Alarm Server would be able to do if the HOF observer libraries where used. Features as input event tracing, domain integration, automated trap registration, timers, usage of user-defined functions (API) were demonstrated.

My plans now include a demonstrative site where registered users can test how the language works.

Paper Accepted


My paper Monitoring and Testing with Case Observer Automata: an Industry Report has been accepted for inclusion in the TAIC PART 2011 proceedings

Paper on Case Observer Automata Submitted


The paper I prepared for the Case Observer Automata modeling language COAml is now submitted.

Case Observer Automata


After having examining the needs for the xTrade Alarm Server the libraries has changed in the direction to support simultaneous observations and a mechanism to select the right case to delegate an event to.

The language has also changed so that inside the cases different parallel tracking elements can work together. This transform the observer language to a workflow language that can follow workflows with parallel activities and, e.g., make sure that all parallel activities have ended before the next sequential activity starts. Some parts of the language include similarities to Petri-nets and YAWL.

The updated language also includes timeouts that can be set and removed. To use timeouts the observers environment (called the monitoring application) must support the timeout service as the observer do not know if it is included in a simulation or if it is a part of a running application.

I am currently preparing a paper on the subject. Please contact me for more info.

Observer Library Update


It is worthwhile to communicate that the framework (as it is now called) is ready in its basic shape. What is not ready is that the interfaces must be cleaner. The basic observer framework is there generically implementing the traps of the user and the language.

The extension implementing the test case generation algorithm may need some polish but basically it is there too. Currently I work completely on extensions concerning the xTrade Alarm Server. In the context I can mention timing, tracing (paths in the automata), and persisting storage support.

Project with MDH Started


Since first of July I cooperate officially with Mälardalen University in the Observer project. This is a project where I study how the Observer Library will fit into the xTrade Alarm Server. It is 20% of my time an sponsored by Hi5 and Xware. In swedish this is called a “gränsgångarprojekt”, which is a kind of industry postdoc.

Some new aspects/challenges that will be considered in the Observers are timing, persistence, and reuse of enumerations.