Finding reusable software components in large systems
- 24 December 2002
- proceedings article
- Published by Institute of Electrical and Electronics Engineers (IEEE)
Abstract
The extraction of reusable software components from existing systems is an attractive idea. The goal of the work in this 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 our experience is anecdotal. Our 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 17,000 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.Keywords
This publication has 12 references indexed in Scilit:
- An assessment of reuse technology after ten yearsPublished by Institute of Electrical and Electronics Engineers (IEEE) ,2002
- Using an enabling technology to reengineer legacy systemsCommunications of the ACM, 1994
- Automated support for legacy code understandingCommunications of the ACM, 1994
- A memory-based approach to recognizing programming plansCommunications of the ACM, 1994
- Automatic programming: myths and prospectsComputer, 1988
- Delocalized Plans and Program ComprehensionIEEE Software, 1986
- A Method for Analyzing Loop ProgramsIEEE Transactions on Software Engineering, 1979
- Characteristics of application software maintenanceCommunications of the ACM, 1978
- On the criteria to be used in decomposing systems into modulesCommunications of the ACM, 1972
- Program development by stepwise refinementCommunications of the ACM, 1971