Finding reusable software components in large systems

James M. Neighbors · 2002

The extraction of reusable software components from existing systems is an attractive idea. The goal of the paper is not to extract a component automatically, but to identify its tightly coupled region (subsystem) for extraction by hand or knowledge-based system. Much of the author's experience is anecdotal. His experience with scientific systems differs from much of the work in reverse engineering that focuses on COBOL systems. Module and data interconnection was collected from three large scientific systems over a 12 year period from 1980 to 1992. The interconnection data was analyzed in an attempt to identify subsystems that correspond to domain-specific components. The difficulties of dealing with large scientific systems and their organizations are discussed. The failures and successes of various subsystem analysis methods is discussed. A simple algorithm for the identification of subsystems is presented. A pattern of object hierarchies of subsystems is briefly mentioned. The average subsystem is surprisingly large at 17000 source lines and 35 modules. The concept of a subsystem is informally validated by developers from subsystem interconnection diagrams. The actual reusability of these identified components is not assessed.

Read the paper · More papers on PaperTik