Reverse engineering of software threads: A design recovery technique for large multi-process systems
Abstract 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 novel, but 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 preliminary case study of the Joint STARS battle management software. The method seems to be effective in identifying the “as built” threads, and in providing unexpected insights even to Software Engineers who are relatively familiar with the system. Design thread recovery for Joint STARS 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.