« HPCS Project Website @ UMD | Main | Identifying Domain-specific Defect Classes Using Inspections and Change History »

UMDInst: Instrumentation Tool for Software Engineering Experiments

UMDInst is an instrumentation tool for software engineering experiments developed by the ESEG group. It was originally written by Lorin Hochstein, and I am the current lead developer. It's available at the UMDInst page.

Unlike many other instrumentation tools designed to collect data in a specific IDE (such as Eclipse, Visual Studio), UMDInst is designed to collect data in a remote login environment. A particular use of this tool is in the high performance computing domain. Users of supercomputers usually develop, debug and run the program on a remote shell, making use of various command-line tools and GUI-based tools. There is often a job scheduling queue which the users must interact with to get their program to run. Since the type of tools being used and the underlying system configurations are highly heterogeneous, existing instrumentation tools cannot be applied to collect data in this environment.

UMDInst takes a "wrapper approach." When installed, it generates a set of wrapper scripts which are called instead of the real tools (compilers/debuggers/profilers). A wrapper then calls the corresponding real tool, and acts as a transparent proxy to capture necessary information.

The main component of UMDInst is written in Python. Currently, Python 2.1 or later is supported. UMDInst also supports Hackystat as a supplementary data source. Java 1.5 or later is required to use Hackystat.