Reverse Engineering of Software Threads: A Design Recovery Technique for Large Multi-Process Systems

Norman Wilde, Christopher Casey
University of West Florida

Joe Vandeville, Gary Trio, Dick Hotz
Northrop Grumman Surveillance & Battle Management Systems

Executive Summary

Many software systems currently being deployed in both military and industrial domains serve their users through a large number of concurrent processes. Such systems are expensive and time consuming to build and thus cannot be lightly discarded when circumstances change. Instead, the systems must be able to evolve to meet new challenges.

But a software system cannot evolve without an understanding of its design, and such understanding is easily lost when the developers disperse. A particularly difficult problem may be to understand how the many processes cooperate to produce each functionality that the user needs.

This paper presents a relatively simple method for using traces of inter-process messages to recover functional software design threads from a large, multi-process system. The method is illustrated with a case study of the JSTARS battle management system. The method seems to be effective in providing useful insights even to Software Engineers who are relatively familiar with the system.

Design thread recovery for JSTARS is feasible because instrumentation to capture inter-process messages was designed into the original system. Our results suggest that the designers of new systems should give thought to including such instrumentation since the cost is small and the future economic benefits in easier evolution could be very large.

This report may be cited as SERC-TR-82-F, Software Engineering Research Center, Computer Science Department, Purdue University, West Lafayette, IN 47907, February, 1997

Download an RTF file of this report. (RTF format is readable by Microsoft Word and many other word processors.


(This page last modified December 4/97. Please send any comments or suggestions to Norman Wilde.)