2002 · 34 citations · 14 references
ComputingComputer ScienceFormal MethodsSoftware EngineeringSystems ArchitectureReverse EngineeringSoftware ArchitectureSoftware ConstructionSoftware DesignSoftware ModelingCode DecompilationOpen-source Software DevelopmentSoftware Reverse EngineeringSubsystem Interactions
In this paper we describe a two step process for reverse engineering the software architecture of a system directly from its source code. The first step involves clustering the modules from the source code into abstract structures called subsystems. The second step involves reverse engineering the subsystem-level relations using a formal (and visual) architectural constraint language. We use search techniques to accomplish both of these steps, and have implemented a suite of integrated tools to support the reverse engineering process. Through a case study, we demonstrate how our tools can be used to extract the software architecture of an open-source software package from its source code without having any a priori knowledge about its design.
14
Programming-in-the large versus programming-in-the-small
Frank DeRemer, Hans H. Kron · ACM SIGPLAN Notices · 1975 · 582 citations
Using automatic clustering to produce high-level system organizations of source code
Spiros Mancoridis, Brian S. Mitchell, Chris Rorres et al. · 2002 · 484 citations