A reverse-engineering approach to subsystem structure identification

@article{Mller1993ARA,
  title={A reverse-engineering approach to subsystem structure identification},
  author={Hausi A. M{\"u}ller and Mehmet A. Orgun and Scott R. Tilley and James S. Uhl},
  journal={J. Softw. Maintenance Res. Pract.},
  year={1993},
  volume={5},
  pages={181-204}
}
Reverse-engineering is the process of extracting system abstractions and design information out of existing software systems. This process involves the identification of software artefacts in a particular subject system, the exploration of how these artefacts interact with one another, and their aggregation to form more abstract system representations that facilitate program understanding. This paper describes our approach to creating higher-level abstract representations of a subject… 

Figures from this paper

Using Interconnection Style Rules to Infer Software Architecture Relations
TLDR
This paper describes an automatic process to recover architectural-level abstractions from the source code using a set of integrated tools that employ search techniques to locate good solutions to both the clustering and the relationship in- ferencing problem quickly.
Understanding Software Systems Using Reverse Engineering Technology
TLDR
R reverse engineering technology developed as part of the Rigi project is presented, concerned with the analysis of existing software systems to make them more understandable for maintenance, re-engineering, and evolution purposes.
On the Automatic Recovery of Style-Specific Architectural Relations in Software Systems
TLDR
A tool, called ARIS (Architecture Relation Inference System), is developed that enables software engineers to define rules and relations for regulating subsystem interactions and is used to reverse engineer high-level structural information from a real application.
An Approach for Recovering Distributed System Architectures
TLDR
An exploratory reverse engineering approach to aid programmers in recovering architectural runtime information from a distributed system's existing software artifacts, called X-ray, which comprises three domain-based static analysis techniques, namely component module classification, syntactic pattern matching, and structural reachability analysis.
Architecture recovery and abstraction from the perspective of processes
TLDR
An approach of extracting process structure graph (PSG) from a target system is presented based on the features of the relations among processes on UNIX platform and results show that the extracted PSG is correct, effective and can reflect the high-level structure of the target system in detail at the process level.
Reverse Engineering Software-Models of Component-Based Systems
TLDR
This work presents an iterative reverse engineering approach that follows the widely used definition of components by Szyperski, and enables third-party reuse of Components by explicitly stating their interfaces and supports composition of components.
Using reverse engineering techniques to infer a system use case model
TLDR
The assessment of the approach suggests that the strategy can assist the software engineer to understand a software system providing a useful fine‐grained use case model.
Search based reverse engineering
TLDR
This paper describes a two step process for reverse engineering the software architecture of a system directly from its source code, and implements a suite of integrated tools to support the reverse engineering process.
A Hybrid Model for Object-Oriented Software Maintenance
TLDR
A new model, which is called the Hybrid Model, to represent object-oriented systems at a coarse-grained level of abstraction, and identifies a collection of change patterns in terms of changes in aggregate components and their interrelationships that help to interpret how an evolving system changes at the architectural level.
On the automatic modularization of software systems using the Bunch tool
TLDR
A case study is presented to demonstrate how Bunch can be used to create views of the structure of significant software systems and research is outlined to evaluate the software clustering results produced by Bunch.
...
...

References

SHOWING 1-10 OF 37 REFERENCES
A reverse engineering environment based on spatial and visual software interconnection models
TLDR
This paper describes a reverse engineering environment which uses the spatial and visual information inherent in graphical representations of software systems to form the basis of a software interconnection model.
Rigi: a system for programming-in-the-large
  • H. Müller, K. Klashinsky
  • Computer Science
    Proceedings. [1989] 11th International Conference on Software Engineering
  • 1988
TLDR
Randi was designed to address three of the most difficult problems in the area of programming-in-the-large: the mastery of the structural complexity of large software systems, the effective presentation of development information, and the definition of procedures for checking and maintaining the completeness, consistency, and traceability of system descriptions.
Module interconnection languages
Extracting and restructuring the design of large systems
TLDR
The approach used is to map the resource exchange among modules and then derive a hierarchical design description using a system-restructuring algorithm, using a module interconnection language, NuMIL.
Management decision support through reverse engineering technology
TLDR
How a software system can benefit from reverse engineering is outlined, and how management personnel can use the information provided by this process as an aid in making informed decisions related to large software projects is described.
Creating specifications from code: Reverse-engineering techniques
TLDR
Techniques which produce abstractions in object-oriented and functional notations are described, thus aiding the comprehension of the essential structure and operations of the application, and providing formal design information which may make the code much more maintainable and certainly more respectable.
Error localization during software maintenance: generating hierarchical system descriptions from the source code alone
  • R. Selby, V. Basili
  • Computer Science
    Proceedings. Conference on Software Maintenance, 1988.
  • 1988
An empirical study is presented that investigates hierarchical software system descriptions that are based on measures of cohesion and coupling. The study evaluates the effectiveness of the
Software interconnection models
TLDR
The semantic interconnection model is introduced, which incorporates the advantages of the unit and syntactic interconnection models and provides extremely useful extensions to them and provides tools that are knowledgeable about the process of system construction and evolution and that work in symbiosis with the system builders to construct and evolve large software systems.
Reverse engineering and design recovery: a taxonomy
TLDR
The authors define and relate six terms: forward engineering, reverse engineering, redocumentation, design recovery, restructuring, and reengineering to apply to the underlying engineering processes, regardless of the degree of automation applied.
Documenting software systems with views
TLDR
This paper outlines a reverse engineering methodology for building subsystem structures out of software building blocks, and describes how documenting a software system with views created by this process can produce numerous benefits.
...
...