Logo Object Flattener

Object Flattener

Logo LTA


In many cases, existing systems must be dynamically analyzed. For instance, executions can be monitored for testing, debugging, run-time verification, performance and security reasons. Nowadays, systems are often developed by composing and integrating existing components and applications, but the component-based and the object-oriented technologies severely limit and complicate the analyzability of systems due to incapsulation and information hiding.


To enable the automatic analyzability of already existing component-based and object-oriented systems, we developed the Object Flattening technique that automatically extracts state information stored inside objects from references. The technique is based on the recursive invocation of inspectors, i.e., methods returning state data without altering the actual state. Inspectors are identified by a heuristic based on the signature of methods.

The Tool

Object Flattener is the Java implementation of the Object Flattening technique that has been developed in the Laboratory of Test and Analysis of the University of Milano Bicocca. The tool automatically extracts the interfaces of detected objects where the heuristic must by applied by reflection. The already existing heuristic is based on the commonly used Java notation. However, heuristics can be easily modified to accomodate any other notation.

The usage of the tool should be combined with other techniques for monitoring object-oriented or component-based software, for instance wrapping of components.


The tool is available under the LGPL licence at the following links:


Mauro Pezzè

Leonardo Mariani (reference contact)