Hessel Observer Framework

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

Featuring the Case Observer Automata modeling language (COAml)

What is the Hessel Observer Framework?

The Hessel Observer Framework (HOF) consists of several C++ software libraries. All code is pure C++ and there is no protability issues.

The HOF Observer library implements the Case Observer Automata modeling language. The Observer Automata observes and reports behavior of a monitored system that it gets in the for of traps. The traps are defined by the application, thus the observer language has maximal flexibility. The Case in COAml is a technique to separate different instances. In an instance it is possible to set timers etc. As the COAml support workflows (and parallel workflows) the instances includes several states that are linked together.

The library is selfcontained such that it only reference interfaces that is define itself. The Utilities are, e.g., implementations of storage and timers. There is an example implementation that is possible to use as default. Otherwise the upplication using the Hessel Observer Framework is free to implement The observer specification is given to the HOF Observer library in an intermediate format specified by the Hessel Observer Framework.

The HOF Parser implements a textual language for the COAml. It adapts to the configuration of traps that the application has made in the Hessel Observer Framework. The parser produce 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 an 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 the successor function is needed and that the model generated the 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 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 (2.0). Second a new project has started where the Hessel Observer Framework will be used in the xTrade Alarm Server, by Xware. Both are work in progress.

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.

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 work as a Software Architect at Xware AB, developing the xTrade Alarm Server. I am also part time in Hi5's Mobility project at Mälardalen University. Since 2010 I am a member of the technical committe of QA and Test

Publications

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

Paper Accepted

2011-02-02

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

2011-01-15

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

Case Observer Automata

2011-01-01

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

2010-09-06

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

2010-09-06

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.