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.
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:
Leonardo Mariani (reference contact)